<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Industrial DevOps</title>
	<atom:link href="https://www.industrial-devops.org/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.industrial-devops.org/</link>
	<description>No Code Automatisierung</description>
	<lastBuildDate>Fri, 05 Jan 2024 11:45:26 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://www.industrial-devops.org/wp-content/uploads/2020/09/cropped-favicon-150x150.png</url>
	<title>Industrial DevOps</title>
	<link>https://www.industrial-devops.org/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ein Messe-Demonstrator für eine Low-Code IoT Plattform</title>
		<link>https://www.industrial-devops.org/messe-demonstrator-fuer-eine-low-code-iot-plattform/</link>
		
		<dc:creator><![CDATA[Laukar Tofik]]></dc:creator>
		<pubDate>Fri, 10 Sep 2021 12:02:41 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.industrial-devops.org/?p=3470</guid>

					<description><![CDATA[<p>Für ein Softwareprodukt zur Automatisierung und Integration von Maschinen und Systemen eignet sich ein<br />
Demonstrator, der die Funktionalitäten präsentiert. Ein solcher Demonstrator stellt eine besondere Herausforderung<br />
dar. Ich stelle deshalb hier die Ergebnisse meiner Bachelorarbeit zum Thema Aufbau und Entwicklung eines<br />
Messe-Demonstrators für eine Low-Code IoT Plattform für Systemintegration.</p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/messe-demonstrator-fuer-eine-low-code-iot-plattform/">Ein Messe-Demonstrator für eine Low-Code IoT Plattform</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3470" class="elementor elementor-3470" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-911fda0 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="911fda0" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-66bff8d" data-id="66bff8d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d445d9 elementor-widget elementor-widget-text-editor" data-id="3d445d9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Für ein Softwareprodukt zur Automatisierung und Integration von Maschinen und Systemen eignet sich ein 
Demonstrator, der die Funktionalitäten präsentiert. Ein solcher Demonstrator stellt eine besondere Herausforderung 
dar. Ich stelle deshalb hier die Ergebnisse meiner Bachelorarbeit zum Thema Aufbau und Entwicklung eines 
Messe-Demonstrators für eine Low-Code IoT Plattform für Systemintegration.								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-7b8fc7d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7b8fc7d" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8db40e8" data-id="8db40e8" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-54277d8 elementor-widget elementor-widget-text-editor" data-id="54277d8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3 data-sourcepos="8:1-8:19">Der erste Kontakt</h3><p data-sourcepos="10:1-15:66">Kurz vor dem Abschluss meines Wirtschaftsinformatik-Studiums lernte ich die wobe-systems GmbH als Unternehmen bei einem Gastvortrag an meiner Universität kennen. Mein Interesse war geweckt und ich bewarb mich initiativ bei der wobe-systems GmbH, in der Hoffnung vielleicht ein Bewerbungsgespräch zu ergattern. Das bekam ich auch. Der Geschäftsführer <em>Maik Wojcieszak</em> stellte mir <em>Irene</em>, ein Mitglied des Titan Teams, vor. <em>Irene</em> hat mir dann von der titan Plattform erzählt. Ich erkannte das Potenzial der titan Plattform und war von der Idee begeistert. Gesagt getan, habe ich die Stelle angenommen und so begann dann mein erster Tag.</p><h3 data-sourcepos="17:1-17:52">Ein Messedemonstrator für eine No-Code-Plattform</h3><p data-sourcepos="19:1-21:111">Die titan No-Code Plattform war einsatzbereit. Nun sollte das Marketing beginnen. Bestandteil des Marketings ist es, das Produkt geeignet zu demonstrieren und Interesse bei potenziellen Kunden zu wecken. Eine Kaufendscheidung für eine Software treffen interessierte Kunde nur dann, wenn das Softwareprodukt einen erkennbaren Nutzen aufweist.</p><p data-sourcepos="23:1-28:47">Ein persönliches Beispiel: Momentan benutze ich beim Sport gerne einen Fitnesstracker mit einigen Statistiken. Damals bin ich nicht regelmäßig zum Sport gegangen. Deswegen habe ich nicht wirklich den Sinn darin gesehen, mir dieses Gerät anzuschaffen. Der Preis war mir für eine kleine Spielerei zu hoch. Die Kosten überstiegen aus meiner Sicht den potenziellen Nutzen. Als ich nun anfing, regelmäßig zum Sport zu gehen, wurden die Informationen für mich interessanter. Der Nutzen der Informationen stieg. Anschließend habe ich mir einen Fitnesstracker zugelegt, weil der Nutzen für mich nun den Kauf legitimierte.</p><p data-sourcepos="30:1-34:17">Nun zur Leitfrage meiner Arbeit. Wie schaffe ich es, potenzielle Kund*innen für die titan Plattform zu interessieren? Diese Frage sollte meine Bachelorarbeit <a href="http://eprints.uni-kiel.de/51041/">Aufbau und Entwicklung eines Messe-Demonstrators für eine Low-Code IoT Plattform für Systemintegration</a> klären. Meine Aufgabe war es, einen Demonstrator für die titan Plattform für Messen und Kundenpräsentationen zu entwickeln. Kund*innen sollten so die Möglichkeiten und das Potenzial der titan Plattform erleben können.</p><p data-sourcepos="36:1-42:68">Ich bin in meiner Arbeit wie folgt vorgegangen. Der erste Schritt war eine Wettbewerbsanalyse. Ich verglich die titan Plattform mit anderen Plattformen oder Frameworks auf dem Markt. Danach definierte ich die Zielgruppe der titan Plattform anhand von Daten, die mir die wobe-systems GmbH zur Verfügung stellte. Die Wettbewerbsanalyse hilft dabei die Eigenschaften des Produkts zu finden, die sich als besonders Einzigartig vermarkten lassen (USP). Die Zielgruppenanalyse hilft die potenziell interessanten Merkmale der titan Plattform zielgruppengerecht darzustellen. Meine Erfahrung und Beobachtung der titan Plattform als Anwender flossen darüber hinaus auch in die Betrachtungen ein und halfen die wichtigen Produktmerkmale der Plattform auszuwählen.</p><h3 data-sourcepos="44:1-44:46">Die besonderen Merkmale der titan Plattform</h3><p data-sourcepos="46:1-46:116">Ich definierte zehn Produktmerkmale der titan Plattform, die interessant sein könnten für potenzielle Kund*innen.</p><p data-sourcepos="48:1-48:47">Die <strong>zehn Produktmerkmale</strong> lauten wie folgt:</p><ul data-sourcepos="50:1-60:0"><li data-sourcepos="50:1-50:25">Low-Code (bzw. No-Code)</li><li data-sourcepos="51:1-51:19">Prozesssteuerung</li><li data-sourcepos="52:1-52:22">Wiederverwendbarkeit</li><li data-sourcepos="53:1-53:23">Offene Schnittstellen</li><li data-sourcepos="54:1-54:19">Datenverarbeitung</li><li data-sourcepos="55:1-55:33">Portmatching (bzw. Portmapping)</li><li data-sourcepos="56:1-56:13">Monitoring</li><li data-sourcepos="57:1-57:12">Skalierung</li><li data-sourcepos="58:1-58:22">Kollaborationsmodell</li><li data-sourcepos="59:1-60:0">Geschäftsmodell<br /><br /></li></ul><h3 data-sourcepos="61:1-61:26">Low Code (bzw. NoCode)</h3><p data-sourcepos="63:1-65:104">Die titan Plattform ermöglicht Low-Code-Programmierung (LCP). Mittels LCP sollen Bricks einfacher miteinander zu Flows verknüpft werden. So können Facharbeiter Prozesse aufbauen oder verändern, ohne fundierte Programmierkenntnisse zu besitzen. Die LCP sticht heraus, da nicht alle Wettbewerber LCP angeboten habe.</p><h3 data-sourcepos="69:1-69:20">Prozesssteuerung</h3><p data-sourcepos="71:1-72:119">Ein Flow kann mit wenig Aufwand durch die LCP gesteuert und geändert werden. Neue Anforderungen können mit wenig Aufwand in den Flow aufgenommen werden. Es gibt keine Grenzen beim Ausbau eines Geschäftsprozesses.</p><h3 data-sourcepos="74:1-74:24">Wiederverwendbarkeit</h3><p data-sourcepos="76:1-78:96">Die Integration von IoT-Geräten und Software ist ein wichtiger Aspekt für Softwareplattformen dieser Art. Wiederverwendbarkeit bedeutet, dass Komponenten oder Prozesse für ähnlich geartete Anwendungen nicht neu entwickelt werden müssen, sondern durch Konfiguration angepasst und somit wieder verwendet werden können.</p><h3 data-sourcepos="80:1-80:25">Offene Schnittstellen</h3><p data-sourcepos="82:1-86:40">Offene Schnittstellen zeigen ihren Vorteil, wenn viele verschiedene Objekte integriert werden. Objekte können dabei andere Softwaresysteme oder IoT-Geräte sein. Die titan Plattform besitzt offene und erweiterbare Schnittstellen. Es kann jedes Protokoll zur Kommunikation verwendet werden, was in Python möglich ist. Für die Zielgruppe ist die Verwendung einer Softwareplattform auch eine Entscheidung für die Zukunft, weshalb Freiheit und Flexibilität wichtig sind.</p><h3 data-sourcepos="88:1-88:21">Datenverarbeitung</h3><p data-sourcepos="90:1-91:81">Verschiedene Daten können in die titan Plattform eingepflegt werden. Sie werden verarbeitet, korreliert und aufbereitet, um neue Informationen zu gewinnen. Dann können sie weitergereicht und verwendet werden.</p><h3 data-sourcepos="93:1-93:35">Portmatching (bzw. Portmapping)</h3><p data-sourcepos="95:1-97:81">Das Portmatching ist ein einzigartiges Produktmerkmal innerhalb der Wettbewerber. Es verhindert die Verknüpfung von inkompatiblen Bricks. Zudem hilft es dem/der Entwickler*in dabei, immer anzunehmen, dass die Daten in einem Flow Paket konsistent sind. Dies verkürzt die Entwicklungszeit von neuen Bricks.</p><p data-sourcepos="99:3-101:128">Portmatching war damals nur eine Kontrollfunktion bei neuen Verbindungen. Es wurde darauf geachtet, nur korrekte Verbindungen zuzulassen. Dieses Merkmal wurde mit der Zeit weiter ausgebaut und hat an Bedeutung gewonnen. Eine Verbindung ist nun konkretisierter. Weitere Informationen findest du <a href="https://www.youtube.com/watch?v=GQNCZwG4VGI">hier</a>.</p><h3 data-sourcepos="103:1-103:14">Monitoring</h3><p data-sourcepos="105:1-106:94">Das Monitoring wird oft für Plattformen dieser Art angeboten. Auch die titan Plattform besitzt ein Monitoring-System. Es können die Geschäftsprozesse innerhalb der Unternehmung analysiert und überwacht werden.</p><h3 data-sourcepos="110:1-110:14">Skalierung</h3><p data-sourcepos="112:1-115:59">Die titan Plattform bietet als einziger innerhalb der Wettbewerber Merkmale für eine Skalierung der Plattform. Ein Geschäftsprozess kann durch neuen Anforderung oder Verwendung von verschiedenen Komponenten komplexer werden. Das kann zu einer stärkeren Auslastung der Plattform führen. Die titan Plattform ist imstande durch seine Skalierungsmerkmale anspruchsvollere Prozesse auszuführen.</p><h3 data-sourcepos="117:1-117:24">Kollaborationsmodell</h3><p data-sourcepos="119:1-121:61">Das Kollaborationsmodell, wie das Rollenmodell oder Industrial DevOps, sind nicht Prinzipien, die lediglich für die titan Plattform exklusiv sind. Die titan Plattform wurde in anbetracht dieser Modelle entwickelt und angepasst. Es ermöglicht eine einfache Integration der Prinzipien in die Unternehmung.</p><h3 data-sourcepos="123:1-123:20">Geschäftsmodell</h3><p data-sourcepos="125:1-130:60">Das Open Source Entwicklungsmodell (OSE) ist bekannt in der Softwarebranche. Vendor-LockIn ist die Anbindung des Kunden an den Anbieter. Die Trennung vom Anbieter wird erschwert, um eine Bindung zu halten. Durch OSE sind Unternehmen frei bei der Nutzung der titan Plattform. Die wobe-systems GmbH bietet für die titan Plattform einen Software as a Service Ansatz an. Unternehmen, ohne die Möglichkeit einen Server zu warten, können die titan Plattform verwendet, indem Sie über das Internet auf ihre Instanz von der titan Plattform zugreifen.</p><p data-sourcepos="132:1-134:60">Diese definierten Produktmerkmale halfen mir bei der Entwicklung des Demonstrators. So konnte ich mich darauf fokussieren, was über dem Demonstrator präsentiert werden soll. Die nächste Aufgabe bestand also darin, den Demonstrator zu entwickeln, der die definierten Produktmerkmale gut und deutlich darstellt.</p><h3 data-sourcepos="136:1-136:15">Demonstrator</h3><p data-sourcepos="138:1-142:42">Im nächsten Schritt folgte der Aufbau des Demonstrators. Mir war es wichtig, dass der Demonstrator eine Interaktion mit Messerbesucher*innen ermöglicht. Messebesucher*innen sollten ein persönliches und positives Erlebnis mit Demonstrator haben. Dadurch steigt die Wahrscheinlichkeit, dass sie sich an die titan Plattform positiv erinnern. Der Demonstrator sollte eine Lösung in einem vertrauten Szenario der Zielgruppe abbilden, um den Nutzen durch die titan Plattform nachvollziehbar zu machen.</p><p data-sourcepos="144:1-146:33">Zurück zum Fitnesstracker. Ich habe die Vorteile eines Fitnesstracker erst verstanden und nachvollziehen können, als ich regelmäßig zum Sport gegangen bin. Die Informationen des Trackers boten mir nützliche Informationen, deren Wert ich jedoch nicht direkt erkannte.</p><p data-sourcepos="148:1-151:77">Die Zielgruppenanalyse ergab, dass sich die Zielgruppe im industriellen Umfeld befand. Das Szenario des Demonstrator sollte deshalb die Überwachung einer Produktionsstätte sein. Dafür werden verschiedene Daten einer Maschine im Produktionsbetrieb überwacht. Dabei handelt es sich um Temperaturdaten, Energiedaten, Produktionsdaten und Störungsdaten. Der Demonstrator imitiert dabei die Produktionsstätte und erzeugt die Daten.</p><figure id="attachment_3520" aria-describedby="caption-attachment-3520" style="width: 436px" class="wp-caption alignright"><img fetchpriority="high" decoding="async" class="wp-image-3520" src="https://www.industrial-devops.org/wp-content/uploads/2021/09/Szenario-e1631273665172.png" alt="Bediener am Maschinenarbeitsplatz" width="436" height="164" /><figcaption id="caption-attachment-3520" class="wp-caption-text">Szenario</figcaption></figure><p data-sourcepos="155:1-156:64">Der Demonstrator besteht sowohl aus Hardware-Komponenten als auch aus Software-Komponenten. Aus dem Szenarium und den Produktmerkmalen entwickelte ich den folgende Demonstrator.</p><h3 data-sourcepos="158:1-158:12">Hardware</h3><figure id="attachment_3514" aria-describedby="caption-attachment-3514" style="width: 483px" class="wp-caption alignright"><img decoding="async" class=" wp-image-3514" src="https://www.industrial-devops.org/wp-content/uploads/2021/09/Demonstrator-e1631273493930.png" alt="Messe Demonstrator für Flow Programmierung" width="483" height="292" /><figcaption id="caption-attachment-3514" class="wp-caption-text">Demonstrator</figcaption></figure><p data-sourcepos="160:1-162:84">Der Demonstrator basierte auf einer älteren Version eines Demonstrators der wobe-systems GmbH. Ein Temperatursensor (lila) maß konstant die Temperatur. Zusätzlich hat der Demonstrator noch eine LED-Lampe (grün) und einen Ventilator (blau). Angeschlossen sind die Geräte an zwei Raspberry Pis (rot), die sie steuern können.</p><h3 data-sourcepos="166:1-166:12">Software</h3><p data-sourcepos="168:1-170:51">Die titan Plattform übernimmt die Verbindung von Hardware und Software. Zwei Flows dienen als Schnittstellen und übernehme die Verarbeitung der Daten. Als Beispiele entwickelte ich einen kleinen und einen großen Flow, die sich nur durch die jeweils überwachten Daten unterscheiden.</p><h4 data-sourcepos="172:1-172:20">Der kleine Flow</h4><figure id="attachment_3518" aria-describedby="caption-attachment-3518" style="width: 494px" class="wp-caption alignleft"><img decoding="async" class="wp-image-3518" src="https://www.industrial-devops.org/wp-content/uploads/2021/09/kleiner-Flow-e1631273596730.png" alt="Kleiner Flow mit Sensoren und Aktoren" width="494" height="202" /><figcaption id="caption-attachment-3518" class="wp-caption-text">kleiner Flow</figcaption></figure><p data-sourcepos="176:1-178:117">Der <strong>kleine Flow</strong> überwachte nur die Temperaturdaten der Produktionsstätte. Diese werden durch den Temperatursensor produziert. Ab einem kritischen Punkt, der frei konfigurierbar ist durch das titan UI, schaltet sich der Ventilator und die LED-Lampe an. Es wird zudem eine SMS zur Benachrichtigung versendet.</p><h4 data-sourcepos="180:1-180:20">Der große Flow</h4><figure id="attachment_3516" aria-describedby="caption-attachment-3516" style="width: 605px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-3516" src="https://www.industrial-devops.org/wp-content/uploads/2021/09/grosser-Flow-e1631273566206.png" alt="Flow mit Aktoren und Sensoren" width="605" height="563" /><figcaption id="caption-attachment-3516" class="wp-caption-text">großer Flow</figcaption></figure><p data-sourcepos="184:1-186:114">Der <strong>große Flow</strong> hingegen überwachte die Temperaturdaten, die Energiedaten, die Produktionsdaten und prüft auf Störungen der Produktionsstätte. Die Temperaturdaten sind live. Sie stammen direkt vom Sensor. Die übrigen Daten werden simuliert. Alle Daten werden vom Flow in einer Datenbank gesammelt und in Echtzeit in einem Dashboard dargestellt.</p><p data-sourcepos="184:1-186:114"><img loading="lazy" decoding="async" class="wp-image-3515 alignleft" src="https://www.industrial-devops.org/wp-content/uploads/2021/09/Grafana-e1631273527379.png" alt="Dashboard für Flow Programmierung" width="498" height="251" /></p><p data-sourcepos="190:1-194:33">Die Produktmerkmale flossen in die Entwicklung des Demonstrators ein. Sie ließen sich jedoch nicht durch die alleinige Darstellung der Flows repräsentieren. Dafür habe ich eine strukturierte Präsentation des Demonstrators entwickelt. Die Präsentation beginnt mit dem kleinen Flow, der die Hauptfunktionalität der Hardware darstellt. Der kleine Flow wird während der Präsentation ausgebaut und entwickelt sich zum großen Flow. So können Messebesucher*Innen erleben wie eine Lösung vor ihren Augen entsteht.</p><h3 data-sourcepos="196:1-196:28">Evaluierung meiner Arbeit</h3><p data-sourcepos="198:1-202:33">Die Evaluierung des Demonstrators konnte leider nicht live stattfinden, da COVID-19 mir einen Strich durch die Rechnung gemacht hat. Stattdessen produzierte ich verschiedene Youtube-Videos, um die Produktmerkmale mit dem Demonstrator zu präsentieren. Nach jedem Video ermittelte ich in einer Online-Umfrage die Eindrücke der Testpersonen. Ziel der Umfrage war es festzustellen, ob die gewählten Produktmerkmale ansprechend für Messebesucher*innen sein werden.</p><p data-sourcepos="204:1-207:97">Die Eindrücke der Befragten analysierte ich anhand des KANO-Modells. Das KANO-Modell klassifiziert die Produktmerkmale in vier unterschiedlichen Kategorien, die einen unterschiedlichen Einfluss auf die Kundenzufriedenheit haben. Der Einfluss hängt davon ab, ob das Produktmerkmal fehlt oder vorhanden ist. Ich konnte die oben genannten Produktmerkmale durch die Umfrage den Kategorien des KANO-Modells zuordnen. Das Ergebnis sah folgendermaßen aus:</p><p data-sourcepos="209:1-209:40"><img loading="lazy" decoding="async" class="wp-image-3517 alignleft" src="https://www.industrial-devops.org/wp-content/uploads/2021/09/kano-model.png" alt="Analys nach Kano-Modell" width="811" height="270" srcset="https://www.industrial-devops.org/wp-content/uploads/2021/09/kano-model.png 1934w, https://www.industrial-devops.org/wp-content/uploads/2021/09/kano-model-300x100.png 300w, https://www.industrial-devops.org/wp-content/uploads/2021/09/kano-model-1024x341.png 1024w, https://www.industrial-devops.org/wp-content/uploads/2021/09/kano-model-768x256.png 768w, https://www.industrial-devops.org/wp-content/uploads/2021/09/kano-model-1536x511.png 1536w" sizes="(max-width: 811px) 100vw, 811px" /></p><p data-sourcepos="211:1-218:106">Die Befragten wurden nach ihrem Hintergrund aufgeteilt. Es waren Studierende der Christian-Albrechts-Universität zu Kiel, Kollegen aus der wobe-systems GmbH, assoziierte Partner des Titan Projekts oder sonstigen Personen. Die Umfrage zeigte, dass insgesamt acht der zehn Produktmerkmale als Leistungsmerkmal angesehen werden. Als Leistungsmerkmal dienen sie der titan Plattform als Identifizierungskriterium im Vergleich zum Mitbewerb. Die Präsentation des Geschäftsmodells wurde bei den befragten Personen indifferent aufgenommen. Es schaffte keine Kundenzufriedenheit. Die Prozesssteuerung wurde als Basis-Merkmal klassifiziert. Sie schaffen keine Kundenzufriedenheit, sollte aber nicht fehlen, da sie sonst starke Kundenunzufriedenheit verursachte. Bemerkenswert war noch, dass die assoziierten Partner das Kollaborationsmodell als Begeisterungsmerkmal wahrnahmen. Es schaffte eine starke Kundenzufriedenheit.</p><p data-sourcepos="220:1-226:40">Ich rechnete den Kundenzufriedenheit Koeffizienten auch aus den Ergebnissen der Befragung heraus. Der Koeffizient zeigt, wie sehr das Vorhandensein oder nicht Vorhandensein eines Produktmerkmals der titan Plattform die Befragten zufrieden oder unzufrieden stellt. Dies bedeutet in der Grafik, je höher ein Punkt ist, desto stärker ist der Einfluss auf die Zufriedenheit der Kund*innen, wenn dieses Merkmal auf der titan Plattform vorhanden ist. Je weiter rechts ein Punkt ist, desto stärker ist der Einfluss auf die Unzufriedenheit von Kund*innen, wenn dieses Merkmal auf der titan Plattform nicht vorhanden ist.</p><figure id="attachment_3519" aria-describedby="caption-attachment-3519" style="width: 446px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-3519" src="https://www.industrial-devops.org/wp-content/uploads/2021/09/koeffezient-e1631273624977.png" alt="Kundenzufriedenheits Koeffizient" width="446" height="310" /><figcaption id="caption-attachment-3519" class="wp-caption-text">Kundenzufriedenheits Koeffizient</figcaption></figure><p data-sourcepos="230:1-233:59">Der Kundenzufriedenheit Koeffizienten zeigte, dass die Produktmerkmale unterschiedlich wahrgenommen werden. Die Wichtigkeit variiert. Portmachting ist das Merkmal mit der höchsten Kundenzufriedenheit beim Vorhandensein. Es wurde von den Befragten als wichtigstes Merkmal angesehen. Skalierung und Monitoring waren die Merkmale, die die größte Unzufriedenheit beim Nichtvorhandensein schaffen.</p><p data-sourcepos="235:1-236:103">Natürlich kann die Umfrage nicht als repräsentativ angesehen werden, da die Menge der befragten Personen sehr gering ist. Sie gibt aber einen Hinweis zur Wahrnehmung der Produktmerkmale bei den befragten Personen.</p><h3 data-sourcepos="238:1-238:8">Fazit</h3><p data-sourcepos="240:1-246:45">Die titan Plattform ist ein Produkt mit viel Potenzial für Unternehmen. Es ermöglicht die Einbindung verschiedener Informationsquellen, Maschinen und Sensoren auf einer Plattform. Die Daten können gesammelt und aggregiert werden, um neue wichtige Informationen zu gewinnen. Das Potenzial zeigte sich auch in der Wettbewerbsanalyse oder durch das Interesse von verschiedenen Unternehmen an dem Thema No-Code in der Industrie. In meiner Umfrage wurden acht der zehn Produktmerkmale als ein Leistungsmerkmal und eins von zehn als ein Basismerkmal klassifiziert. Das zeigt, dass die gewählten Produktmerkmale gut Resonanz erzeugen. Der Demonstrator zeigt Messebesucher*innen die Produktmerkmale und vermittelt einen Eindruck des Potenzials.</p><p data-sourcepos="248:1-249:74">Natürlich war ich stolz, als ich die Arbeit dann schlussendlich beim Prüfungsamt abgegeben habe. Es war der immerhin der Abschluss meines dreijähriges Studiums und das Ende eines Kapitels in meinem Leben.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/messe-demonstrator-fuer-eine-low-code-iot-plattform/">Ein Messe-Demonstrator für eine Low-Code IoT Plattform</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mobile App für das Smart Home mit No-Code entwickeln</title>
		<link>https://www.industrial-devops.org/mobile-app-fuer-das-smart-home-mit-no-code-entwickeln/</link>
		
		<dc:creator><![CDATA[Laukar Tofik]]></dc:creator>
		<pubDate>Mon, 12 Apr 2021 11:26:04 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.industrial-devops.org/?p=3069</guid>

					<description><![CDATA[<p>Mit No-Code Programmierung kann jeder ohne Programmierkenntnisse eine App entwickeln. In einem Beispiel zeige ich, wie eine Mobile App mit den No-Code Werkzeugen FIGMA, Bravo Studio und der titan Plattform, zur Fernbedienung meiner smarten Lampe gewissermaßen über Nacht entsteht. </p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/mobile-app-fuer-das-smart-home-mit-no-code-entwickeln/">Mobile App für das Smart Home mit No-Code entwickeln</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3069" class="elementor elementor-3069" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-20c6eb0 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="20c6eb0" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f249e18" data-id="f249e18" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a29ebce elementor-widget elementor-widget-text-editor" data-id="a29ebce" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Mit No-Code Programmierung kann jeder ohne Programmierkenntnisse eine App entwickeln. In einem Beispiel zeige ich, wie eine Mobile App mit den No-Code Werkzeugen FIGMA, Bravo Studio und der titan Plattform, zur Fernbedienung meiner smarten Lampe gewissermaßen über Nacht entsteht. 								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-f99d9da elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="f99d9da" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d4e0e34" data-id="d4e0e34" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div data-id="0d4fffc" data-element_type="widget" data-e-type="widget" data-widget_type="video.default" consent-visual-use-parent="children:.elementor-widget-container" consent-required="3586" consent-by="services" consent-id="3588" consent-original-class-_="elementor-element elementor-element-0d4fffc elementor-widget elementor-widget-video" consent-original-data-settings-_="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/_oQ1PqvZsDM&quot;,&quot;yt_privacy&quot;:&quot;yes&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" consent-thumbnail="{&quot;embedId&quot;:&quot;da6f03ebbf521776d71ba4f2c24e4849&quot;,&quot;fileMd5&quot;:&quot;10df7acbf58c9ed6c973f748ef0ba5d3&quot;,&quot;url&quot;:&quot;https:\/\/www.industrial-devops.org\/wp-content\/uploads\/embed-thumbnails\/da6f03ebbf521776d71ba4f2c24e4849-10df7acbf58c9ed6c973f748ef0ba5d3.jpeg&quot;,&quot;title&quot;:&quot;Wie erstelle ich eine App mit No-Code in 15 Minuten! | Titan - Blog&quot;,&quot;width&quot;:640,&quot;height&quot;:480,&quot;forceRatio&quot;:56.25}">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-dbeddfe elementor-widget elementor-widget-text-editor" data-id="dbeddfe" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>Not macht erfinderisch</h3><article class="markdown-body"><p data-sourcepos="7:1-7:687">Es ist Schlafenszeit. Zähne putzen, Gesicht waschen und endlich ins Bett. Eins habe ich <strong>wieder mal</strong> vergessen. Während ich auf Wolke 7 schwebe, schaue ich mir meine Lampe an. Mein Erzfeind&#8230; Mein Gehirn versucht mit der letzten Energie eine Lösung zu finden, die Lampe auszuschalten, ohne aufzustehen. Wenn ich doch nur die <strong>Macht</strong> hätte, wie in Star Wars, um die Lampe auszuschalten. Meine Ideen verlieren langsam an Realität. Kurz bevor ich die Hoffnung schon fast aufgegeben hatte,  fällt mir dann die sinnvollste Idee von allen ein. Wir leben in einem Zeitalter der Digitalisierung. Es gibt beispielsweise autonom fahrende Autos, Staubsaugroboter, intelligente Lichtsensoren und so weiter. Alle genannten Geräte können heutzutage schon über das Handy gesteuert werden. Meine Lampe gehört sogar zu den Intelligenten. Also, wieso rappel ich mich nicht auf und baue mir eine mobile App, um meine smarte Lampe mit meinem Handy zu steuern.</p><article class="markdown-body"><h3 data-sourcepos="9:1-9:21">Was benötige ich?</h3><p data-sourcepos="11:1-11:127">Ich stehe von meinem Bett auf und bewege mich voller Energie an den Schreibtisch. Nun zur Arbeit. Was benötige ich eigentlich?</p><article class="markdown-body"><p data-sourcepos="17:1-17:22">Der Aufbau besteht aus:</p><ul data-sourcepos="19:1-23:0"><li data-sourcepos="19:1-20:19">Smartes Leuchtmittel z.B.: <a href="https://www.mueller-licht.de/produktinformationen/artikel/?q=404000">Müller Licht – tint White &amp; Color</a> oder IKEA Trådfri</li><li data-sourcepos="21:1-21:43"><a href="https://www.raspberrypi.org/">RasperryPi</a></li><li data-sourcepos="22:1-23:0"><a href="https://phoscon.de/de/conbee2">RaspBee II</a></li></ul><p data-sourcepos="24:1-24:204">Weitere Informationen findest du im Blog <a href="https://www.industrial-devops.org/titan-mit-der-iot-welt-verbinden/">&#8222;titan mit der IoT Welt verbinden&#8220;</a> von Björn Latte unter dem Abschnitt <em>&#8222;Schlauer werden&#8220;</em>.</p><article class="markdown-body"><h3 data-sourcepos="26:1-26:31">No-Code für die mobile App</h3><p data-sourcepos="28:1-28:537">Eine mobile App zu entwickeln, ist normalerweise eine Herausforderung. Ich müsste mehrere Stunden Arbeit investieren, um das Grundgerüst einer App für iOS oder Android zu verstehen. Dafür fehlt mir aber die Zeit so spät am Abend. <em>Titan</em> ermöglicht es, mittels No-Code die Backend-Integration für Unternehmen zu vereinfachen. Vielleicht gibt es solche Werkzeuge auch für die Entwicklung von Apps? Nach einer Online-Recherche entscheide ich mich für <a href="https://www.figma.com/">FIGMA</a> und <a href="https://www.bravostudio.app/">Bravo Studio</a>.</p><p data-sourcepos="30:1-30:113">Figma ist ein Online-Tool zum Designen von Prototypen. Damit ist es möglich, das Design meiner App zu erstellen.</p><p data-sourcepos="32:1-32:142">Mit Bravo Studio wird aus einem <a href="https://www.figma.com/">FIGMA</a> Projekt eine native Mobile-App erzeugt und die Logik mit dem Design verbunden.</p><article class="markdown-body"><p data-sourcepos="36:1-36:219">Mit beiden Tools zusammen wird das Frontend, also die App selbst, entwickelt. Das Backend realisiere ich mit der <em>titan</em> Plattform. Die Hardware, beide Tools und <em>titan</em> sind alles, was ich brauche. Nun geht&#8217;s an den Spaß.</p><article class="markdown-body"><h3 data-sourcepos="38:1-38:35">Realisierung der Lampensteuerung</h3><p data-sourcepos="40:1-40:22">Aufbau meines Systems:</p><p><img loading="lazy" decoding="async" class="aligncenter wp-image-3085" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/Roadmap-e1617805713739.png" alt="Roadmap für App" width="729" height="262" /></p><article class="markdown-body"><p data-sourcepos="44:1-44:575">Als allererstes beginne ich mit dem Design meiner App mit FIGMA. Die Elemente werden per Drag&amp;Drop, wie in <em>titan</em>, in die Zeichenfläche gezogen. Ich beginne mit dem Aufbau eines ersten <em>Frames</em>. Das soll mein Homescreen werden, wenn ich die App öffne. Dort werden die Farbe der Lampe und drei Buttons angezeigt. Ein Button öffnet immer ein Pop-up-Fenster zum Steuern.  Zwei Buttons sind zum Ein- bzw. Ausschalten der Lampe. Ein weiterer Button  ermöglicht mir, die Farbe zu wechseln.</p><p data-sourcepos="44:1-44:575">So, das Design steht. Bevor ich mit der App weitermache, fange ich erst mal an das Backend aufzubauen. Also ab zu <em>titan</em>.</p></article><p data-sourcepos="44:1-44:575"><img loading="lazy" decoding="async" class="aligncenter wp-image-3089" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/FIGMA-Design-e1617805832797.png" alt="FIGMA Design" width="730" height="471" /></p><article class="markdown-body"><p data-sourcepos="48:1-48:253">Beim Thema Backend kräuseln sich meine Haare am Arm. Lange harte Arbeit und viel Planung ist nötig, bevor ich die erste Zeile Code schreibe. Zum Glück muss ich bei <em>titan</em> keinen Code schreiben, um die gleiche Funktionalität zu bekommen. Also rein da!</p><p data-sourcepos="50:1-50:154">Die <em>titan</em>-Webseite aufrufen, einloggen und los geht&#8217;s. Schnell einen neuen Flow erstellt und rein in den Flow-Editor. Alle nötigen Bricks sind vorhanden.</p><article class="markdown-body"><p data-sourcepos="52:1-52:53">Ich benötige für meine Steuerung drei Funktionen:</p><table data-sourcepos="54:1-58:95"><thead><tr data-sourcepos="54:1-54:59"><th data-sourcepos="54:2-54:18"><strong>Typ</strong></th><th data-sourcepos="54:20-54:29"><strong>URL</strong></th><th data-sourcepos="54:31-54:41"><strong>Daten</strong></th><th data-sourcepos="54:43-54:57"><strong>Bedeutung</strong></th></tr></thead><tbody><tr data-sourcepos="56:1-56:79"><td data-sourcepos="56:2-56:18"><code>GET</code></td><td data-sourcepos="56:20-56:29">../state</td><td data-sourcepos="56:31-56:37">keine</td><td data-sourcepos="56:39-56:78">Status der Lampe</td></tr><tr data-sourcepos="57:1-57:82"><td data-sourcepos="57:2-57:18"><code>POST</code></td><td data-sourcepos="57:20-57:29">../state</td><td data-sourcepos="57:31-57:63"><code>{"color": }</code></td><td data-sourcepos="57:65-57:80">Farbe Wechseln</td></tr><tr data-sourcepos="58:1-58:95"><td data-sourcepos="58:2-58:18"><code>POST</code></td><td data-sourcepos="58:20-58:31">../light</td><td data-sourcepos="58:33-58:68"><code>{"on": &lt;An/Aus als Boolean&gt;}</code></td><td data-sourcepos="58:70-58:92">Licht an-/ausschalten</td></tr></tbody></table><p data-sourcepos="60:1-60:59">Aus den drei Schnittstellen ergibt sich der folgende Flow:</p><p data-sourcepos="60:1-60:59"><img loading="lazy" decoding="async" class="aligncenter wp-image-3093" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/Flow-withResponse-e1617806095836.png" alt="Flow mit Antwort" width="730" height="462" /></p><article class="markdown-body"><p data-sourcepos="64:1-64:179">Die Bricks <code>state</code> und <code>light</code> sind <code>Request</code>-Bricks. Sie sind unter einer bestimmten URL erreichbar und bieten der App die oberen Dienste an. Dabei ist die Struktur die folgende:</p></article><article class="markdown-body"><pre data-sourcepos="66:1-68:3"><code class="language-URL">https://{Titan-Service-URL}/endpoint/{Username}/{Flowname}/{Request-Brickname}
</code></pre><p data-sourcepos="70:1-70:62">Der Flow lässt sich auf die zwei wesentliche URLs aufteilen.</p><article class="markdown-body"><h3 data-sourcepos="72:1-72:55">Status der Lampe ermitteln und verändern: ../state</h3><p><img loading="lazy" decoding="async" class="aligncenter wp-image-3097" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/Flow-Teil1-e1617806263257.png" alt="Get Lampenstatus" width="730" height="462" /></p><article class="markdown-body"><p data-sourcepos="76:1-76:388">Die <code>../state</code>-URL lässt jeweils eine <code>GET</code> oder <code>POST</code> Anfrage zu. Je nach Anfrage, wird ein Ausgangsport gewählt. Bei einer <code>GET</code>-Anfrage wird der <code>HttpClientGeneral1</code>-Brick getriggert. Eine <code>GET</code>-Anfrage vom <code>HttpClientGeneral1</code> aus wird an die Lampe gestellt, um die aktuelle Farbe zu erhalten. Anschließend werden die folgenden Daten an den <code>HueToHex</code>-Brick gesendet.</p><pre data-sourcepos="78:1-84:3"><code class="language-JSON">{
  "hue": 2000,
  "sat": 120,
  "bri": 120
}
</code></pre><p data-sourcepos="86:1-86:286">Aus den Daten wird dann der RGB-Farbwert errechnet. Der Farbwert wird benötigt, um ein Image für unsere App zu erstellen, das genau diese Farbe enthält. Dafür gibt es eine offene API, die uns ein Image generiert. Der Wert <code>${color}</code> wird durch den errechneten Farbwert ausgetauscht.</p><pre data-sourcepos="88:1-90:3"><code class="language-URL">https://singlecolorimage.com/get/${color}/320x270
</code></pre><p data-sourcepos="92:1-92:211">Der <code>Response1</code>-Brick antwortet meiner App dann mit der oberen URL. Nun, was passiert, wenn ich einen <code>POST</code>-Anfrage stelle? Ich muss auf die gesendeten Daten der App zugreifen. Dafür nutze ich das Portmapping.</p><p data-sourcepos="92:1-92:211"><img loading="lazy" decoding="async" class="aligncenter wp-image-3101" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/Flow-Portmapping-e1617806373453.png" alt="Flow Portmapping" width="730" height="467" /></p><article class="markdown-body"><p data-sourcepos="96:1-96:326">Die Daten vom Handy werden über den <code>state</code>-Brick weitergeleitet an den <code>HexToHue</code>-Brick. Dieser berechnet den Hsl-Farbwert für die Lampe. Anschließend kann der <code>LampWriter</code> den Wert an die Lampe senden, um die Farbe zu wechseln. Der <code>Response2</code>-Brick antwortet der App, dass die Anfrage angekommen ist und erfolgreich war.</p><h3 data-sourcepos="98:1-98:40">Lampe Ein- und Ausschalten: ../light</h3><p><img loading="lazy" decoding="async" class="aligncenter wp-image-3105" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/Flow-Teil2-e1617806463976.png" alt="Flow Lampenschalter" width="730" height="462" /></p><article class="markdown-body"><p data-sourcepos="102:1-102:323">Jetzt noch kurz den Ein- und Ausschalter einrichten. Sonst muss ich heute Abend dennoch im hellen Schlafen. Die andere Schnittstelle ist <code>../light</code>. Diese nutze ich nur um das Licht ein- und auszuschalten. Ich kann sie daher direkt mit dem <code>LampWriter</code> verbinden. Genau wie oben muss ich das Port-Mapping entsprechend anpassen.</p><p data-sourcepos="104:1-105:78">Mein Flow steht und ist funktionsbereit. Nun ab zu Bravo Studio. Mein Gehirn macht schon langsam schlapp, aber nur noch ein wenig und die Steuerung steht.</p><p data-sourcepos="107:1-107:318">In Bravo Studio muss ich zuallererst mein FIGMA-Projekt importieren. Das klappt zum Glück ganz einfach über einen Log-In mit meinen FIGMA-Benutzerdaten. Jetzt muss ich eine Data Library anlegen. Eine Data Library beschreibt eine Sammlung an REST-Anfragen. Ich erzeuge vier REST-Anfragen an meinen existierenden Flow.</p><p data-sourcepos="107:1-107:318"><img loading="lazy" decoding="async" class="aligncenter wp-image-3109" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/Titan-API-e1617806570173.png" alt="titan REST-API" width="730" height="471" /></p><article class="markdown-body"><p data-sourcepos="111:1-111:264">Die Abbildung zeigt die REST-Anfrage, um die Lampenfarbe zu wechseln. Über <code>${}</code> können Variablen definiert werden, die dann mit Daten aus der App gefüllt werden. Jetzt zum Data-Binding. Man beginnt mit der Wahl der App-Seite. Pro Seite kann man (momentan) nur eine REST-Anfrage verbinden.</p><article class="markdown-body"><p data-sourcepos="115:1-115:215">Um die Daten zu verbinden, wählt man zuerst die Anfrage als Quelle und anschließend das visuelle Element als Senke der Daten aus. Bravo Studio übernimmt dann automatisch die Verbindung der Elemente und der Daten.</p><p data-sourcepos="115:1-115:215"><img loading="lazy" decoding="async" class="aligncenter wp-image-3111" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/Bravo-Databinding-e1617807096773.png" alt="Bravo Databinding" width="730" height="471" /></p><article class="markdown-body"><h3 data-sourcepos="119:1-119:35">Geschafft, nur noch installieren</h3></article></article><article class="markdown-body"><p data-sourcepos="123:1-123:243">Endlich alles geschafft. Es fehlt der letzte Schritt. Die App muss nun auf mein Handy. Dafür nutze ich lediglich die eigene Bravo-Studio-App. Damit kann ich auf alle erstellten Projekt meines Bravo-Studio Accounts zugreifen.</p></article><p data-sourcepos="123:1-123:243"><img loading="lazy" decoding="async" class="aligncenter wp-image-3230 size-full" src="https://www.industrial-devops.org/wp-content/uploads/2021/04/App-IoT-2.gif" alt="App IoT" width="600" height="338" /></p><article class="markdown-body"><article class="markdown-body"><p data-sourcepos="127:1-127:296">Oh, schon 1:00 Uhr morgens. Also ab ins Bett und schnell einschlafen. Ich starre die Decke an mit einem breiten Lächeln. Dieses Mal gewinnt die Lampe nicht gegen mich. Also Handy in die Hand, App öffnen und die Lampe ausschalten. Die Lampe ist aus und ich habe den erholsamsten Schlaf seit Langem.</p></article></article></article></article></article></article></article></article></article></article></article></article></article></article></article></article>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/mobile-app-fuer-das-smart-home-mit-no-code-entwickeln/">Mobile App für das Smart Home mit No-Code entwickeln</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Die Smarte Fabrik und das Internet der Dinge &#8211; Ein Industrie 4.0 Fallbeispiel</title>
		<link>https://www.industrial-devops.org/die-smarte-fabrik-und-das-internet-der-dinge-ein-industrie-4-0-fallbeispiel/</link>
		
		<dc:creator><![CDATA[Uwe Glockmann]]></dc:creator>
		<pubDate>Mon, 08 Feb 2021 09:59:42 +0000</pubDate>
				<category><![CDATA[IoT]]></category>
		<guid isPermaLink="false">https://www.industrial-devops.org/?p=1829</guid>

					<description><![CDATA[<p>An einem verschneiten Dezembermorgen im Jahr 2019 befinde ich mich im mittelhessischen Haiger vor den Toren der neuen Smart Factory von Rittal. Der weltweit führende Systemanbieter für Schaltschränke, Stromverteilung, Klimatisierung, IT-Infrastruktur sowie Software &#38; Service lässt in seinem neuen Werk eine smarte Fabrik entstehen – die weltweit modernste Fertigung von Kompakt-Schaltschränken und Kleingehäusen. Ich gehöre&#8230;&#160;<a href="https://www.industrial-devops.org/die-smarte-fabrik-und-das-internet-der-dinge-ein-industrie-4-0-fallbeispiel/" rel="bookmark">Weiterlesen &#187;<span class="screen-reader-text">Die Smarte Fabrik und das Internet der Dinge &#8211; Ein Industrie 4.0 Fallbeispiel</span></a></p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/die-smarte-fabrik-und-das-internet-der-dinge-ein-industrie-4-0-fallbeispiel/">Die Smarte Fabrik und das Internet der Dinge &#8211; Ein Industrie 4.0 Fallbeispiel</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1829" class="elementor elementor-1829" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-8249929 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8249929" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1478cff" data-id="1478cff" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3004034 elementor-widget elementor-widget-text-editor" data-id="3004034" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>An einem verschneiten Dezembermorgen im Jahr 2019 befinde ich mich im mittelhessischen Haiger vor den Toren der neuen Smart Factory von Rittal. Der weltweit führende Systemanbieter für Schaltschränke, Stromverteilung, Klimatisierung, IT-Infrastruktur sowie Software &amp; Service lässt in seinem neuen Werk eine smarte Fabrik entstehen – die weltweit modernste Fertigung von Kompakt-Schaltschränken und Kleingehäusen. Ich gehöre heute zu einer der ersten kleinen Besuchergruppen, die die Möglichkeit hat, diese einzigartige digitale Fertigung zu besichtigen.</p><p>Das vollständig nach hocheffizienten Industrie-4.0-Strukturen ausgerichtete Werk ist noch nicht zu 100% in Produktion. Big Data – eine Vielzahl an Daten aus Maschinen, von Aktoren und Sensoren werden noch ins Monitoring eingebunden, Daten- und Systemintegrationen finden parallel statt und ein Expertenteam von Entwicklungsingenieuren und Service-Technikern analysiert, clustert jede Menge Daten für das große Industrie 4.0-Format der Visualisierung. Der Kontext macht dann aus den Daten die unmittelbare bereitgestellte Information. Das Ziel ist, in den neuen Fabrikhallen auf 24.000 Quadratmetern mit mehr als 100 neuen Hightech-Maschinen, Anlagenkomponenten und IoT-Plattformen rund 9.000 Kompaktschaltschränke und Kleingehäuse pro Tag hochautomatisiert zu fertigen.</p><figure id="attachment_1834" aria-describedby="caption-attachment-1834" style="width: 768px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-1834" src="https://www.industrial-devops.org/wp-content/uploads/2021/02/Bild1-e1612508341931.jpg" alt="Die smarte Fabrik mit der Anbindung vieler Drittsysteme an den zentralen Geschäftsprozess hat sich in den vergangenen Jahren zu einer werksnahen Datendrehscheibe weiterentwickelt" width="768" height="284" /><figcaption id="caption-attachment-1834" class="wp-caption-text"><em>Die smarte Fabrik mit der Anbindung vieler Drittsysteme an den zentralen Geschäftsprozess hat sich in den vergangenen Jahren zu einer werksnahen Datendrehscheibe weiterentwickelt. (Bild: gemeinfrei / Pixabay)</em></figcaption></figure><h3>Was ist Industrie 4.0 eigentlich (für uns)?</h3><p>Der Begriff Industrie 4.0 wurde erstmals 2011, also genau vor 10 Jahren zur Hannover Messe in die Öffentlichkeit getragen. Aus einer Arbeitsgruppe entstand letztlich die Plattform Industrie 4.0, einem Zusammenschluss der Branchenverbände <a href="https://de.wikipedia.org/wiki/Bitkom">Bitkom</a>, <a href="https://de.wikipedia.org/wiki/VDMA">VDMA</a> und <a href="https://de.wikipedia.org/wiki/ZVEI">ZVEI</a>. Die Plattform Industrie 4.0 wurde seitdem weiter ausgebaut und das Ziel ist die Weiterentwicklung der mit dem Begriff Industrie 4.0 verbundenen Inhalte im Dialog mit Gewerkschaften, Wirtschaftsverbänden, Unternehmen, Wissenschaft und Politik.</p><h3>Industrie 4.0 &#8211; relevante Informationen verfügbar machen</h3><p>Für uns ist Industrie 4.0 eine neue Stufe der Organisation und Steuerung der gesamten Wertschöpfungskette über den Lebenszyklus von Produkten – von der Idee bis hin zum Recycling. Individuelle Kundenwünsche entstehen in der diskreten Fertigung und eine Studie von der International Data Corporation (IDC) aus 2019 belegt, dass 42% der Industrial IoT-Projekte in der deutschen Industrie genau dort umgesetzt werden, wo in der Industrieproduktion eine starke Anpassung der Produkte (bis zur Losgröße 1) erforderlich ist.</p><p>Basis ist die Verfügbarkeit aller relevanten Informationen in Echtzeit durch Vernetzung aller beteiligten Instanzen. Die Herausforderung dabei ist die Fähigkeit, aus den Daten den optimalen Wertschöpfungsfluss abzuleiten – und das zu jedem Zeitpunkt. Durch die Konnektivität von Menschen, Objekten und Systemen entstehen Wertschöpfungsnetzwerke. Sie sind dynamisch, echtzeitoptimiert, selbstorganisierend und unternehmensübergreifend.</p><figure id="attachment_1844" aria-describedby="caption-attachment-1844" style="width: 768px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-1844" src="https://www.industrial-devops.org/wp-content/uploads/2021/02/Bild2-e1612508988291.jpg" alt="Eine entscheidende Aufgabe ist dabei, sinnvolle Informationen aus der Vielzahl an Daten produzieren zu können" width="768" height="320" /><figcaption id="caption-attachment-1844" class="wp-caption-text">Eine entscheidende Aufgabe ist dabei, sinnvolle Informationen aus der Vielzahl an Daten produzieren zu können. (Bild: gemeinfrei / Pixabay)</figcaption></figure><h3>Was sind die großen Herausforderungen beim Industrial Internet of Things (IIoT)?</h3><p>Im Gegensatz zum Internet of Things (IoT) stehen beim industriellen Internet der Dinge nicht die Verbraucher und Anwender im Mittelpunkt der Konzepte, sondern industrielle Prozesse und Abläufe. Ziele des Industrial IoT sind die Verbesserung der betrieblichen Effizienz, Kostensenkungen in der Produktion, schnellere Prozesse und die Realisierung neuer Geschäftsmodelle.</p><p>Zurück in der neuen digitalen Fabrik von Rittal. Fahrerlose Transportsysteme kommen mir entgegen, fahren sensorgesteuert an mir vorbei und übernehmen automatisiert die Transporte im Werk. Ich fühle mich wie ein Statist aus einem Star Wars Film. Ich komme mit einem Ingenieur aus der Prozessautomatisierung ins Gespräch. Er ist total begeistert, irgendwie auch stolz auf dieser 24.000 Quadratmeter großen digitalen Bühne zu arbeiten.</p><h3>Früher analog, heute digital</h3><p>„Früher hatten wir eine Vielzahl an Insellösungen von Systemen, Maschinen und Anlagen. Es fehlte uns die Transparenz über Aufträge, Prozesse und Produktionsstatus durch mangelnde Datenverfügbarkeit. Und dann unglaublich viel Papier, papierbasierte Prozessschritte und zwangsläufige Medienbrüche,“ so der Ingenieur. „Es gab viel Ad hoc-Planung und -Kommunikation anstelle von strukturierter Planung. Und zuletzt geht es um eine genauere Kontrolle, wie viel elektr. Strom, Wasser und andere Ressourcen verbraucht werden, wann die Maschinen laufen und wie viel diese produzieren.“</p><h3>Konnektivität – Menschen und Maschinen verbinden</h3><p>Ich stimme ihm zu und wo früher die einzelnen Fertigungsprozesse Zuschneiden, Kanten, Schweißen sowie Lackieren transaktional, sequenziell und unabhängig voneinander abgearbeitet wurden, werden in der Smart Factory alle Menschen und Maschinen immer enger in das Manufacturing Execution System (MES) eingebunden. Die Einzelbaugruppen werden am Ende automatisch zum fertigen Produkt zusammengeführt. Dabei kommunizieren die Maschinen und Handling-Systeme, die fahrerlosen Transportsysteme untereinander und mit den übergeordneten Prozesseitsystemen. So stellt sich der Maschinenpark im Produktionsprozess automatisiert auf die zu produzierenden Werkstücke und Baugruppen ein.</p><figure id="attachment_1848" aria-describedby="caption-attachment-1848" style="width: 768px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-1848" src="https://www.industrial-devops.org/wp-content/uploads/2021/02/Bild3-e1612509332752.jpg" alt="Menschen, Objekte und Systeme tauschen permanent Informationen aus" width="768" height="350" /><figcaption id="caption-attachment-1848" class="wp-caption-text">Menschen, Objekte und Systeme tauschen permanent Informationen aus. (Bild: gemeinfrei / Pixabay)</figcaption></figure><h3>5G, Edge Computing und KI/ML – neue Technologien in der Industrie 4.0</h3><p>Ich treffe auf einen jungen Mann aus der IT. Er erzählt mir viel über Big Data und neue Technologien, die in Zukunft zum Einsatz kommen. Der gesamte Maschinenpark liefert permanent Daten über die Steuerung und die aktuellen Betriebszustände. Diese Daten werden zukünftig in einem Edge Data Center am Werk gesammelt und mit Anwendungen eines Schwesterunternehmens ausgewertet. So wird die Basis für Industrial Analytics gelegt. Mithilfe wissensbasierter Systeme auf Basis von Künstlicher Intelligenz (KI), die kontinuierlich dazulernen – Machine learning (ML) – werden Ausfallzeiten verringert, Wartungen vorausschauend (Predictive Maintenance) geplant und damit Störungen des ausgeklügelten Produktionsprozesses minimiert.</p><p>Diese neuen Technologien wie 5G, Edge Computing und KI/ML sollten nach IDC Einschätzungen genutzt und eingesetzt werden, um langfristig einen Grundstein für neue Geschäftsmodelle und Services zu legen, die entweder selbstständig erbracht oder in Ökosysteme integriert werden können. Diese Ökosysteme zu entwickeln, entsprechende Partnerschaften aufzubauen und allgemein akzeptierte Standards zu bestimmen, sollte und wird eine der zentralen Aufgaben für industrielle und industrienahe Unternehmen in den kommenden Jahren in Deutschland sein, um wettbewerbsfähig zu bleiben.</p><h3>5G – Datenverarbeitung mit 10 Gigabit pro Sekunde</h3><p>Mittlerweile hat der Schaltschrank-Spezialist Rittal als eines der ersten Industrieunternehmen in Deutschland eine 5G Frequenzzuteilung erhalten. Bereits in 2020 wurde ein privates <a href="https://industrie.de/5g-mobilfunkstandard/" target="_blank" rel="noopener">5G Mobilfunknetz</a> im neuen Werk in Haiger installiert. Erste Pilotprojekte, etwa in der Produktionsüberwachung und -analyse, sind bereits in Planung.</p><p>Rittal will das 5G-Mobilfunknetz in seiner <a href="https://automationspraxis.industrie.de/industrie-4-0/rittal-smart-factory-fertigt-schaltschraenke/" target="_blank" rel="noopener">Smart Factory in Haiger</a> in einer realen Produktionsumgebung schnellstmöglich installieren und in Betrieb nehmen. Die neue 5G-Funktechnologie soll den Datenverkehr deutlich beschleunigen und vereinfachen – etwa beim videobasierten Abgleich von Stückzahlen mit hinterlegten Auftragsdaten und bei der schrittweisen Implementierung von Data Analytics für eine präventive Instandhaltung. Mit dem neuen 5G Mobilfunkstandard lassen sich Daten mit einer Geschwindigkeit von 10 Gigabit pro Sekunde verarbeiten. 5G gilt als die Zukunftstechnologie, mit der sich industrielle Fertigungsprozesse noch besser vernetzen und steuern lassen – und somit die Potenziale von <a href="http://automationspraxis.industrie.de/industrie-40/" target="_blank" rel="noopener">Industrie 4.0</a> weiter auszuschöpfen.</p><h3>Edge Computing im industriellen IoT</h3><p>Aktuelle Cloud-Computing-Trends stellen das Edge-Computing als ein Konzept vor, das den Industriebetrieb revolutionieren kann. Dies ist auf seine Fähigkeit zurückzuführen, nicht angeschlossene Geräte, Fertigungswerkzeuge, IIoT-Geräte und Arbeitsplätze in die Lage zu versetzen, Daten zu erfassen und zu verarbeiten, ohne mit einem zentralen Datenbanksystem zusammenarbeiten zu müssen. Mit Industrie 4.0 und den Millionen von Sensoren und IIoT-Geräten, die es antreiben, wird das Edge-Computing für das industrielle IoT neue Höhen erreichen.</p><p>Edge-Computing kann als die Bereitstellung von Daten-Handling-Aktivitäten und Vorgängen an der Quelle, ohne durch zentralisierte Netzwerksegmente gehen zu müssen, definiert werden. Dieser Rechenprozess optimiert Geräte, IoT-Geräte und Anwendungen, indem er das Rechnen näher an den Netzwerkrand dieser datenproduzierenden Geräte bringt. Je nach Gerät oder Anlage kann sich der Netzwerkrand auf den Bereich beziehen, in dem das Gerät mit dem Internet kommuniziert.</p><p>So ist das auch bei Rittal. Zukünftig können Daten, die an Sensoren, Bauteilen, Maschinen oder Robotern entstehen und benötigt werden, schneller als bisher in einem Edge- oder Cloud-Rechenzentrum erfasst und ausgewertet werden. Die notwendigen IT-Voraussetzungen sind im neuen Werk in Haiger bereits vorhanden.</p><figure id="attachment_1861" aria-describedby="caption-attachment-1861" style="width: 605px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-1861" src="https://www.industrial-devops.org/wp-content/uploads/2021/02/Bild4.png" alt="Neue Technologien wie 5G, Edge Computing und KI/ML sind auf dem Vormarsch" width="605" height="273" srcset="https://www.industrial-devops.org/wp-content/uploads/2021/02/Bild4.png 605w, https://www.industrial-devops.org/wp-content/uploads/2021/02/Bild4-300x135.png 300w" sizes="(max-width: 605px) 100vw, 605px" /><figcaption id="caption-attachment-1861" class="wp-caption-text">Neue Technologien wie 5G, Edge Computing und KI/ML sind auf dem Vormarsch. (Bild: gemeinfrei / Pixabay)</figcaption></figure><h3>Wo liegt der Unterschied zwischen Künstlicher Intelligenz (KI) und Machine learning (ML)</h3><p>In der Smart Factory von Rittal fallen Daten von über 100 Maschinen an. Das sind bis zu 18 Terabyte am Tag. Eine Auswertung der Daten kann nur erfolgen, wenn diese Daten nach der Erfassung per Künstlicher Intelligenz (KI) analysiert werden. Und der Mensch spielt dabei eine entscheidende Rolle: Erst mit den Menschen als systematische Ausbilder werden aus den Anlagen zunächst lernende Systeme – Maschinelles Lernen (ML) – und später intelligente Systeme.</p><h3>Computerprogramme, die Dame spielten</h3><p>Sie sind eines der frühesten Beispiele für Künstliche Intelligenz. Auf der Dartmouth Konferenz im Sommer 1956 war es die Idee der KI-Pioniere eine komplexe Maschine zu konstruieren, die mit Hilfe der neu entstehenden Computer die gleiche Intelligenz wie ein Mensch besitzt. Bei diesem Konzept spricht man von der «General Artificial Intelligence (AI)»: <a href="https://www.twt.de/news/detail/warum-machine-learning-niemanden-umbringt.html" target="_blank" rel="noopener">Maschinen, die all unsere Sinne haben, unsere Vernunft und so denken wie wir</a>.</p><p>Was heute schon davon umgesetzt werden kann, ist ein Konzept der «begrenzten KI». Technologien, die in der Lage sind, spezifische Aufgaben genauso gut oder besser als Menschen zu lösen. Ein Beispiel dafür ist die Gesichtserkennung von Facebook oder die Bildklassifizierung bei Pinterest. Die Technologien zeigen Aspekte von menschlicher Intelligenz. Doch wie funktioniert das und woher kommt die Intelligenz? Hier kommt das Machine Learning (ML) ins Spiel.</p><p>«Maschinelles Lernen» (Machine Learning) bezeichnet eine Querschnittsdisziplin aus Statistik, Informatik und Mathematik, die das Ziel hat, Softwaresysteme zu konstruieren, die automatisch aus Daten lernen können. Eine Vielzahl generischer Lernalgorithmen wurde entwickelt, um eine Vielzahl von Lernaufgaben zu lösen oder neue Erkenntnisse aus Daten zu gewinnen. Maschinen lernen also komplexe Zusammenhänge, wozu Menschen in puncto Schnelligkeit und Genauigkeit nicht mehr in der Lage sind.</p><figure id="attachment_1868" aria-describedby="caption-attachment-1868" style="width: 768px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-1868" src="https://www.industrial-devops.org/wp-content/uploads/2021/02/Bild5-e1612509712270.png" alt="Maschinelles Lernen kombiniert Methoden der Statistik, Informatik und Mathematik mit dem Ziel, Softwaresysteme zu konstruieren, die automatisch aus Daten lernen können" width="768" height="256" /><figcaption id="caption-attachment-1868" class="wp-caption-text">Maschinelles Lernen kombiniert Methoden der Statistik, Informatik und Mathematik mit dem Ziel, Softwaresysteme zu konstruieren, die automatisch aus Daten lernen können. (Bild: Pixabay / CC0 )</figcaption></figure><p>Damit die wachsende Datenflut in der industriellen Produktion beherrschbar wird, hilft maschinelles Lernen, aus einer immensen Menge von Sensoren- und Prozessdaten komplexe Zusammenhänge zu entschlüsseln, Muster zu erkennen und neues Wissen zu generieren.</p><h3>Source Code oder doch lieber Low-Code / No-Code?</h3><p>Meine Werksbesichtigung in der Smart Factory bei Rittal nähert sich dem Ende. Fast am Ausgang angekommen, schaue ich einem Techniker über die Schulter, der an einem Prozessrechner noch einige Programmierungsanpassungen im Source Code vornimmt. Was früher eingeweihten IT-Professionals ein Begriff war, ist heute im Bereich der Software- und Applikationsentwicklung nicht mehr wegzudenken. Von der Automotive-Industrie bis zum Pharma-Unternehmen – vom Mittelständler bis hin zum Global Player. Sie alle nutzen es und die Einsatzmöglichkeiten sind nahezu grenzenlos.</p><h3>Die Rede ist von <a href="https://www.industry-of-things.de/was-ist-low-code-definition-anwendung-und-beispiele-a-794509/" target="_blank" rel="noopener">Low-Code</a> / No-Code</h3><p>Schneller, leistungsfähiger, effektiver und kostengünstiger müssen sie sein, die digitalen Prozesse und Anwendungen. Die Prämisse der Digitalisierung gilt für alle Unternehmen, denn in Zeiten steigender Anforderungsprofile, eines zunehmenden Fachkräftemangels und überlasteter IT-Teams ist eine Low-Code oder No-Code-Automatisierungsplattform oftmals ein probates Mittel, <a href="https://www.industry-of-things.de/low-code-bringt-die-digitale-transformation-voran-a-934808/" target="_blank" rel="noopener">um Entwicklungszeit einzusparen, Kosten zu senken und die eigenen Applikationen stets auf dem neuesten Stand zu halten</a>. Gerade für IT- und Fachabteilungen bietet sich damit die Möglichkeit, dem hohen Bedarf an Anwendungen und anderen Tätigkeiten gerecht zu werden.</p><h3>Wohin geht sie nun, die künftige Reise für Low-Code / No-Code?</h3><p>Der IT-Analyst Gartner prognostiziert, dass die Erstellung von Low-Code-Anwendungen, die auch No-Code enthalten, bis zum Jahr 2024 mehr als 65% aller App-Entwicklungsfunktionen ausmachen wird. Bis 2024 werden 75% aller Großkonzerne mindestens vier Low-Code-Entwicklungstools für Aktivitäten sowohl in der IT-Anwendungsentwicklung als auch im Citizen Development einsetzen. Forrester Research prognostiziert, dass sich der Marktanteil von Low-Code bei Business-Anwendungen innerhalb der nächsten Jahre von derzeit elf auf über 30 Prozent vervielfacht. IDC sieht in einem Whitepaper zum Thema Low-Code stark verkürzte Entwicklungszyklen und Vorteile durch Produktivitätssteigerungen von bis zu 25 Prozent.</p><figure id="attachment_1876" aria-describedby="caption-attachment-1876" style="width: 768px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-1876" src="https://www.industrial-devops.org/wp-content/uploads/2021/02/Bild6-e1612535149164.png" alt="Programmierzeilen gehört mit dem modularen Low-Code-Ansatz " width="768" height="254" /><figcaption id="caption-attachment-1876" class="wp-caption-text">Das teils mühsame Coding einzelner Programmierzeilen gehört mit dem modularen Low-Code-Ansatz der Vergangenheit an. (Bild: gemeinfrei / Pixabay )</figcaption></figure><h3>Individuelle Softwarelösungen sind gefragt</h3><p>In nur wenigen Jahren hat sich die Entwicklungstechnologie Low-Code und No-Code zum Gütesiegel für Entwicklungseffizienz und zu einem klaren Wettbewerbsvorteil für Unternehmen gemausert. Statt mühsamen Codings einzelner Programmierzeilen wird bei Low-Code mit Hilfe eines modularen Prinzips gearbeitet. Vorgefertigte Bausteine ersetzen textbasiertes Coding. Dies spart Unternehmen viel Zeit und Geld – und entlastet die knapp bemessenen Ressourcen hauseigener IT-Teams. Beim modularen Baukastenprinzip des Low-Code-Development wird mit Hilfe von Applikationsdesignern, grafischen Methoden und Bibliotheken gearbeitet, um individuelle Softwarelösungen und Geschäftsprozessanwendungen zu erstellen. So können neue Funktionen mit immer komplexeren Anforderungsprofilen in kurzer Zeit umgesetzt werden.</p><h3>COVID-19 und Industrie 4.0</h3><p>Heute denke ich noch oft an dieses imposante Industrial IoT Erlebnis in der Smart Factory von Rittal zurück. Rittal ist ein Musterbeispiel für gelebte Industrie 4.0. Und auch heute in COVID-19 Zeiten ist das industrielle Internet der Dinge mehr als präsent. Aktuell sehen viele Unternehmen zentrale Vorteile im Industrial IoT zur Bewältigung kurzfristiger Herausforderungen. Laut einer aktuellen IDC-Studie planen 59 Prozent der Befragten neue IIoT-Projekte. COVID-19 bremst aktuell sicherlich einige Unternehmen aus, für andere ist es hingegen der Moment, in denen sich ihre Investitionen in neue Technologien und vor allem auch im Industrial IoT auszahlen. Wie Studienergebnisse zeigen, ist die Krise für viele gleichzeitig ein Weckruf, längst notwendige Modernisierungen durchzuführen.</p><p>Denn eins ist klar. Die Bedeutung von Industrie 4.0 für Deutschland kann nicht hoch genug eingeschätzt werden. Industrie 4.0 ist die Voraussetzung für den Erhalt der Wettbewerbsfähigkeit der deutschen Industrie und damit die Sicherung von Arbeitsplätzen.</p><p>Die Chancen sind riesig und dem an Ressourcen armen und Know-how reichen Standort Deutschland kann nichts Besseres passieren als die Digitalisierung in der Industrie.</p><h4>Links</h4><p><a href="https://www.rittal.com/ch-de/content/de/unternehmen/presse/pressemeldungen/pressemeldung_detail_57152.jsp">https://www.rittal.com/ch-de/content/de/unternehmen/presse/pressemeldungen/pressemeldung_detail_57152.jsp</a></p><p><a href="https://de.wikipedia.org/wiki/Industrie_4.0">https://de.wikipedia.org/wiki/Industrie_4.0</a></p><p><a href="https://www.rittal.com/at-de/content/de/unternehmen/presse/pressemeldungen/pressemeldung_detail_96576.jsp">https://www.rittal.com/at-de/content/de/unternehmen/presse/pressemeldungen/pressemeldung_detail_96576.jsp</a></p><p><a href="https://www.bitkom.org/Themen/Digitale-Transformation-Branchen/Industrie-40/Was-ist-Industrie-40-2.html">https://www.bitkom.org/Themen/Digitale-Transformation-Branchen/Industrie-40/Was-ist-Industrie-40-2.html</a></p><p><a href="https://automationspraxis.industrie.de/industrie-4-0/rittal-smart-factory-fertigt-schaltschraenke/">https://automationspraxis.industrie.de/industrie-4-0/rittal-smart-factory-fertigt-schaltschraenke/</a></p><p><a href="https://automationspraxis.industrie.de/news/rittal-pionier-beim-5g-mobilfunk-in-der-produktion/">https://automationspraxis.industrie.de/news/rittal-pionier-beim-5g-mobilfunk-in-der-produktion/</a></p><p><a href="https://www.industry-of-things.de/iot-basics-machine-learning-in-der-smart-factory-a-698047/">https://www.industry-of-things.de/iot-basics-machine-learning-in-der-smart-factory-a-698047/</a></p><p><a href="https://www.twt.de/news/detail/wo-liegt-der-unterschied-zwischen-artificial-intelligence-machine-learning-und-deep-learning.html">https://www.twt.de/news/detail/wo-liegt-der-unterschied-zwischen-artificial-intelligence-machine-learning-und-deep-learning.html</a></p><p><a href="https://www.industry-of-things.de/low-code-ist-integrativ-automatisiert-und-smart-a-960267/">https://www.industry-of-things.de/low-code-ist-integrativ-automatisiert-und-smart-a-960267/</a></p><p><a href="https://www.mendix.com/de/resources/gartner-magic-quadrant-for-low-code-application-platforms/">https://www.mendix.com/de/resources/gartner-magic-quadrant-for-low-code-application-platforms/</a></p><p><a href="https://www.idc.com/getdoc.jsp?containerId=prEUR147017420">https://www.idc.com/getdoc.jsp?containerId=prEUR147017420</a></p><p><a href="https://www.bitkom.org/Themen/Digitale-Transformation-Branchen/Industrie-40/Vision-Industrie-40-2.html">https://www.bitkom.org/Themen/Digitale-Transformation-Branchen/Industrie-40/Vision-Industrie-40-2.html</a></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/die-smarte-fabrik-und-das-internet-der-dinge-ein-industrie-4-0-fallbeispiel/">Die Smarte Fabrik und das Internet der Dinge &#8211; Ein Industrie 4.0 Fallbeispiel</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>titan mit der IoT Welt verbinden</title>
		<link>https://www.industrial-devops.org/titan-mit-der-iot-welt-verbinden/</link>
		
		<dc:creator><![CDATA[Björn Latte]]></dc:creator>
		<pubDate>Mon, 28 Dec 2020 11:34:34 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[IoT NoCode Maker Projekt]]></category>
		<guid isPermaLink="false">https://www.industrial-devops.org/?p=1390</guid>

					<description><![CDATA[<p>Im Winter, in der Dunkelheit, morgens am Auto und alle Scheiben zugefroren. Das warme Smart Home, in dem das sich mit meiner Bewegung durch die Räume einschaltende Licht gerade wieder erlischt, hat das nicht gekümmert. Mich aber jetzt umso mehr, während ich mit kalten Händen die Scheiben vom Eis befreie. Wäre das Licht, welches mich&#8230;&#160;<a href="https://www.industrial-devops.org/titan-mit-der-iot-welt-verbinden/" rel="bookmark">Weiterlesen &#187;<span class="screen-reader-text">titan mit der IoT Welt verbinden</span></a></p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/titan-mit-der-iot-welt-verbinden/">titan mit der IoT Welt verbinden</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1390" class="elementor elementor-1390" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-de8420e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="de8420e" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-18ac9c4" data-id="18ac9c4" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-c84ac61 elementor-widget elementor-widget-text-editor" data-id="c84ac61" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<article class="markdown-body"><p data-sourcepos="7:3-7:311"><em>Im Winter, in der Dunkelheit, morgens am Auto und alle Scheiben zugefroren. Das warme Smart Home, in dem das sich mit meiner Bewegung durch die Räume einschaltende Licht gerade wieder erlischt, hat das nicht gekümmert. Mich aber jetzt umso mehr, während ich mit kalten Händen die Scheiben vom Eis befreie.</em></p><p data-sourcepos="9:4-9:416"><em>Wäre das Licht, welches mich beim Aufstehen im Flur begrüßt nicht nur von morgenfreundlicher Helligkeit gewesen, sondern in einer Farbe, die der Außentemperatur angepasst ist, die Warnung wäre angekommen. Dass es heut&#8216; mal wieder etwas länger dauert und die Handschuhe besser dabei sind, wäre mir &#8222;einleuchtender Weise&#8220; übermittelt worden. Aber dafür reicht es nicht mit der &#8222;Intelligenz&#8220; des Smart Home.</em></p><p data-sourcepos="11:3-11:132"><em>Die Daten sind vorhanden. Die Interfaces sie abzufragen und sie entgegenzunehmen auch. Nur wie finden diese beiden Enden zusammen?</em></p><article class="markdown-body"><h3 data-sourcepos="13:1-13:27">Digitalisierung überall</h3><p data-sourcepos="15:1-15:367">In immer mehr Häusern findet man jetzt Smart Home Installationen, die auf Basis eines ZigBee Funknetzwerks arbeiten. Auch von IKEA ist inzwischen mit Trådfri eine kostengünstige Lösung zu bekommen. Wenig anders sieht es in vielen Betrieben aus, in denen die Zahl der Sensoren und Aktoren ständig steigt und doch die Hürde der Digitalisierung nicht kleiner wird.</p><p data-sourcepos="17:1-17:292">Wie eine für die Digitalisierung von KMUs gedachte Plattform uns bei diesem Problem aus der Heimautomatisierung helfen kann und warum auch solch scheinbar kleine Problemstellungen aufzeigen wie Digitalisierung in der Industrie vor sich gehen kann, macht unser kleines Maker Projekt deutlich.</p><h3 data-sourcepos="19:1-19:18">Schlauer werden</h3><p data-sourcepos="21:1-21:379">Um das Licht jetzt schlauer zu machen, lässt sich hier mit einem Rasperry Pi einem <a href="https://zigbeealliance.org/de/solution/zigbee/">ZigBee</a> Gateway und einer No-Code Plattform nachhelfen. Ein experimenteller Aufbau aus einem Dataflow in der <em>titan</em> Platform , einem Gateway zur Lichtsteuerung und einer Lampe soll exemplarisch dabei einmal zeigen, was mit Daten alles machbar ist. Also machen mein Kollege und ich uns ans Werk.</p><article class="markdown-body"><h4 data-sourcepos="23:1-23:18">ZigBee Gateway</h4><p data-sourcepos="25:1-25:17">Zutaten Hardware:</p><ul data-sourcepos="27:1-30:0"><li data-sourcepos="27:1-27:13"><a href="https://www.raspberrypi.org/">RasperryPi</a></li><li data-sourcepos="28:1-28:32"><a href="http://phoscon.de">RaspBee II</a></li><li data-sourcepos="29:1-30:0">Smartes Leuchtmittel z.B.: <a href="https://www.mueller-licht.de/produktinformationen/artikel/404000/">Müller Licht &#8211; tint White &amp; Color</a> oder IKEA Trådfri</li></ul><figure id="attachment_1631" aria-describedby="caption-attachment-1631" style="width: 300px" class="wp-caption alignright"><img loading="lazy" decoding="async" class="wp-image-1631 size-medium" src="https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0625-300x184.jpg" alt="RasBee II mounted on Pi3 board" width="300" height="184" srcset="https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0625-300x184.jpg 300w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0625-1024x628.jpg 1024w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0625-768x471.jpg 768w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0625-1536x943.jpg 1536w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0625-2048x1257.jpg 2048w" sizes="(max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-1631" class="wp-caption-text">RasBee II auf einem Pi3 Board</figcaption></figure><p data-sourcepos="31:1-31:459">Beim Aufbau des Smart Homes ist es genauso wie in der Industrie bei der Wahl der Steuerung. Man kann sich an einen Hersteller wie z.B. Philips Hue oder Osram Lightify binden. Damit ist man dann aber ebenso an die Launen eben dieses Herstellers gebunden. So fiel die Wahl hier auf das offenere Gateway von Dresden Elektronik. Nicht zuletzt, da es eine gut dokumentierte, Open Source REST API anbietet (<a href="https://github.com/dresden-elektronik/deconz-rest-plugin">https://github.com/dresden-elektronik/deconz-rest-plugin</a>).</p><p data-sourcepos="35:1-35:17">Zutaten Software:</p><ul data-sourcepos="37:1-39:0"><li data-sourcepos="37:1-37:8">deCONZ</li><li data-sourcepos="38:1-39:0">deCONZ REST Plugin</li></ul><p data-sourcepos="40:1-41:361">Der Aufbau des Gateways und auch die Installation der nötigen Software gestalten sich dankbar einfach. Es gilt an dieser Stelle der detaillierten <a href="https://phoscon.de/de/raspbee2/install">Dokumentation</a> auf der Website des Herstellers zu folgen. In der deCONZ GUI oder über die Phoscon APP kann danach das erste Leuchtmittel angelernt werden. Wer nicht immer die GUI geöffnet haben möchte, damit das REST Interface zur Verfügung steht, betreibt dieses im headless Modus, kann danach jedoch auch nicht mehr die deCONZ GUI nutzen. Für Debugging und ähnliche Zwecke muss man dann etwas hin und her wechseln. Auf der Kommandozeile ist dazu der entsprechende Dienst auf <code>enable</code>zu setzen und zu starten.</p></article></article></article>								</div>
				</div>
				<div class="elementor-element elementor-element-f985158 elementor-widget elementor-widget-code-highlight" data-id="f985158" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript ">
				<code readonly="true" class="language-javascript">
					<xmp>sudo systemctl enable deconz 
sudo systemctl start deconz</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-24f10f6 elementor-widget elementor-widget-text-editor" data-id="24f10f6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p data-sourcepos="48:1-48:305">Ohne große Mühe haben wir jetzt dank Dresden Elektronik schon eine mit etlichen nützlichen Features wie Lichtgruppen, Zeit Steuerung, Szenen und weiterem ausgestattet Steuerung. Für sich schon smart, aber nicht smart genug, um mit im Web leicht verfügbaren Informationen mehr aus der Sache zu machen.</p><article class="markdown-body"><h4 data-sourcepos="50:1-50:29">Bring Farbe in Dein Leben</h4><p data-sourcepos="52:1-52:8">Zutaten:</p><ul data-sourcepos="54:1-56:0"><li data-sourcepos="54:1-54:19"><em>titan</em> Plattform</li><li data-sourcepos="55:1-56:0">Datenfluss basierte Programmierung<br /><br /></li></ul><p data-sourcepos="57:1-57:460">Die Temperaturdaten für die farbliche Steuerung der Lampe gibt es aus dem Web. Wir nutzen hier die nach einer Anmeldung frei verfügbare Variante der REST API von OpenWeatherMap (<a href="https://openweathermap.org/api">https://openweathermap.org/api</a>), mit der auch für deinen Ort auf dem Globus Wetterdaten verfügbar sein sollten. Das Abfragekontingent ist großzügig, wenn man es benötigt. Für echte Bastler lässt sich unser Beispiel natürlich auch mit der eigenen Wetterstation realisieren.</p><p data-sourcepos="59:1-59:619">Um jetzt auf der einen Seite die Daten abzuholen und auf der anderen Seite als Steuerinformationen an das Gateway zu übergeben, benötigen wir &#8222;Glue Code&#8220;, der die Arbeit für uns verrichtet. Damit dieser wartbar und veränderbar bleibt, schreiben wir erst gar keinen Code, sondern nutzen die Möglichkeiten der <em>titan</em> Plattform per Datafluss Programmierung eben diese Daten zu holen, zu transformieren und an das Gateway zu senden. Die Elemente der Programmierung werden Bricks genannt und es stehen uns eine Reihe generischer Bricks zur Verfügung, mit denen schon eine Vielzahl an Aufgaben erledigt werden können.</p><p data-sourcepos="61:1-61:180">Am Anfang des Flows steht ein HTTP Request an die REST API von Open Weather. Dafür nutzen wir in <em>titan</em> den <code>HTTPClient</code> Brick mit dem wir die Daten aus dem WWW abfragen können.</p><p data-sourcepos="63:1-63:89">Eine Anfrage zusammen mit dem zuvor bei OpenWeather generierten API Schlüssel für z.B.:</p></article>								</div>
				</div>
				<div class="elementor-element elementor-element-c9a9068 elementor-widget elementor-widget-code-highlight" data-id="c9a9068" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript ">
				<code readonly="true" class="language-javascript">
					<xmp>https://api.openweathermap.org/data/2.5/weather?q=Kiel&units=metric&appid=15a3102429698031a2aacb41b8598bc0</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-499bb0d elementor-widget elementor-widget-text-editor" data-id="499bb0d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>liefert dann neben weiteren Informationen zum aktuellen Wetter die begehrte derzeitige Temperatur am abgefragten Ort:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-0b172fe elementor-widget elementor-widget-code-highlight" data-id="0b172fe" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>{
	"name": "Kiel",
    ...
	"main": {
		"temp": 6.39,
         ...
	},
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-a627d5e elementor-widget elementor-widget-text-editor" data-id="a627d5e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<article class="markdown-body"><figure id="attachment_2076" aria-describedby="caption-attachment-2076" style="width: 1024px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2076 size-large" src="https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_08_16-Titan-Flow-e1615559509148-1024x474.png" alt="Flow der Temperatur zu HLS konvertiert" width="1024" height="474" srcset="https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_08_16-Titan-Flow-e1615559509148-1024x474.png 1024w, https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_08_16-Titan-Flow-e1615559509148-300x139.png 300w, https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_08_16-Titan-Flow-e1615559509148-768x355.png 768w, https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_08_16-Titan-Flow-e1615559509148-1536x710.png 1536w, https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_08_16-Titan-Flow-e1615559509148.png 1849w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption id="caption-attachment-2076" class="wp-caption-text">Flow zur Verbindung einer offenen REST API mit einer über ZigBee angebundenen smarten Lampe.</figcaption></figure></article><article class="markdown-body"><p data-sourcepos="87:1-87:651">Den Startpunkt haben wir, muss nur noch eine Farbe daraus werden, mit der die Lampe gefüttert werden kann. Der <code>HTTPClient</code> liefert den gesamten Body zurück, aus dem wir dann nur die benötigten Daten extrahieren. Der <code>JSONParser</code> wandelt uns zuerst das universelle textuelle Ergebnis in eine Key-Value Map, welche die <em>titan</em> Plattform besser versteht. Den Inhalt der Map, oder besser der Teil der uns interessiert legen wir am Portmapping des Ausgangsports fest. Das von OpenWeather erhaltene JSON enthält den Schlüssel main und darin die begehrte Temperatur. Dazu fügen wir der resultmap ein Element main von Typ map und darunter das Element temp vom Typ float32 hinzu. Das Port Mapping erledigt den Rest für uns, wenn wir das Feld temp auf das Feld celsius des nächsten Bricks zuweisen.</p><figure id="attachment_2077" aria-describedby="caption-attachment-2077" style="width: 1024px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="wp-image-2077 size-large" src="https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_10_25-Titan-Flow-1024x554.png" alt="Port mapping von JSONParser zum TempToHue Brick" width="1024" height="554" srcset="https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_10_25-Titan-Flow-1024x554.png 1024w, https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_10_25-Titan-Flow-300x162.png 300w, https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_10_25-Titan-Flow-768x415.png 768w, https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_10_25-Titan-Flow-1536x831.png 1536w, https://www.industrial-devops.org/wp-content/uploads/2020/12/2021-03-12-15_10_25-Titan-Flow.png 1847w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption id="caption-attachment-2077" class="wp-caption-text">Mit Hilfe von Portmapping werden Daten aus und in den Datenstrom gelenkt.</figcaption></figure><p data-sourcepos="91:1-91:882">Aus der Temperatur werde Farbe. Dies ist eine speziellere Rechenaufgabe für die wir in <em>titan</em> noch keinen generischen Brick gefunden haben mit dem sich dies erledigen ließ. Also doch ein wenig Programmierung. Ein neues Brick Paket muss her, in dem der <code>TemperatureToHUE</code> Brick implementiert wird. Die Anleitung <a href="https://doc.industrial-devops.org/titanDocumentation/titan-flow/how-to-write-Python-bricks/">&#8222;How To Write a Brick&#8220;</a> und das <a href="https://git.industrial-devops.org/titan/brick-packages/template">Template</a> für Brick Pakete helfen bei der Erstellung. Das neue Paket stellen wir dann, dem Open Source Gedanken der Plattform folgend, auch gleich als Repository zur Verfügung. Die Nächsten, die sich einer ähnlichen Aufgabe wie wir stellen, haben den Brick dann gleich zur Verfügung oder müssen zumindest nur noch das entsprechende Paket in Ihrer Instanz hochladen.</p></article><article class="markdown-body"><p data-sourcepos="93:1-93:523">Damit es, wenn es im Winter draußen schön kalt ist, tiefblau leuchtet und im Sommer rot, erstellen wir zuerst einen linearen Gradienten aus dem HLS Farbkreis. Mit der aktuellen Temperatur ermitteln wir dann später den anzuzeigenden Farbton aus diesem Gradienten. Sobald unser neuer Brick in der Plattform hochgeladen ist, erledigt das Port Mapping am Input und Output des Bricks.</p></article>								</div>
				</div>
				<div class="elementor-element elementor-element-c530477 elementor-widget elementor-widget-code-highlight" data-id="c530477" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-python line-numbers">
				<code readonly="true" class="language-python">
					<xmp>from ujotypes import UjoUInt16

import titanfe.log
from titanfe.brick import BrickBase


log = titanfe.log.getLogger(__name__)

HUE_MAX = 65535  # 360°
HUE_COLD = int(HUE_MAX / 360 * 250)  # deep blue at 250°
HUE_HOT = 0  # red at 0°

TEMP_MIN = -20.0
TEMP_MAX = 40.0


def make_gradient(hue_min, hue_max, temp_min, temp_max):
    """ create evenly spaced gradient from low to high"""
    temp_range = range(int(temp_min * 10), int(temp_max * 10) + 1)
    return {
        temp: int(hue_min + step * (hue_max - hue_min) / (len(temp_range) - 1))
        for step, temp in enumerate(temp_range)
    }


class Brick(BrickBase):
    temp_color_gradient = make_gradient(HUE_COLD, HUE_HOT, TEMP_MIN, TEMP_MAX)

    def process(self, input, port):
        try:
            temperature = float(input.value)
        except (ValueError, TypeError) as error:
            log.error("Temperature is not a numeric value: %s", error)
            log.debug("Failed to floatify: %s", input.value, exc_info=True)
            return

        temp = max(min(float(temperature), TEMP_MAX), TEMP_MIN)  # fix temp between -20 to 40°
        temp = round(temp, 1) * 10

        return UjoUInt16(self.temp_color_gradient[temp])</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-e03ff25 elementor-widget elementor-widget-text-editor" data-id="e03ff25" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<article class="markdown-body"><p data-sourcepos="139:1-139:324">Damit der Farbton bei der Anzeige auch passt, muss dem Kommando an die Lampe auch noch die Sättigung und die Helligkeit mit übermittelt werden. Wer weiß, welche Lichtstimmung zuletzt im Flur angesagt war. Für die Aufgabe Festwerte in den Datenstrom des Flows zu injizieren gibt es die Konstanten im Portmapping, die mit den passenden Werten belegt und in das <code>Payload</code> Feld des <code>HTTPWriter</code> gemappt werden.</p></article><article class="markdown-body"><p data-sourcepos="141:1-141:561">Das Kommando an das ZigBee Gateway geht dann per <code>HTTPWriter</code> im Body des Request raus. Dazu muss am Brick nur die aufzurufende URL parametrisiert und per Port Mapping die einzelnen Felder aus dem Datenstrom an das <code>Payload</code>Feld des Bricks übergeben werden. Den Aufbau der Map für den Payload wird im Portmapping Dialog der Verbindung zum HTTPWriter angelegt. Die nötigen Infos über die Parameter des Kommandos finden sich in der deCONZ API Dokumentation beim <a href="https://dresden-elektronik.github.io/deconz-rest-doc/endpoints/lights/#set-light-state">Set State Kommando für Lampen</a>. Die Umwandlung des UJO Objekts aus dem Flow in JSON übernimmt das Port Mapping und der Brick.</p></article>								</div>
				</div>
				<div class="elementor-element elementor-element-ae3a579 elementor-widget elementor-widget-code-highlight" data-id="ae3a579" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>{ 
  "bri": 10,
  "hue": 15170,
  "sat": 255
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-45eef48 elementor-widget elementor-widget-text-editor" data-id="45eef48" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<article class="markdown-body"><h3 data-sourcepos="151:1-151:33">Bereit für die nächste Stufe</h3></article><article class="markdown-body"><p data-sourcepos="153:1-153:617"><img loading="lazy" decoding="async" class="size-medium wp-image-1646 alignleft" src="https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0630-162x300.jpg" alt="tint Lamp with blue color" width="162" height="300" srcset="https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0630-162x300.jpg 162w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0630-554x1024.jpg 554w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0630-768x1421.jpg 768w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0630-830x1536.jpg 830w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0630-1107x2048.jpg 1107w, https://www.industrial-devops.org/wp-content/uploads/2021/01/DSC_0630-scaled.jpg 1384w" sizes="(max-width: 162px) 100vw, 162px" />Für den nächsten kalten Tag, an dem ich jetzt rechtzeitig gewarnt werde, dass Eiskratzen angesagt ist, sorgt die Natur. Mehr Ideen, was man noch alles mit Daten aus dem Netz und Datenfluss Programmierung machen kann, kommen bestimmt auch noch. Wie einfach sich Digitalisierung erreichen lässt und dass es uns mit der Plattform, den Bricks und Flows möglich sein wird, diese in iterativer und einfach Form anzugehen, hat der Ausflug in die Heimautomation gezeigt. Die meisten Aufgaben waren mit allgemeinen Bausteinen lösbar. Nur dort, wo wirklich spezielle Dinge benötigt werden, muss noch Hand angelegt werden.</p><p data-sourcepos="155:1-155:405">Übertragbar ist dies in den industriellen Bereich. Auch dort gibt es einen Reichtum an Daten, die nur darauf warten, in die passende Form gebracht und den ebenfalls schon bereitstehenden Endpunkten übergeben zu werden . Klein anzufangen und einen Datenfluss dann fortlaufend zu erweitern und an die Gegebenheiten anzupassen, anstelle einer großen Lösung auf einmal, erscheint dabei völlig natürlich.</p></article>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/titan-mit-der-iot-welt-verbinden/">titan mit der IoT Welt verbinden</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Digitale Transformation in der Produktion</title>
		<link>https://www.industrial-devops.org/industrial-devops-digitale-transformation-in-der-produktion/</link>
		
		<dc:creator><![CDATA[Maik Wojcieszak]]></dc:creator>
		<pubDate>Thu, 12 Nov 2020 09:59:14 +0000</pubDate>
				<category><![CDATA[Generell]]></category>
		<category><![CDATA[CALMS Metriken Messen Monitoren Informationen teilen wenig Programmierer Digitale Souveränität]]></category>
		<guid isPermaLink="false">https://www.industrial-devops.org/?p=809</guid>

					<description><![CDATA[<p>Die Digitale Transformation ist kein Hype, der vorübergeht, sondern die konsequente Anpassung an eine veränderte Situation. Selbst in Märkten, die bisher als unangreifbar galten, müssen sich die etablierten Unternehmen neuen Mitbewerbern stellen, die scheinbar aus dem Nichts auftauchen. </p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/industrial-devops-digitale-transformation-in-der-produktion/">Digitale Transformation in der Produktion</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="809" class="elementor elementor-809" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-d849ce0 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="d849ce0" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-884889e" data-id="884889e" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-e133276 elementor-widget elementor-widget-text-editor" data-id="e133276" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die Digitale Transformation ist kein Hype, der vorübergeht, sondern die konsequente Anpassung an eine veränderte Situation. Selbst in Märkten, die bisher als unangreifbar galten, müssen sich die etablierten Unternehmen neuen Mitbewerbern stellen, die scheinbar aus dem Nichts auftauchen.</p>
<p>Die von Unternehmen gesteuerte Werbung ist nicht mehr die einzige Informationsquelle, die Kunden zur Verfügung steht. Selbstbewusst werden im Netz Bewertungen geteilt und Foren genutzt, um sich eine Meinung vom Wert und der Qualität eines Produkts oder einer Dienstleistung zu bilden.</p>
<p>Was heute für Kunden noch interessant ist, kann morgen bereits Schnee von gestern sein.</p>
<p>Startups sind in der Lage, Digitale Geschäftsmodelle mit einem Bruchteil der Ressourcen umzusetzen, die noch vor wenigen Jahren erforderlich waren.</p>
<p>Unternehmen mit digitalen Dienstleistungen wie Amazon, Netflix, Otto.de und viele andere haben gelernt, mit der neuen Welt umzugehen und sie als Chance zu nutzen. DevOps steht dabei als Oberbegriff für Technologien, Methoden, Werte und Prinzipien, die diesen Unternehmen helfen schnell und zielsicher auf Veränderung zu reagieren.</p>
<p>Wie können diese Erfahrungen der Digitalunternehmen übertragen werden auf Unternehmen, die für ihre Wertschöpfung physikalische Maschinen und Produktionsanlagen nutzen?</p>
<h3>Das Ziel</h3>
<p>„Never touch a running system!” – Wenn es erstmal läuft möglichst nichts mehr verändern, ist ein Credo, das wir besser zurück ins 20. Jahrhundert schicken und vergessen. Schnelle Reaktionen auf neue Anforderungen sind nur möglich, wenn die Veränderung zur Norm wird.</p>
<p>Wie produzierte und eingelagerte, unfertige Teile sind neue Systemfunktionen, die zwar entwickelt sind, aber nicht genutzt werden, gebundenes Kapital, das keinen Gewinn bringt oder einen anderen Mehrwert schafft.  Kurzfristige Markchancen werden möglicherweise nicht genutzt.</p>
<p>Das Ziel von DevOps ist deshalb die kontinuierliche Auslieferung neuer Softwareversionen (continuous delivery = CD) in die Produktion. Dabei sind mehrere Aktualisierungen täglich denkbar und machbar. Sogar Aktualisierungen in der laufenden Produktion sind heute technisch umsetzbar, sicher und nutzenbringend.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-52dbda8 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="52dbda8" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-77a4d70" data-id="77a4d70" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-5d2fa8f elementor-widget elementor-widget-text-editor" data-id="5d2fa8f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-size: 25px; font-weight: 600; letter-spacing: 0px;">CALMS: Das Fundament für den Erfolg</span></p><p>Bei all der Flexibilität von Software, stellt die ständige Veränderung eines komplexen Systems hohe Anforderungen an die Qualität der Umsetzung. Damit das gelingt prägte die DevOps Community das Akronym CALMS (Abbildung 1) und beschreibt damit die Grundpfeiler für den Erfolg.</p><figure id="attachment_811" aria-describedby="caption-attachment-811" style="width: 413px" class="wp-caption alignright"><img loading="lazy" decoding="async" class="wp-image-811" src="https://www.industrial-devops.org/wp-content/uploads/2020/11/test.png" alt="CALMS" width="413" height="210" srcset="https://www.industrial-devops.org/wp-content/uploads/2020/11/test.png 1024w, https://www.industrial-devops.org/wp-content/uploads/2020/11/test-300x153.png 300w, https://www.industrial-devops.org/wp-content/uploads/2020/11/test-768x391.png 768w" sizes="(max-width: 413px) 100vw, 413px" /><figcaption id="caption-attachment-811" class="wp-caption-text">Abb. 1: Das Fundament von DevOps</figcaption></figure><p>In vielen Artikeln und Veröffentlichungen zum Thema Digitale Transformation wird deutlich, wie wichtig die Unternehmenskultur ist. Digitale Unternehmen stellten bereits fest, dass ohne eine passende Kultur DevOps nur Theater ohne Effekt ist. Die Gründe hierfür sind vielfältig.</p><p>Standardisierung und Automatisierung komplexer Arbeitsabläufe sind für eine reproduzierbare Qualität unerlässlich. Manuelle Arbeitsschritte sind langsam und fehleranfällig. Während Industrie 4.0 die Automatisierung und Flexibilisierung durch Maschinen in der Produktion adressierte steht bei Industrial DevOps die wachsende Integration digitaler Systeme über Abteilungs- und Unternehmensgrenzen hinweg im Mittelpunkt.</p><p>Komplexe Softwareprojekte sind teuer.  Digitale Unternehmen haben jedoch lange Entscheidungswege und teilweise unnötigen administrativen Aufwand als mögliche Ursachen dafür identifiziert.</p><p>So wurde das L eingefügt, um die Rolle der Lean Prinzipien und Methoden in DevOps zu unterstreichen. Lean stammt aus dem Toyota Production System (TPS) und soll unter anderem erreichen, wertschöpfende Arbeitsschritte zu stärken und Arbeiten, die keinen Wert liefern (Waste) zu reduzieren. Hier schließt sich interessanterweise der Kreis, denn Lean ist in der Industrie seit langem bekannt und wird erfolgreich angewendet.</p><h3>Metriken, Messen und Monitoren</h3><p>Das M für Messungen oder auch alternativ für Monitoring bildet die Grundlage der Analyse, Optimierung und Validierung des Gesamtsystems. Je besser die Messungen, desto schneller können Engstellen, Probleme aber auch Chancen und Potentiale erkannt werden.</p><p>In digitalen Unternehmen zeigen Dashboards zu jeder Zeit den aktuellen Zustand des Systems. Wird ein System zum Beispiel durch ein Softwareupdate verändert oder Server, Netzwerk und andere IT-Infrastruktur funktioniert nicht mehr korrekt, so kann das Problem schnell erkannt, analysiert und (vielleicht sogar automatisch) behoben werden.</p><p>In produzierenden Unternehmen helfen Maschinendaten zusätzlich nötige Wartung zu erkennen und so Ausfälle zu vermeiden (Predictive Maintenance).</p><p>Messungen helfen Fehler schnell zu erkennen und zu beheben. So werden die Auswirkungen von Fehlern reduziert und gleichartige Fehler zukünftig vermeidbar.</p><h3>Informationen teilen</h3><p>Zentral erfasste Daten stehen allen Beteiligten in Echtzeit zur Verfügung.  Das stellt die Grundlage für das S, dem Sharing, dar. Technische Systeme verändern sich in der Regel nicht von allein (zumindest nicht zum Besseren). Dazu bedarf es der Kreativität und der Erfahrung von Menschen, die mit dem System arbeiten und ihr Fachwissen einbringen. Teamarbeit und ein gemeinsames Verständnis für die aktuelle Situation, sowie für die Anforderungen erfordert Transparenz und niedrige Hürden, die benötigten Informationen zu erhalten und zu verstehen.</p><h3>Industrial DevOps</h3><figure id="attachment_812" aria-describedby="caption-attachment-812" style="width: 364px" class="wp-caption alignright"><img loading="lazy" decoding="async" class="wp-image-812" src="https://www.industrial-devops.org/wp-content/uploads/2020/11/IMG_0131.jpg" alt="Industrial-DevOps Loop" width="364" height="364" srcset="https://www.industrial-devops.org/wp-content/uploads/2020/11/IMG_0131.jpg 1920w, https://www.industrial-devops.org/wp-content/uploads/2020/11/IMG_0131-300x300.jpg 300w, https://www.industrial-devops.org/wp-content/uploads/2020/11/IMG_0131-1024x1024.jpg 1024w, https://www.industrial-devops.org/wp-content/uploads/2020/11/IMG_0131-150x150.jpg 150w, https://www.industrial-devops.org/wp-content/uploads/2020/11/IMG_0131-768x768.jpg 768w, https://www.industrial-devops.org/wp-content/uploads/2020/11/IMG_0131-1536x1536.jpg 1536w" sizes="(max-width: 364px) 100vw, 364px" /><figcaption id="caption-attachment-812" class="wp-caption-text">Abbildung 2: Industrial DevOps</figcaption></figure><p>Viele der bereits erprobten DevOps Werkzeuge und Methoden helfen Softwareaktualisierungen routinemäßig in die Produktion zu bringen. Die enge Verflechtung von Software und physikalischen Maschinen bringt jedoch neue Herausforderung mit sich.</p><p>Wenn Maschinen, Sensoren und Aktoren durch Software verbunden werden, entstehen Cyber-Physikalische Systeme.</p><p>Abbildung 2 zeigt, wie Geschäftsfunktionen, Softwareentwicklung, Softwarebetrieb und Produktion im Unternehmen kontinuierlich und transparent zusammenarbeiten.</p><p>Digitale Unternehmen haben gelernt, Herausforderungen ganzheitlich anzugehen. Die Erweiterung BizDevOps, also die Einbeziehung der Geschäftsfunktionen (Biz) oder DevOpsSec die unterstreicht wie wichtig IT-Security ist, sind logische Weiterentwicklungen. Industrial DevOps schließt nun die Lücke zwischen der virtuellen Welt der Software und der physikalischen Welt der Maschinen, Sensoren und Aktoren.</p><p>Unter anderem werden dafür Wissensbereiche wie das Internet of Things (IoT), Fog Computing, Smart Manufactoring sowie Entwicklung und Test von Embedded Software unter dem Oberbegriff Industrial DevOps in einem neuen Licht betrachtet. Auch für die Konstruktion von Produktionsanlagen und Maschinen ergeben sich interessante Aspekte. DevOps bringt zusätzlich unter anderem Themen wie Lean, Agile, Systems Thinking und natürlich auch Künstliche Intelligenz als wichtiges Werkzeug mit.</p><h3>Hardware auf „Vorrat“</h3><p>Bei Neuinvestitionen sind die Kosten für Maschinen und Sensoren im Verhältnis zur Softwareentwicklung gesunken. Die rein physikalische Vernetzung von z.B. Sensoren ist heute ohne großen Aufwand machbar. Wieso also nicht mehr einbauen als aktuell nötig und mit Hilfe von Software nach und nach das System verbessern, erweitern und an neue Herausforderungen anpassen?</p><p>Auch Maschinenhersteller können bei der Entwicklung darauf verzichten jede nur denkbare Funktion in ihrer Firmware umzusetzen und stattdessen Hardware auf Vorrat einbauen und die Software je nach Bedarf anpassen.</p><p>So können Kunden neue Funktionen erhalten, wenn sie benötigt werden. Für die Auslieferung ist dann lediglich ein Softwareupdate nötig. Auch Telemetriedaten können so verfeinert werden und helfen die Maschine immer weiter zu verbessern. Die Auswertung der Telemetrie ist ein zusätzlicher möglicher Vorteil für Kunden.</p><h3>Es gibt zu wenig Programmierer</h3><p>Müssen jetzt alle Unternehmen Softwareabteilungen aufbauen, die ein Heer von Programmierern beschäftigen? Große Unternehmen gehen genau diesen Weg und entwickeln individuelle Software für das Kerngeschäft selbst. Auch Startups erarbeiten sich mit eigenen Softwarelösungen ihren Platz im Markt.</p><p>Wenn jedoch alle Unternehmen beginnen Softwareabteilungen aufzubauen, werden geeignete Bewerberinnen und Bewerber knapp und damit teuer. Die Auswirkungen sind bereits jetzt deutlich zu erkennen. Es ist zu erwarten, dass die Kosten für qualifiziertes Personal in den nächsten Jahren weiter steigen. Besonders kleine und mittelständische Unternehmen können dann möglicherweise bei der Digitalisierung abgehängt werden.</p><p>Analysten wie Gartner sehen in LowCode und No-Code Programmierung eine Möglichkeit, diesem Trend zu begegnen. Fachkräfte ohne Programmierkenntnisse sind damit in der Lage, einen großen Teil der täglichen Anforderungen selbst umzusetzen. Besonders die Übersetzung von Datenformaten und die Verbindung von Systemkomponenten sollte im täglichen Geschäft routinemäßig zu leisten sein.</p><p>Die nötigen Softwarekomponenten werden von Herstellern der Hardware geliefert oder von Dienstleistern entwickelt. Eine Plattform liefert Lösungen für Standardaufgaben. Die Entwicklung von Komponenten wird damit vereinfacht und so schneller und günstiger.</p><h3>Digitale Souveränität</h3><p>Bei der Auswahl einer geeigneten Plattform oder Anwendung sollte die eigene Digitale Souveränität an erster Stelle stehen. Es ist schließlich das Kerngeschäft, um das es geht. Mit der Zeit entstehen umfangreiche Systeme. Die Low-Code/No-Code Anwendung ist dabei der „Leim“ der die Komponenten des Systems miteinander verbindet. Hier entsteht leicht eine Abhängigkeit vom Softwareanbieter, die zum Problem werden kann, wenn sich zum Beispiel Firmenpolitik oder Lizenzbedingungen ändern.</p><p>Besonders mittelständische Unternehmen stoßen möglicherweise bei großen Herstellern auf Schwierigkeiten, die eigenen Anforderungen durchzusetzen. Quelloffene Lizenzmodelle bieten eine gute Alternative zum „Do It Yourself“ (DIY). Der Kontakt zur Community und die aktive Beteiligung hilft das Projekt im eigenen Sinn zu beeinflussen. Das erfordert Aufwand und Einsatz, der sich jedoch schnell auszahlt.</p><h3>Digitale Transformation? Ja, bitte!</h3><p>Wie DevOps ist auch Industrial DevOps nicht das Ziel, sondern der Weg. Unternehmen sind gefordert, sich dem Tempo der Marktveränderung anzupassen. Kontrolliert Fehler machen und daraus lernen, gehört ebenso dazu wie eine schonungslos realistische Wahrnehmung der inneren und äußeren Situation des eigenen Unternehmens. In einer komplexer werdenden Welt sind richtige Antworten schwer zu finden. Was für den einen richtig ist, kann für den anderen falsch sein.</p><p>Software liefert die nötigen Freiheitsgrade, schafft Verbindungen wo Verbindungen nötig sind und lässt sich schnell an neue Herausforderungen anpassen.</p><p>Für Entscheider ist es wichtig langfristige Ziele zu haben und diese nicht aus den Augen zu verlieren. Der Weg zum Ziel ist dabei keine gut durchgeplante Autobahn, sondern gleicht eher einer Expedition in unbekanntes Gebiet. Hier gibt es Überraschungen und Umwege aber auch Chancen, die erst offensichtlich werden, wenn bereits ein Stück des Weges zurückgelegt ist.</p><p>Digitale Unternehmen haben bereits gelernt mit komplexen Systemen und Herausforderungen umzugehen und ihnen mit Software zu begegnen.</p><p>Industrial DevOps soll dazu inspirieren über den Tellerrand zu schauen und die Leistungsfähigkeit moderner, verteilter IT-Systeme in produzierenden Unternehmen zu nutzen, Mehrwerte durch Software zu schaffen und Veränderung als Chance zu sehen.</p><h3>Links</h3><p>Digital transformation: online guide to digital business transformation; <a href="https://www.i-scoop.eu/digital-transformation/" target="_blank" rel="noopener">https://www.i-scoop.eu/digital-transformation/</a></p><p>Russell L. Ackoff; <a href="https://en.wikipedia.org/wiki/Russell_L._Ackoff" target="_blank" rel="noopener">https://en.wikipedia.org/wiki/Russell_L._Ackoff</a></p><p>If Russ Ackoff had given a TED Talk&#8230;; <a href="https://youtu.be/OqEeIG8aPPk" target="_blank" rel="noopener">https://youtu.be/OqEeIG8aPPk</a></p><p>What is BizDevOps?; <a href="https://enterprisersproject.com/article/2019/9/devops-what-is-bizdevops" target="_blank" rel="noopener">https://enterprisersproject.com/article/2019/9/devops-what-is-bizdevops</a></p><p>Applying DevOps and Continuous Delivery to Significant Cyber-Physical Systems; <a href="https://itrevolution.com/book/industrial-devops/" target="_blank" rel="noopener">https://itrevolution.com/book/industrial-devops/</a></p><p>Industrial DevOps; <a href="https://www.researchgate.net/publication/333062727_Industrial_DevOps" target="_blank" rel="noopener">https://www.researchgate.net/publication/333062727_Industrial_DevOps</a></p><p>Was ist Embedded Software?; <a href="https://www.dev-insider.de/was-ist-embedded-software-a-579399/" target="_blank" rel="noopener">https://www.dev-insider.de/was-ist-embedded-software-a-579399/</a></p><p>Fog computing: decentralized approach for IoT clouds; <a href="https://www.ionos.com/digitalguide/server/know-how/fog-computing/">https://www.ionos.com/digitalguide/server/know-how/fog-computing/</a></p><p>Why Smart Manufacturing?; <a href="https://spectrum.ieee.org/consumer-electronics/standards/why-smart-manufacturing" target="_blank" rel="noopener">https://spectrum.ieee.org/consumer-electronics/standards/why-smart-manufacturing</a></p><h3>Weitere Referenzen</h3><p>Erfolgreiches Management von Instabilität; Peter Kruse; GABAL Verlag GmbH</p><p>Lean Enterprise; Humble, Molesky, O’Reilly; 2014 O&#8217;Reilly Media, Inc.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/industrial-devops-digitale-transformation-in-der-produktion/">Digitale Transformation in der Produktion</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Datenstrukturen dokumentieren</title>
		<link>https://www.industrial-devops.org/datenstrukturen-dokumentieren/</link>
		
		<dc:creator><![CDATA[Maik Wojcieszak]]></dc:creator>
		<pubDate>Thu, 02 Jul 2020 12:00:01 +0000</pubDate>
				<category><![CDATA[Generell]]></category>
		<guid isPermaLink="false">http://232749.webhosting70.1blu.de/industrial-devops-wp/?p=204</guid>

					<description><![CDATA[<p>Die titan Datenbeschreibungssprache UJO Schema erlaubt nicht nur die Beschreibung der eigentlichen Datenstruktur, sondern bietet auch Möglichkeiten umfangreich zu dokumentieren. So kann an einer Stelle die technische Beschreibung und die Dokumentation gepflegt werden, was es wesentlich erleichtert, beide auf einem aktuellen Stand zu halten. Selbst wenn zu Beginn eines Projekts Datenstrukturen gut dokumentiert sind, wird&#8230;&#160;<a href="https://www.industrial-devops.org/datenstrukturen-dokumentieren/" rel="bookmark">Weiterlesen &#187;<span class="screen-reader-text">Datenstrukturen dokumentieren</span></a></p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/datenstrukturen-dokumentieren/">Datenstrukturen dokumentieren</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="204" class="elementor elementor-204" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5baef0b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5baef0b" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a09bfae" data-id="a09bfae" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-bbb60c8 elementor-widget elementor-widget-text-editor" data-id="bbb60c8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die titan Datenbeschreibungssprache UJO Schema erlaubt nicht nur die Beschreibung der eigentlichen Datenstruktur, sondern bietet auch Möglichkeiten umfangreich zu dokumentieren. So kann an einer Stelle die technische Beschreibung und die Dokumentation gepflegt werden, was es wesentlich erleichtert, beide auf einem aktuellen Stand zu halten.</p><p>Selbst wenn zu Beginn eines Projekts Datenstrukturen gut dokumentiert sind, wird dieser Aspekt mit der Zeit oft vernachlässigt. Wenn das passiert, passen die realen Daten mit der Zeit immer weniger zur Dokumentation. Um diese Lücken wieder zu schließen, sind aufwendige Analysen erforderlich. Was sich jemand beim Erstellen der Datenstruktur gedacht hat, ist so allerdings nicht mehr zu ermitteln und für immer verloren.</p><p>In den drei vorangegangenen Blogs <a href="https://industrial-devops.org/blog/ujoschema-20200429/"><em>Es sind die Daten, Dummchen</em></a>, <a href="https://industrial-devops.org/blog/schema-explained-20200518/"><em>Typen gibt’s</em></a> und <a href="https://industrial-devops.org/blog/schema-constraints-20200525/"><em>Grenzen setzen</em></a> wurde erklärt wie mit UJO Schema Datenstrukturen beschrieben werden. Auch wenn die dort gezeigten Beispiele relativ leicht verständlich sind, ist es sinnvoll Informationen hinzuzufügen, die zwar technisch keine Rolle spielen, aber für das Verständnis der Daten wichtig sind.</p><p>Das Folgende Beispiel zeigt einen Datentyp, der einen bestimmten Status als Zahlenwert darstellt.</p><pre><code>status = int32
    : in (0 ,1, 2, 3 ,4);
</code></pre><p>Was die einzelnen Werte aussagen, oder wofür der Status verwendet wird ist nicht ersichtlich. Fügt man jedoch mit dem Schlüsselwort <code>doc</code> entsprechende Beschreibungen ein, wird klar, worum es dabei geht.</p><pre><code>status = int32
    : in (
        0 : doc "offline",
        1 : doc "warten",
        2 : doc "daten empfangen",
        3 : doc "drucken",
        4 : doc "Fehler"
    )
: doc "Aktuelle Aktivität eines Druckers";
</code></pre><p>Jeder mit der Einschränkung <code>in</code> definierte Wert ist dokumentiert. Die Dokumentation des Datentyps <code>status</code> steht am Ende. So wird deutlich, wie die Werte interpretiert werden und welchen Zweck sie erfüllen.</p><p>So kann aus der rein technischen Beschreibung auch eine Online-Dokumentation generiert werden:</p><hr /><h3 id="status">status</h3><p>Aktuelle Aktivität eines Druckers</p><table><thead><tr><th>Identifier</th><th>Type</th><th>Constraints</th></tr></thead><tbody><tr><td>status</td><td>int32</td><td>in <a href="https://industrial-devops.org/blog/schema-doc-20200605/#status-in-values">Values</a></td></tr></tbody></table><h3 id="status-in-values">status in Values</h3><table><thead><tr><th>Value</th><th>Description</th></tr></thead><tbody><tr><td>0</td><td>offline</td></tr><tr><td>1</td><td>warten</td></tr><tr><td>2</td><td>daten empfangen</td></tr><tr><td>3</td><td>drucken</td></tr><tr><td>4</td><td>Fehler</td></tr></tbody></table><hr /><p>Damit auch ausführlichere Texte gut lesbar zu formatieren sind, wird mit dreifachen Anführungszeichen <code>"""..."""</code> über mehrere Zeilen dokumentiert. Dabei werden <a href="https://markdown.de/">Markdown Formatierungen</a> verwendet.</p><pre><code>number = (int32, int64, float32, float64)
: doc """Zahlenwert im [__JSON__](https://www.json.org) Stil.  
Eine Aufstellung der verwendeten _Datentypen_ ist
[hier](https://www.geeksforgeeks.org/json-data-types/) zu finden.

__folgende Typen sind möglich:__

- string
- number
- boolean
- null
- object
- array
""";
</code></pre><p>Das Beispiel zeigt, wie einfach eine gut lesbare Dokumentation mit zusätzlichen Links angereichert wird. Übersetzt in eine Online-Dokumentation sieht es dann wie folgt aus:</p><hr /><h3 id="number">number</h3><p>Zahlenwert im <a href="https://www.json.org/"><strong>JSON</strong></a> Stil. Eine Aufstellung der verwendeten <em>Datentypen</em> ist <a href="https://www.geeksforgeeks.org/json-data-types/">hier</a> zu finden.</p><p><strong>folgende Typen sind möglich:</strong></p><ul><li>string</li><li>number</li><li>boolean</li><li>null</li><li>object</li><li>array</li></ul><table><thead><tr><th>Identifier</th><th>Type</th><th>Constraints</th></tr></thead><tbody><tr><td>number</td><td>[int32, int64, float32, float64]</td><td> </td></tr></tbody></table><hr /><h3 id="records-und-objekte-dokumentieren">Records und Objekte dokumentieren</h3><pre><code>drucker = [
    drucker_id      =   string   : not null : doc "Eindeutige Bezeichnung der Maschine",
    drucker_status  =   status   : not null : doc "Maschinenstatus",
    drucker_online  =   int64               : doc "Sekunden online"
] : doc "Aktuelle Informationen des Druckers";
</code></pre><p>In diesem Beispiel wird der oben deklarierte Datentyp <code>status</code> verwendet. Beim Erzeugen der Dokumentation wird automatisch ein entsprechender Link erzeugt.</p><hr /><h3 id="drucker">drucker</h3><p>Aktuelle Informationen des Druckers.</p><p>Items:</p><table><thead><tr><th>Name</th><th>Type</th><th>Doc</th><th>Constraints</th></tr></thead><tbody><tr><td>drucker_id</td><td>string</td><td>Eindeutige Bezeichnung der Maschine</td><td>[not null]</td></tr><tr><td>drucker_status</td><td><a href="https://industrial-devops.org/blog/schema-doc-20200605/#status">status</a></td><td>Maschinenstatus</td><td>[not null]</td></tr><tr><td>drucker_online</td><td>int64</td><td>Sekunden online</td><td> </td></tr></tbody></table><hr /><p>In gleicher Weise können die Druckerinformationen auch als Objekt beschrieben werden.</p><pre><code>drucker = {
    "drucker_id"      -&gt;   string   : not null : doc "Eindeutige Bezeichnung der Maschine",
    "drucker_status"  -&gt;   status   : not null : doc "Maschinenstatus",
    "drucker_online"  -&gt;   int64               : doc "Sekunden online"
 } : doc "Aktuelle Informationen des Druckers";
</code></pre><h3 id="fazit">Fazit</h3><p>So entsteht quasi nebenbei eine Dokumentation der Datenstrukturen zusammen mit der technischen Beschreibung für die automatische Prüfung von Daten. Die navigierbare, verlinkte HTML Version der Dokumentation lässt sich automatisch generieren und aktualisieren.</p><hr /><blockquote><p>Interesse geweckt? &#8211; Bald gibt es mehr Infos zu titan. Folge uns auf Twitter <a href="https://www.twitter.com/InDevOps_Titan">@InDevOps_Titan</a></p></blockquote><blockquote><p>Hier findest Du das Projekt <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py">ujoschema-py</a></p></blockquote><p>Titel Photo by Andrea Piacquadio from Pexels</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/datenstrukturen-dokumentieren/">Datenstrukturen dokumentieren</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Grenzen setzen</title>
		<link>https://www.industrial-devops.org/grenzen-setzen/</link>
		
		<dc:creator><![CDATA[Maik Wojcieszak]]></dc:creator>
		<pubDate>Sat, 06 Jun 2020 11:57:08 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://232749.webhosting70.1blu.de/industrial-devops-wp/?p=198</guid>

					<description><![CDATA[<p>Bei der Kommunikation zwischen Systemen und Systemkomponeten kommt es zu Fehlern. Häufig sind mehrdeutige oder falsche Daten die Ursache für diese Fehler. Die titan Datenbeschreibungssprache UJO Schema wurde bereits in den Blog-Beiträgen&#160;Es sind die Daten, Dummchen!&#160;und&#160;Typen gibt’s!&#160;vorgestellt. Dieser Beitrag erläutert wie man Daten mit UJO Schema eingrenzt, damit Fehler frühzeitig und automatisch erkannt werden. Es&#8230;&#160;<a href="https://www.industrial-devops.org/grenzen-setzen/" rel="bookmark">Weiterlesen &#187;<span class="screen-reader-text">Grenzen setzen</span></a></p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/grenzen-setzen/">Grenzen setzen</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="198" class="elementor elementor-198" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-938f46f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="938f46f" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-075df4c" data-id="075df4c" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a009ae6 elementor-widget elementor-widget-text-editor" data-id="a009ae6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Bei der Kommunikation zwischen Systemen und Systemkomponeten kommt es zu Fehlern. Häufig sind mehrdeutige oder falsche Daten die Ursache für diese Fehler. Die titan Datenbeschreibungssprache UJO Schema wurde bereits in den Blog-Beiträgen <a href="https://industrial-devops.org/blog/ujoschema-20200429/"><em>Es sind die Daten, Dummchen!</em></a> und <a href="https://industrial-devops.org/blog/schema-explained-20200518/"><em>Typen gibt’s!</em></a> vorgestellt. Dieser Beitrag erläutert wie man Daten mit UJO Schema eingrenzt, damit Fehler frühzeitig und automatisch erkannt werden.</p><p>Es lässt sich nicht ausschließen, dass Fehler in komplexen Systemen auftreten. Unser Ziel ist es also nicht Fehler grundsätzlich zu verhindern. Vielmehr wollen wir mit der strikten Typisierung in UJO Schema</p><ul><li>Fehler so früh wie möglich erkennen.</li><li>die negativen Auswirkungen von Fehlern minimieren.</li><li>Die Fehleranalyse und Behebung erheblich vereinfachen und so die mittlere Zeit bis zur Behebung eines Fehlers (MTR &#8211; Mean Time to Repair) reduzieren.</li></ul><p>In der Programmiersprache <a href="https://de.wikipedia.org/wiki/Ada_(Programmiersprache)">ADA</a> wird die strikte Typisierung eingesetzt, um Mehrdeutigkeiten und Fehler durch unreflektierte Datenstrukturen zu minimieren. Da ADA für den Einsatz in militärischen Systemen entwickelt wurde ist die Notwendigkeit dafür sicher leicht nachvollziehbar.</p><blockquote><p>A type is used to reason about the objects a program manipulates (an object is a variable or a constant). The aim is to classify objects by what you can accomplish with them (i.e., the operations that are permitted), and this way you can reason about the correctness of the objects’ values.<br /><a href="https://learn.adacore.com/courses/intro-to-ada/chapters/strongly_typed_language.html">https://learn.adacore.com/courses/intro-to-ada/chapters/strongly_typed_language.html</a></p></blockquote><h3 id="daten-einschränken">Daten einschränken</h3><p>Damit das gelingt werden Daten auf auschließlich gültige Werte eingeschränkt. Das titan-System kann so falsche Daten identifizieren, melden und die weitere Verarbeitung stoppen. Eine umständliche Fehlersuche entfällt. Werden Daten für die Steuerung von Aktoren wie zum Beispiel Motoren genutzt, hilft die Überprüfung sogar dabei Schäden durch falsche Daten zu verhindern.</p><pre><code>mytype = int
    : 
    : 
    : &lt;...&gt;
    : ;
</code></pre><p>Das obere Beispiel zeigt, wie Einschränkungen einer Typdefinition angefügt werden.</p><h3 id="zahlen-und-wertebereiche">Zahlen und Wertebereiche</h3><p>Die wohl häufigste Einschränkung bezieht sich auf die möglichen Werte, die ein Datenfeld annehmen kann. Dabei werden entweder die Werte konkret angegeben oder Bereiche definiert. Das verwendete Schlüsselwort für diese Einschränkung ist <code>in</code>.</p><p>Definiert man <code>in (1, 2, 3, 4)</code> sind nur die angegeben Werte gültig. Die Festlegung <code>in (1 .. 4)</code> ist gleichwertig und legt fest, dass alle Werte von 1 bis 4 gültig sind. Manchmal möchte man nur den maximal oder minimal möglichen Wert angeben. Zum Beispiel legt <code>in (.. 20)</code> den maximal möglichen Wert auf 20 fest. Kleinere Werte sind uneigeschränkt erlaubt. Die Einschränkung <code>in (-18 ..)</code> legt den kleinsten möglichen Wert auf -18 fest.</p><p>Kombiniet man diese Möglichkeiten können in einer einzigen Einschränkung verschiedene gültige Wertebereiche und Werte festgelegt werden.</p><pre><code>mytype = int32
    : in (.. -18, 1, 2, 3, 4, 10..15, 20..25, 50 ..);
</code></pre><p>Das Beispiel erlaubt Werte kleiner als -18 oder größer als 50, die festen Werte 1,2,3 und 4, Werte zwischen 10 und 15 sowie 20 und 25. Alle anderen Werte sind nicht erlaubt und führen zu Fehlern bei der Prüfung.</p><p>Natürlich können Werte und Wertebereiche auch für Fließkommazahlen (<code>float</code>) festgelegt werden.</p><pre><code>constants = float32
    : in (2.71, 3.14, 9.81);
</code></pre><p>Das Beispiel erlaubt nur einige Konstanten aus Mathematik und Physik.</p><p>Auch wenn die Einschränkung <code>in</code> bereits eine sehr genaue Festlegung des Wertebereichs erlaubt ist es manchmal einfacher zu definieren was nicht enthalten sein soll. Um das zu erreichen die Einschränkung <code>not in</code> verwendet.</p><p>Zum Beispiel können für die Festlegung von Grad Celsius folgende Beschreibungen verwendet werden.</p><pre><code>gradCelsiusA = float32
    : in (-273.15 ..);

gradCelsiusB = float32
    : not in (.. -273.15);

</code></pre><h3>Worte, nichts als Worte</h3><p>Mit der Einschränkung <code>in</code> werden auch für Texte gültige Wortlisten definiert. Für die Farbnamen in einem Kartenspiel würde zum Beispiel ein eingeschränkter Datentyp wie folgt beschrieben.</p><pre><code>kartenFarben = string
    : in ("Herz", "Kreuz", "Pik", "Karo");
</code></pre><p>Für die Festlegung der Textlänge wird die Einschränkung <code>length</code> verwendet. Die Länge kann entweder als feste Anzahl Zeichen sein, variabel mit maximalen und minimalen Werten eingeschränkt werden. Die einschränkung <code>length (.. 50)</code> definiert eine maximale Länge von 50 Zeichen. Gibt man <code>length ( 10 ..)</code> an, müssen mindestend 10 Zeichen vorhanden sein. Mit <code>length (10..50)</code> sind mindestend 10 Zeichen erforderlich, aber maximal 50 möglich.</p><h3>Listen einschränken</h3><p>Wenden wir <code>in</code> und <code>length</code> auf Listen an, wirken sich die Einschränkungen auf alle Elemente der Liste aus. Es können sogar Texte und Zahlen kombiniert werden.</p><pre><code>mixListe = (int32, string)*
    : in (1..20)
    : in ("Karo", "Herz", "Pik", "Kreuz")
    : length ( ..10 );
</code></pre><p>In dem Beispiel dürfen maximal 10 Elemente in einer Liste vorhanden sein. Die enthaltenen Texte werden auf die Kartenfarben festgelegt. Als Zahlenwerte sind nur 1 bis 20 zulässig.</p><p>Es ist zu beachten, dass die Einschränkung <code>length</code> sich hier nicht auf die Länge der Texte, sondern auf die Länge der Liste bezieht. Die Textlänge kann mit Hilfe eines weiteren eigenen Datentyps eingeschränkt werden, wie folgendes Beispiel zeigt.</p><pre><code>shortText = string
    : length (..100);

mixListe = (int32, shortText)*
    : in (1..20)
    : in ("Herz", "Kreuz", "Pik", "Karo")
    : length ( ..10 );
</code></pre><h3 id="weniger-als-nichts">Weniger als nichts</h3><p>Grundsätzlich können Datenfelder beliebiger Typen undefiniert sein. Um diesen Zustand der Abwesenheit von Daten zu kennzeichnen wird das Schlüsselwort <code>null</code>verwendet, damit der Unterschied zum Wert 0 klar erkennbar ist. Falls es erforderlich ist auf jeden Fall gültige Daten zu erzwingen, weil sonst ein unklarer Systemzustand entsteht, wird dies mit der Einschränkung <code>not null</code> erreicht.</p><p>Manchmal reicht es auch aus einen speziellen Wert zu setzen, wenn keine <em>echten</em> Daten vorhanden sind. Mit dem optionalen Schlüsselwort <code>default</code> kann dieser für die Einschränkung <code>not null</code> gesetzt werden. Das System kann dann automatisch nicht vorhandene Daten durch Defaultwerte ersetzen.</p><pre><code>noNull = int32
    : not null default 0;
</code></pre><p>Das Beispiel zeigt einen Datentyp der immer Daten enthalten muss. Sollten keine Daten vorhanden sein wird der Wert 0 angenommen.</p><h3 id="fazit">Fazit</h3><p>Im titan Projekt prüfen wir die Anwendung von UJO Schema. Es hat sich bereits gezeigt, dass zukünftig noch weitere Einschränkungen den Umgang mit Daten erleichern könnten.</p><p>Reguläre Ausdrücke für Prüfungen, ob Textfelder korrekt formatiert sind und zum Beispiel eine E-Mail Adresse enthalten könnten, helfen die Korrektheit von Daten weiter zu verbessern.</p><p>Eine ebenfalls bereits diskutierte Idee ist die Verwendung von Einheiten für technische Werte. Besonders im Internet of Things (IoT) könnten klar definierte Einheiten ein System in die Lage versetzen automatische Konvertierungen und Umrechnungen vorzunehmen.</p><p><em>In meinem nächsten Blog geht es um die Verwendung von UJO Schema als Werzeug für die Dokumentation von Daten.</em></p><blockquote><p>Interesse geweckt? &#8211; Bald gibt es mehr Infos zu titan. Folge uns auf Twitter <a href="https://www.twitter.com/InDevOps_Titan">@InDevOps_Titan</a></p></blockquote><blockquote><p>Hier findest Du das Projekt <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py">ujoschema-py</a></p></blockquote>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/grenzen-setzen/">Grenzen setzen</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Typen gibt&#8217;s!</title>
		<link>https://www.industrial-devops.org/typen-gibts/</link>
		
		<dc:creator><![CDATA[Maik Wojcieszak]]></dc:creator>
		<pubDate>Thu, 21 May 2020 11:53:38 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://232749.webhosting70.1blu.de/industrial-devops-wp/?p=193</guid>

					<description><![CDATA[<p>In meinem letzten Blog Es sind die Daten, Dummchen habe ich die titan Datenbeschreibungssprache UJO Schema vorgestellt. Datenschema sind nicht nur für Datenbankexperten und Systemspezialisten wichtig. Jede Person, die direkt oder indirekt mit dem System arbeitet, sollte die Möglichkeit haben, sich ohne großen Aufwand über die verwendeten Datenstrukturen zu informieren. Nur durch das gemeinsame Verstehen kann ein&#8230;&#160;<a href="https://www.industrial-devops.org/typen-gibts/" rel="bookmark">Weiterlesen &#187;<span class="screen-reader-text">Typen gibt&#8217;s!</span></a></p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/typen-gibts/">Typen gibt&#8217;s!</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="193" class="elementor elementor-193" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-7a383e1 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7a383e1" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1bcbb4a" data-id="1bcbb4a" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4363064 elementor-widget elementor-widget-text-editor" data-id="4363064" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In meinem letzten Blog <a href="https://industrial-devops.org/blog/ujoschema-20200429/"><em>Es sind die Daten, Dummchen</em></a> habe ich die titan Datenbeschreibungssprache UJO Schema vorgestellt. Datenschema sind nicht nur für Datenbankexperten und Systemspezialisten wichtig. Jede Person, die direkt oder indirekt mit dem System arbeitet, sollte die Möglichkeit haben, sich ohne großen Aufwand über die verwendeten Datenstrukturen zu informieren. Nur durch das gemeinsame Verstehen kann ein System konsistent &#8211; über einen längeren Zeitraum, mit wechselnden Verantwortlichkeiten und verschiedenen Teams weiterentwickelt werden. Der Aufbau technischer Schuld durch Workarounds wird reduziert oder komplett vermieden und die Stabilität des Systems nicht gefährdet.</p><p>Für die Programmierung von Software gibt es statisch und dynamisch typisierte Sprachen. Letztere erlauben, zur Laufzeit beliebige Daten zu erzeugen, ohne ihre Struktur vorher festgelegt und beschrieben zu haben. So ist eine hohe Flexibilität möglich, die jedoch auch Probleme mit sich bringt.</p><p>Die Struktur der Daten wird oft nicht oder nicht ausreichend dokumentiert. Um aktuelle Datenstrukturen zu ermitteln, kommen dann reverse Engineering Methoden zum Einsatz. Diese reichen vom Betrachten der Daten selbst bis zur Analyse des Software Quellcodes. Heute werden dafür auch KI-basierte, automatische Analysen diskutiert. Diese Verfahren sind jedoch aufwendig und bei umfangreichen Daten potentiell lückenhaft.</p><p>Für titan haben wir uns daher entschieden, die Beschreibungssprache zu typisieren. Es gibt verschiedene Kategorien von Datentypen. Eine davon sind die grundlegenden, <em>unteilbaren</em> Typen. Diese <strong>atomaren Typen</strong> sind zum Beispiel Zahlenwerte, Texte oder binäre Daten wie Bilder. Eine <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py/-/blob/master/doc/markdown/ujo-schema.md#atomic-types">vollständige Liste atomarer Typen</a>ist in der Dokumentation zu finden.</p><p>Die einfachste Form eines Schemas ist das Umbenennen eines atomaren Typen.</p><pre><code>new_type = int64;
</code></pre><h3 id="daten-stukturieren">Daten stukturieren</h3><p>Eine weitere Kategorie sind die zusammengesetzten Typen, die verschiedene unterschiedlichen Typen enthalten können und ihnen Struktur geben. Diese <strong>Container</strong>können kombiniert und verschachtelt werden. Komplexe Datenstrukturen lassen sich so als wiederverwendbare Module beschreiben.</p><p>Die <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py/-/blob/master/doc/markdown/ujo-schema.md#list-type"><strong>Liste</strong></a> ist die einfachste Form eines <em>Containers</em>. Sie lässt sich leicht erzeugen, indem hinter den gewünschten Datentype ein <code>*</code> angegeben wird.</p><pre><code>number_list = int64*;
</code></pre><p>Auf Elemente einer Liste wird über ihre Position oder ihren Index zugegriffen. Manchmal ist es jedoch besser, mit einem festgelegten Wert, einem Schlüssel, auf die Elemente zuzugreifen. Dafür kann ein so genanntes <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py/-/blob/master/doc/markdown/ujo-schema.md#associative-array-map"><em>assoziatives Array</em></a> verwendet werden. Das Schema für ein assoziatives Array erfordert die Festlegung des Schlüsseltyps und des Werttyps.</p><pre><code>ages =  int32&gt;;
</code></pre><p>Das Beispiel definiert ein assoziatives Array, das genutzt werden kann, um Namen von Personen mit deren Alter zu kombinieren.</p><h3 id="ein-modell-der-welt">Ein Modell der Welt</h3><p>Listen und assoziativen Arrays reichen nicht aus, um reale Daten verständlich zu strukturieren. Wie kann man zum Beispiel eine Adresse beschreiben? Damit das funktioniert bietet UJO Schema <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py/-/blob/master/doc/markdown/ujo-schema.md#objects"><strong>Records</strong></a> und <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py/-/blob/master/doc/markdown/ujo-schema.md#objects"><strong>Objekte</strong></a>.</p><p><em>Records</em> beschreiben eine feste Anzahl Elemente, die in einer bestimmten Reihenfolge strukturiert sind.</p><pre><code>address = [
    Street      = string,
    No          = int32,
    ZIPCode     = string,
    City        = string
];
</code></pre><p>Ein <em>Objekt</em> definiert festgelegte Schlüssel für die einzelnen Elemente. So spielt die Reihenfolge keine Rolle und Elemente können weggelassen oder hinzugefügt werden. Die Schlüssel müssen jedoch bei der Datenübertragung und Speicherung berücksichtigt werden, was die Datenmenge vergrößert. Das spielt heute auf Servern vielleicht keine große Rolle, kann aber ein limitierender Faktor bei Anwendungen im <em>Internet der Dinge</em> (IoT) sein.</p><p>Das Adressbeispiel wird als <em>Objekt</em> wie folgt definiert:</p><pre><code>address = {
    "Street"    -&gt; string,
    "No"        -&gt; int32,
    "ZIPCode"   -&gt; string,
    "City"      -&gt; string
];
</code></pre><h3 id="mehr-dynamik">Mehr Dynamik</h3><p>Klar definierte Datentypen sorgen für Sicherheit und Planbarkeit, gehen jedoch auf Kosten der Flexibilität. Soll dynamisch auf Daten, die sich nicht klar definieren lassen, reagiert werden, bietet sich der Datentyp <code>variant</code> an. In einem als <code>variant</code> deklarierten Element sind alle unterstützten Datentypen erlaubt.</p><pre><code>all_data = variant;
</code></pre><p>Der <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py/-/blob/master/doc/markdown/ujo-schema.md#variant-type">variante Typ</a> sollte sparsam genutzt werden, damit keine Mehrdeutigkeiten entstehen wo sie vermieden werden sollten.</p><p><em>Atomare Typen</em> schränken die möglichen Daten stark ein. Damit nicht immer, wenn diese Einschränkung zu streng ist, auf den Typ <code>variant</code> zurückgegriffen werden muss, können <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py/-/blob/master/doc/markdown/ujo-schema.md#defining-variant-types">alternative Datentypen</a> angegeben werden. Ist beispielsweise bekannt, dass die Daten in jedem Fall ein Zahl sind, kann dies wie folgt beschrieben werden:</p><pre><code>number = (int32, int64, uint32, uint42, float32, float64);
</code></pre><h3 id="kombinieren-und-verschachteln">Kombinieren und verschachteln</h3><p>Beim Erstellen von Datenmodellen ist jetzt Kreativität gefragt. Wirklich mächtig wird ein Schema durch die Kombination von Elementen, Containern und die Wiederverwendung von Strukturen.</p><p>Zum Beispiel können Kundendaten durch die Wiederverwendung der bereits oben beschriebenen Adresse strukturiert werden:</p><pre><code>person = [
    family_name     = string,
    given_names     = string,
    address         = address
];

company = [
    name            = string,
    address         = address,
    contacts        = person*
];
</code></pre><p>Für die Firmenadresse in <code>company</code> wird der gleiche <code>address</code> Typ benutzt wie für die <code>person</code>. Da in einer Firma verschiedene Personen arbeiten wird das Feld <code>contacts</code>mit einer Liste von Personen gefüllt.</p><p>Damit sind die Möglichkeiten, Datenstrukturen zu definieren, beschrieben. Im nächsten Blog erkläre ich, wie die Einschränkung von Datentypen funktioniert, damit automatisch auf Abweichungen reagiert werden kann.</p><blockquote><p>Interesse geweckt? &#8211; Bald gibt es mehr Infos zu titan. Folge uns auf Twitter <a href="https://www.twitter.com/InDevOps_Titan">@InDevOps_Titan</a></p></blockquote><blockquote><p>Hier findest Du das Projekt <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py">ujoschema-py</a></p></blockquote>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/typen-gibts/">Typen gibt&#8217;s!</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Daten als Schlüssel zur No-Code Programmierung</title>
		<link>https://www.industrial-devops.org/daten-als-schluessel-zu-nocode/</link>
		
		<dc:creator><![CDATA[Maik Wojcieszak]]></dc:creator>
		<pubDate>Tue, 12 May 2020 10:40:35 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://demosites.io/web-agency/?p=1</guid>

					<description><![CDATA[<p>Daten sind der Schlüssel zu No-Code Programmierung. Wenn Menschen ohne Programmierkenntnisse komplexe IT Probleme lösen, müssen sie die Daten im Griff haben. Mit dem Slogan “It’s the economy, stupid!” (“Es ist die Wirtschaft, Dummerchen”), der von dem Wahlkampf Strategen James Carville&#160;geprägt wurde, gewann Bill Clinton 1992 die US-Präsidentschaftswahl. Platziert auf einem Schild im Hauptquartier in&#8230;&#160;<a href="https://www.industrial-devops.org/daten-als-schluessel-zu-nocode/" rel="bookmark">Weiterlesen &#187;<span class="screen-reader-text">Daten als Schlüssel zur No-Code Programmierung</span></a></p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/daten-als-schluessel-zu-nocode/">Daten als Schlüssel zur No-Code Programmierung</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="71" class="elementor elementor-71" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-fee5f26 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="fee5f26" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7e1aae2" data-id="7e1aae2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-943a502 elementor-widget elementor-widget-text-editor" data-id="943a502" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong><em>Daten sind der Schlüssel zu No-Code Programmierung. Wenn Menschen ohne Programmierkenntnisse komplexe IT Probleme lösen, müssen sie die Daten im Griff haben.</em></strong></p><p>Mit dem Slogan “It’s the economy, stupid!” (“Es ist die Wirtschaft, Dummerchen”), der von dem Wahlkampf Strategen <a href="https://en.wikipedia.org/wiki/James_Carville">James Carville</a> geprägt wurde, gewann Bill Clinton 1992 die US-Präsidentschaftswahl. Platziert auf einem Schild im Hauptquartier in Little Rock hatten die Mitarbeiter diese Botschaft ständig vor Augen und konnten all die vielen, kleinen Entscheidungen, die notwendig waren, die Wahl zu gewinnen, daran ausrichten und messen.</p><p>“It’s the data, stupid!” (“Es sind die Daten, Dummerchen!&#8220;) ist der Leitsatz für das titan-Projekt. Vor allem anderen sind es die Daten, die wir im Griff haben müssen, damit wir eine kohärente Plattform für eine iterative Systemintegration schaffen.</p><h3>Die Welt verändert sich</h3><p>Im Zuge der Digitalisierung verändert sich die Systemlandschaft in Unternehmen. Spezialisierte Software-Werkzeuge, Maschinen und Systeme wurden bisher miteinander vernetzt, um z.B. Planungs- und Konstruktionsdaten oder statistische Daten auszutauschen. Diese <em>geringfügige</em> Vernetzung hat den Vorteil, dass Abhängigkeiten kein Problem darstellen, wenn ein Werkzeug durch ein anderes ersetzt wird oder eine Aktualisierung einer Software benötigt wird.</p><p>Heute steigt der Grad der Vernetzung der Systeme in Unternehmen und über Unternehmensgrenzen hinaus exponentiell. Abhängigkeiten sind auf einen Blick nicht mehr leicht erkennbar. So ein komplexes System kann nicht mehr einfach ausgetauscht werden. Wissen, das in die Automatisierung von Prozessen geflossen ist, ginge verloren.</p><p>Eine moderne Integrationsplattform wie titan muss daher in der Lage sein Komplexität beherrschbar zu machen und dabei gleichzeitig feste Abhängigkeiten zu spezialisierten Werkzeugen vermeiden. Offene Schnittstellen, leichte Anpassbarkeit und lose Kopplung sind dabei ebenso wichtig wie eine verständliche Darstellung der Daten.</p><h3>Die einzige Quelle der Wahrheit</h3><p>Es gibt eine Reihe von Möglichkeiten, Daten in einem System zu beschreiben. Dabei geht es sowohl um die Dokumentation, die leicht verständlich und aktuell sein muss, als auch um die technische Evaluierung und Anwendung der Datenbeschreibung.</p><p>Datenschema und automatisierte Generierung von Dokumentation gibt es für verschiedene technische Aspekte. Schnittstellen für Microservices werden mit <a href="https://raml.org/">RAML</a> oder <a href="https://swagger.io/">Swagger</a> beschrieben, für XML gibt es <a href="https://www.data2type.de/xml-xslt-xslfo/xml-schema/">XML Schema</a> und <a href="https://www.data2type.de/xml-xslt-xslfo/xml/xml-in-a-nutshell/dokumenttyp-definitionen/">DTD</a>, für Datenbanken <a href="https://de.wikipedia.org/wiki/SQL">SQL</a> und so weiter.</p><p>Da die titan-Plattform jedoch das Ziel hat unabhängig von bestimmten Technologien zu sein, war das keine Option. Wir benötigten eine Technologie-unabhängige Beschreibung der Daten, die leicht verständlich ist und trotzdem detailliert genug, damit technische Aspekte wie Datenmodelle automatisiert abgeleitet werden können. Schnittstellen und Datenmodelle in Datenbanken sollen mit den gleichen <em>Begriffen</em> definiert werden. Die Beschreibung der Daten dient sowohl den Menschen als Dokumentation, als auch dem System als <em>einzige Quelle der Wahrheit</em>. Nur so ist unserer Meinung nach über einen langen Zeitraum die Pflege des Systems möglich, ohne dabei mit jeder Änderung <em>technische Schuld</em> aufzubauen.</p><h3>Die Abwärtsspirale</h3><p><em>Technische Schuld</em> entsteht leicht, wenn Systeme komplexer werden und nicht mehr leicht zu überblicken sind. Änderungen werden eingeführt, ohne vorhandene Abhängigkeiten und Konventionen zu beachten. Wird technische Schuld nicht erkannt und regelmäßig behoben, kommt es irgendwann zu immer häufigeren Störungen bis hin zum Systemversagen.</p><p>Vernetzte Systeme müssen jedoch sowohl regelmäßig angepasst werden als auch <em>wachsen</em>. Nur so können neue Anforderungen und Herausforderungen bewältigt werden. Die immer umfassendere Vernetzung von IT-Systemen führt zukünftig dazu, dass Managemententscheidungen immer häufiger Änderungen in IT-Systemen erfordern.</p><h3>Divide et impera</h3><p>Das Prinzip <a href="https://www.methode.de/am/tipps-und-tricks/teile-und-herrsche.htm"><em>Teile und Herrsche</em></a> wird auch auf die Methode, ein großes, übermächtiges und schwer beherrschbares Problem in viele kleine und übersichtliche zu zerlegen, angewendet.</p><figure id="attachment_189" aria-describedby="caption-attachment-189" style="width: 435px" class="wp-caption alignright"><img loading="lazy" decoding="async" class="wp-image-189" src="https://www.industrial-devops.org/wp-content/uploads/2020/09/bricksports.svg" alt="Abb.1: Flow mit Bricks und Ports" width="435" height="173" /><figcaption id="caption-attachment-189" class="wp-caption-text">Abb.1: Flow mit Bricks und Ports</figcaption></figure><p>In der titan-Plattform werden basierend darauf Prozesse mithilfe von Flows als Ablaufdiagramm dargestellt. Flows sind sowohl die technische Umsetzung eines Prozesses als auch dessen Dokumentation. Sie dienen dazu, Wissen über den Kontext zu transportieren, damit Menschen ohne IT-Hintergrund an Aspekten des Systems, die sie betreffen, konstruktiv mitarbeiten können. Flows wiederum bestehen aus Bricks, die miteinander verbunden werden. Ein Brick löst einen relativ kleinen Teilaspekt, auf den sich ein Programmierer bei der Konzeption konzentrieren kann. Der Teilaspekt sollte so klein sein, dass er leicht zu kommunizieren und zu verifizieren ist.</p><h3>Daten, Daten, Daten</h3><figure id="attachment_188" aria-describedby="caption-attachment-188" style="width: 280px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-188" src="https://www.industrial-devops.org/wp-content/uploads/2020/09/schema-conversion.svg" alt="Abb.2: Schema und Umwandlungen" width="280" height="247" /><figcaption id="caption-attachment-188" class="wp-caption-text">Abb.2: Schema und Umwandlungen</figcaption></figure><p>Zwischen den Bricks werden Datenpakete ausgetauscht. Diese <em>Flow-Packets</em> stellen ebenfalls einen Teilaspekt des Systems dar. Sie fließen durch das System und hinterlassen ihre Spuren, indem sie Aktionen, wie das Versenden von E-Mails oder das Einschalten eines Alarmsignals, steuern. Natürlich werden sie auch genutzt, um permanente Datenbestände aufzubauen oder zu verändern.</p><p>Für die Beschreibung der Daten wurde für die titan-Plattform eine eigene Schema-Sprache entwickelt, die speziell dafür optimiert und angepasst werden kann. Sie dient als Dokumentation der Daten wie auch als technische Implementierung.</p><p><span style="background-color: #ffffff;">Abb.2 zeigt, wie Module helfen Daten zu strukturieren und technische Teilaspekte abgeleitet werden.</span></p><h3>Die titan-Plattform kümmert sich um die Details</h3><p>Als Menschen sind wir nicht gut dafür gerüstet, alle Details eines komplexen Systems im Blick zu haben. Dafür nutzen wir heute Informationstechnologie und Software.</p><p>Damit die titan-Plattform optimal dabei unterstützen kann, sich um Details einer Änderung zu kümmern, werden Schemata eingesetzt. Zum Beispiel wird beim Verbinden von Bricks automatisch geprüft, ob die Ausgangsdaten des einen kompatibel mit den Eingangsdaten des anderen sind. Der Nutzer wird informiert, wenn es Konflikte gibt.</p><p>Bricks werden in verschiedenen Zusammenhängen in unterschiedlichen Flows eingesetzt. Durch die Beschreibung der Daten ist die titan-Plattform in der Lage, den Nutzer vor einem produktiven Einsatz zu informieren, wenn Änderungen Probleme verursachen würden.</p><h3>Simulation und Test</h3><p>Natürlich müssen Änderungen im System getestet werden. Integrierte Systeme zu testen ist ein Herausforderung, weil Daten systemspezifisch sind. Testdaten zu erzeugen und zu pflegen ist aufwendig. Das Schema hilft dabei, Testdaten automatisch zu erzeugen und neue Flows zu testen.</p><h3>Wiederverwendbare Daten</h3><p>Wie die Bricks werden auch Daten in Teilaspekten dargestellt. Es ist relativ leicht, eine Adresse zu definieren.</p><pre><code>anschrift = [
    Strasse = string,
    Postleitzahl = number,
    Ort = string
] : doc "Globale Definition einer Adresse;
</code></pre><p>Wie die Adresse können Teilaspekte der Daten im System leicht beschrieben und wiederverwendet werden. Die Defintion einer Person mit einer Adresse könnte so aussehen:</p><pre><code>person = [
    Vorname = string,
    Nachname = string,
    Alter = number,
    Adresse = anschrift
] : doc "Person mit Adresse";
</code></pre><p>Möchte ich einen Firmenkontakt beschreiben, der eine Liste von Personen und die Adresse des Unternehmens enthält, kombiniere ich wieder die entsprechenden Teilaspekte:</p><pre><code>firma = [
    Firmenname = string,
    Firmenadresse = anschrift,
    Ansprechpartner = person*
] : doc "Firma mit Adresse und Ansprechpartnern";
</code></pre><p>Der <code>*</code> hinter <code>person</code> zeigt an, dass es sich um eine Liste handelt.</p><p>Jeder Teilaspekt, der beschrieben wird, ist für sich genommen keine große Herausforderung. Der Vorteil der Wiederverwendbarkeit ermöglicht es, dass Änderungen sich durch alle Teilaspekte propagieren. Die titan-Plattform kümmert sich dabei um die Details und zeigt an, wenn potentielle Probleme auftreten. Notwendige Änderungen werden durchgeführt, ohne Probleme im Betrieb befürchten zu müssen. Das System bleibt auf dem neuesten Stand.</p><h3>Die Quelle der Wahrheit für alle</h3><p>Für die Dokumentation kann ein Nutzer das Schlüsselwort <code>doc</code> verwenden, um zusätzliche Informationen anzufügen. Wird das Schema geändert, wird automatisch die Online-Dokumentation aktualisiert.</p><p>Das Schema kann in verschiedene technische Teilaspekte konvertiert werden. In der titan-Plattform wird beispielsweise eine binäre, kompakte Darstellung generiert, damit Schemata untereinander oder mit Daten in Echtzeit verglichen werden können (Abb.2). Zukünftig sollen auch andere Formate wie SQL Datenmodelle, XML Schema, JSON Schema und weitere erzeugt werden.</p><p>Die Abbildung zeigt, wie globale Datentypen in Teilaspekten der Daten eingesetzt werden. Aus diesem kompletten Datenmodell werden Teilaspekte in andere Darstellungen für unterschiedliche Zwecke konvertiert.</p><p>So entsteht eine unabhängige Beschreibung, die sowohl für die beteiligten Menschen wie auch für die titan-Plattform als Referenz und alleinige Quelle der Wahrheit dient.</p><blockquote><p>Interesse geweckt? &#8211; Bald gibt es mehr Infos zu titan. Folge uns auf Twitter <a href="https://www.twitter.com/InDevOps_Titan">@InDevOps_Titan</a></p></blockquote><blockquote><p>Hier findest Du das Projekt <a href="https://git.industrial-devops.org/titan/related-projects/ujoschema-py">ujoschema-py</a></p></blockquote>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-46363fd elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="46363fd" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7fbc92f" data-id="7fbc92f" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-88a0756 elementor-widget elementor-widget-text-editor" data-id="88a0756" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px;">Titel Photo by </span><a style="margin: 0px; padding: 0px; color: #428bca; font-family: 'Open Sans', sans-serif; font-size: 15px; text-decoration-line: none !important;" href="https://www.pexels.com/@markusspiske?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels">Markus Spiske</a><span style="color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px;"> from </span><a style="margin: 0px; padding: 0px; color: #428bca; font-family: 'Open Sans', sans-serif; font-size: 15px; text-decoration-line: none !important;" href="https://www.pexels.com/photo/working-pattern-internet-abstract-1089438/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels">Pexels</a></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/daten-als-schluessel-zu-nocode/">Daten als Schlüssel zur No-Code Programmierung</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>No-Code Process Mining</title>
		<link>https://www.industrial-devops.org/no-code-process-mining/</link>
		
		<dc:creator><![CDATA[Manuel Wetzel]]></dc:creator>
		<pubDate>Tue, 18 Feb 2020 08:02:14 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://232749.webhosting70.1blu.de/industrial-devops-wp/?p=1</guid>

					<description><![CDATA[<p>Eine heutige Fertigung und die damit verbundenen Prozesse unterliegen einem ständigen Wandel. Seien es neue Produkte, der Austausch einer Maschine oder lediglich die Umgestaltung der Produktion &#8211; viele Ursachen führen dazu, dass eine Fertigung immer wieder neu gestaltet werden muss. Gleichzeitig ist es aber aus wirtschaftlichen Gesichtspunkten wichtig, die Prozesse zu kennen und Schwachstellen aufzudecken,&#8230;&#160;<a href="https://www.industrial-devops.org/no-code-process-mining/" rel="bookmark">Weiterlesen &#187;<span class="screen-reader-text">No-Code Process Mining</span></a></p>
<p>Der Beitrag <a href="https://www.industrial-devops.org/no-code-process-mining/">No-Code Process Mining</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1" class="elementor elementor-1" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-8b4960c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8b4960c" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b2b9c2b" data-id="b2b9c2b" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4d55e4e elementor-widget elementor-widget-text-editor" data-id="4d55e4e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Eine heutige Fertigung und die damit verbundenen Prozesse unterliegen einem ständigen Wandel. Seien es neue Produkte, der Austausch einer Maschine oder lediglich die Umgestaltung der Produktion &#8211; viele Ursachen führen dazu, dass eine Fertigung immer wieder neu gestaltet werden muss.</p><p>Gleichzeitig ist es aber aus wirtschaftlichen Gesichtspunkten wichtig, die Prozesse zu kennen und Schwachstellen aufzudecken, um effizient zu arbeiten und Qualität sicherzustellen.</p><h3 id="was-ist-process-mining-und-wo-liegen-seine-herausforderungen">Was ist Process Mining und wo liegen seine Herausforderungen?</h3><p>Diesem Thema widmet sich das immer populärer werdende Gebiet des Process Minings. Das Ziel ist es, aus den Daten, die ein Produktionssystem generiert, automatisch das zugehörige Geschäftsprozessmodell zu generieren. So werden ähnlich zum verwandten Data Mining aus den großen Datenströmen prozessbasierte Informationen abgeleitet. Die Vorteile liegen auf der Hand: man entdeckt die wahren Prozesse im Unternehmen und nicht nur diejenigen, die der Prozessmanager in einem Meeting modelliert hat. Außerdem können die Prozesse mit diesen Informationen und weiteren Indikatoren zur Prozessgüte auf Schwachstellen analysiert werden.</p><p>Hierfür muss natürlich die Datengrundlage (das sogenannte Event-Log) gewissen Standards genügen und zumindest die folgenden Punkte enthalten:</p><ul><li>Was wurde gemacht?</li><li>Wann wurde es gemacht?</li><li>Für welchen Auftrag wurde es gemacht?</li></ul><table><thead><tr><th>Zeit</th><th>Aufgabe</th><th>Auftrag</th><th>Bearbeiter</th></tr></thead><tbody><tr><td>12-02-2020-11-37-56</td><td>Beginn Endmontage</td><td>IS-2193</td><td>Monteur1</td></tr><tr><td>12-02-2020-11-51-44</td><td>Ende Endmontage</td><td>IS-2193</td><td>Monteur1</td></tr></tbody></table><p><em>So sieht der Event Log aus. Er beinhaltet Zeitstempel, Bezug zu Auftrag und die durchgeführte Tätigkeit. Diese Informationen können um beliebilge Spalten erweitert werden, je nachdem welche Frage analysiert werden soll. Der Event Log bildet den Input und die Grundlage für jeden Process Mining Algorithmus.</em></p><figure id="attachment_3290" aria-describedby="caption-attachment-3290" style="width: 768px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-3290 size-full" src="https://www.industrial-devops.org/wp-content/uploads/2020/02/process-sourcing-shaddow-e1621399772655.jpg" alt="Quelle: titan Projekt Creative Commons CCBY-SA4.0" width="768" height="497" /><figcaption id="caption-attachment-3290" class="wp-caption-text">Quelle: titan Projekt Creative Commons CCBY-SA4.0</figcaption></figure><p>Genau hier liegt die größte Herausforderung von Process Mining. Die Daten, die ein Produktionssystem generiert, sind nicht standardisiert, nicht alle Arbeitsschritte werden technisch erfasst und nicht alle Informationsquellen können einbezogen werden. Die Folge ist massive manuelle Nacharbeit und die damit einhergehende Unschärfe der Ergebnisse. So muss zum Beispiel bei einem fehlenden Zeitstempel ein chronologisch korrekter Zeitpunkt geraten werden, eine spätere zeitliche Analyse wird damit aber unbrauchbar. Außerdem wird Process Mining hauptsächlich rückwirkend für vergangene Zeiträume durchgeführt. Das Potential von der Prozessinformationen wird so nicht ausgeschöpft.</p><p><em>Unser Ziel: ein automatisch generiertes Prozessmodell, das den realen Prozess abbildet.</em></p><h3 id="wie-kann-titan-helfen">Process Mining ohne Prgrammieren</h3><p>An dieser Stelle kommt nun titan ins Spiel. Mit einem Flow können verschiedene Informationsquellen integriert und miteinander verbunden werden. Dies könnte beispielsweise ein MES (Manufacturing Execution System) oder ein ERP (Enterprise Resource Planning) System sein. Es können aber auch individuell integrierte Sensoren einbezogen werden. Ein Arbeitsplatz, dessen Tätigkeiten bisher nicht erfasst wurden, kann somit modular mit einem Barcode-Scanner oder RFID Sensor ausgestattet werden. Durch unseren No-Code-Ansatz ist die konkrete Umsetzung schnell austauschbar und erweiterbar. Man würde lediglich vorhandene Bricks mit neuer Adresse in den Flow einbinden. Die starken Änderungen, denen eine Fertigung zwangsläufig unterliegt, können also mit geringem Änderungsaufwand auch in den Flow einbezogen werden. Das Ergebnis ist also eine perfekt aufgearbeitete Ereignis-Datenbank (sogenanntes Event-Log), die es Process Mining ermöglicht, automatisch ein Prozessmodell zu generieren.</p><p>Neben der Datenaufarbeitung für eine spätere Analyse und dem Finden von Verbesserungsmöglichkeiten bietet Process Mining aber auch noch einen weiteren praktischen Nutzen. Wenn einmal ein Prozessmodell vorliegt, kann nun für einen neu abgeschlossenen Auftrag überprüft werden, inwiefern dieser dem Standard-Ablauf entspricht oder wo besonders große Abweichungen auftreten (sogenanntes Conformance Checking).</p><p>Auch hier kann die leichte Anpassungsfähigkeit und Individualisierbarkeit von titan helfen. Man kann sich vorstellen, dass einzelne Verantwortliche benachrichtigt werden möchten, wenn sich rausstellt, dass zu viele Aufträge abweichend von der Norm bearbeitet werden. Diese Alarme, Benachrichtigungen und Fragestellungen sind aber eben auch sehr firmenindividuell.  Je nach Schwellwerten, Parametern oder Aktionen müssen für die Weiterverarbeitung der Auswertung die Bricks nur angepasst und neu verbunden werden.</p><p>Schlussendlich adressiert titan auch ein gravierendes Problem der personenbezogenen Daten. Grundsätzlich ist bei der Prozessanalyse interessant, wie lange welche Arbeitsstelle an welchem Auftrag gearbeitet hat. Aus diesen Daten lassen sich aber schnell Rückschlüsse auf die Produktivität einzelner Mitarbeiter ziehen. In manchen Fällen mag dies erwünscht sein, z.B. um in Echtzeit Überlastungen festzustellen und schnell entgegenwirken zu können. Diese Daten sollten allerdings nicht zur späteren Performance-Bewertung zweckentfremdet werden. Hier kann titan durch einzelne Anonymisierungs-Bricks an genau den richtigen Stellen dafür sorgen, dass personenbezogene Daten abgeschnitten werden und gar nicht erst weitergeleitet und gespeichert werden. Auch hier sind die Anforderungen sehr individuell je Firma und Prozess. Titan ermöglicht es, in den Dialog mit Betriebsrat und Datenschützern zu gehen und deren Anforderungen selbst mit dem No-Code Ansatz gerecht zu werden.</p><h3 id="zusammenfassung">Anpassbare Datenauswertung in Echtzeit</h3><p>Eine Fertigung und die damit verbundenen Prozess unterliegen ständigem Wandel. Gleichzeitig ist es aber wichtig, die Prozesse zu kennen und zu verbessern. Die Werkzeuge des Process Mining können verschiedenste Fragen rund um Prozesse beantworten, brauchen dafür aber eine gute Datenbasis.</p><p>Titan bietet mit seinem No-Code-Ansatz die Möglichkeit individuell und vor allem anpassbar die Daten zu sammeln und bereitzustellen. Die Wiederverwendbarkeit von Bricks ermöglicht es, dies sehr wirtschaftlich und effizient zu tun. Die Datenzusammenstellung wird sich immer ändern, seien es neue Zusammenhänge, die analysiert werden sollen oder einfach neue manuelle Arbeitsplätze, die eingebunden werden sollen. Der Schlüssel zum Erfolg mit Process Mining ist ein anpassbares Auswerten der Daten in Echtzeit.</p><p>In diesem Sinne möchte ich mit einem Zitat vom Process Mining Papst Will Van der Aalst schließen:</p><blockquote><p>“<a href="http://Page ascore Source title Source url 25 Realme’s next launch will be its First AIOT launch - Technology Times https://www.technologytimes.pk/2020/06/05/aiot/">It is the Process and the Data, Stupid!</a>”</p></blockquote><h3 id="weitere-informationen-zu-process-mining">Weitere Informationen zu <a href="http://www.processmining.org/">Process Mining</a></h3>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://www.industrial-devops.org/no-code-process-mining/">No-Code Process Mining</a> erschien zuerst auf <a href="https://www.industrial-devops.org">Industrial DevOps</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
