Digitale Vernetzung und Industrial IoT – Ein Monitoring-Dashboard entwickeln
Einleitung
Digitale Vernetzung und Industrial IoT – Ein Monitoring-Dashboard entwickeln
Zielgruppe: Ausbildung in Automatisierungstechnik, Mechatronik und IT. Lernzeit: ca. 90 Minuten. Ziel: Du erkennst Zustand, Trend und klar gekennzeichnete Alarme und programmierst ein lokales Dashboard.
Ausbildungsfall: Beim fiktiven Förderband B-12 möchtest Du die Temperatur des Antriebsmotors überwachen. Alle Messwerte und Temperaturgrenzen sind frei erfunden, nicht für echte Anlagen freigegeben.

Fallillustration (nicht B-12): Shixart1985, Wikimedia Commons, CC BY 2.0.
Sicherheitsregel: Nur lokale, ausdrücklich freigegebene Übungsumgebungen mit fiktiven Daten! Keine fremden Netze, Broker, SPS, Produktionsanlagen, Passwörter oder Kundendaten verwenden. Der Simulator benötigt kein Internet, sendet und speichert keine Daten und steuert keine Maschine.
Lerneinheiten
Sensoren und Messwerte (8 Minuten)
Ein Sensor erfasst physikalische Größen. Ein Messwert benötigt Zahl, Einheit und Gültigkeitsinformation. „75“ ohne °C ist unklar; ein fehlender Wert darf nicht als „OK“ erscheinen.

Sensor-Schaltungsbeispiel: OctopusArk, Wikimedia Commons, CC BY-SA 4.0.
Basisfrage: Was fehlt bei „75“? Feedback: Ohne Einheit und Datenqualität kannst Du den Wert nicht sicher interpretieren.
Datenweg im Industrial IoT (8 Minuten)
Industrial IoT verbindet physische Prozesse mit digitalen Anwendungen. Das Lernmodell zeigt den üblichen Grundgedanken, nicht die Architektur einer bestimmten Fabrik.
Sensor → Edge/Gateway → Datenverarbeitung → Dashboard → Mensch

Beispielarchitektur: Paul McLaughlin und Rohan McAdam, Wikimedia Commons, CC BY-SA 4.0.

Edge, Plattform, Unternehmen: Sujata Tilak, Wikimedia Commons, CC BY-SA 4.0.
Basisfrage: Was erledigt das Dashboard? Feedback: Es zeigt verarbeitete Informationen an, nicht die physikalische Messung selbst.
Vernetzung verstehen: MQTT und OPC UA (10 Minuten)
MQTT nutzt Publisher → Broker → Subscriber. OPC UA ermöglicht den standardisierten Austausch strukturierter Industrieinformationen samt Sicherheitsmechanismen. Beides bleibt hier Theorie: Es wird keinerlei Verbindung eingerichtet.

MQTT-Broker-Modell: Ademant, Wikimedia Commons, CC BY-SA 4.0.
Videos (freiwillige externe Medien):
HiveMQ: „MQTT Basics“.
OPC Foundation: „What is OPC? UA in a Minute“.
Anwendungsfrage: Garantiert eine zugestellte Nachricht eine korrekte Temperatur? Feedback: Nein: Übertragung und inhaltliche Validierung sind verschieden.
Zustandsanzeige, Zeitreihe und Alarme (10 Minuten)
Die folgenden Schwellen sind nur Übungsannahmen.
| Zustand | Regel | Beschriftung |
|---|---|---|
| OK | unter 70 °C | Grün + „OK“ |
| WARNUNG | ab 70 °C und unter 80 °C | Orange + „WARNUNG“ |
| ALARM | ab 80 °C | Rot + „ALARM“ |
| DATENFEHLER | Messwert fehlt oder ist ungültig | Grau + „DATENFEHLER“ |
Trend = Verlauf einer Zeitreihe. Hysterese = verzögerte Rückschaltung: Von ALARM erst unter 78 °C zurück, von WARNUNG erst unter 68 °C zurück. Damit vermeidest Du ein Flackern an der Schwelle. Ein fehlender Messwert ist kein Prozessalarm, sondern ein gesonderter Datenfehler.
| Fiktive Messfolge | Bildhafter Trend | Zustand |
|---|---|---|
| 54 → 69 → 71 → 82 → 79 → 77 → 65 °C | ▁▃▄█▇▆▂ | OK → OK → WARNUNG → ALARM → ALARM → WARNUNG → OK |

Statistische Regelkarte, keine realen B-12-Grenzen: DanielPenfield, Wikimedia Commons, gemeinfrei.
Anwendungsfrage: Warum ist 79 °C direkt nach 82 °C weiterhin ALARM? Feedback: Die Rückschaltgrenze ist 78 °C.
Offline-Labor: Dashboard programmieren (25 Minuten)
Voraussetzung: Python 3 mit Tkinter und grafischer Oberfläche. Prüfe python -m tkinter oder python3 -m tkinter. Falls Tk auf Deinem System fehlt, kannst Du dennoch die unten enthaltenen Kommandozeilentests ausführen; besorge keine Software ohne Freigabe.
Start: Speichere den gesamten Code als dashboard.py. Führe im lokalen Übungsordner python dashboard.py --test aus (alternativ python3). Starte dann python dashboard.py. Das Fenster verwendet ausschließlich erfundene Werte im Arbeitsspeicher und zeichnet die letzten 16 Eingaben, keine echten Echtzeitdaten.
"""Offline-Trainingsdashboard: nur fiktive Temperaturen, kein Netzwerkzugriff."""
import math
import sys
import unittest
from collections import deque
WERTE = [54, 58, 63, 69, 71, 75, 82, 79, 77, 65]
def zustand(wert, vorher="OK"):
if type(wert) not in (int, float) or not math.isfinite(wert):
return "DATENFEHLER"
if wert >= 80 or (vorher == "ALARM" and wert >= 78):
return "ALARM"
if wert >= 70 or (vorher == "WARNUNG" and wert >= 68):
return "WARNUNG"
return "OK"
def starten():
import tkinter as tk
fenster = tk.Tk()
fenster.title("Förderband B-12 | Simulation – kein Anlagenanschluss")
fenster.geometry("560x400")
messungen = deque(maxlen=16)
stand = {"index": 0, "zustand": "OK"}
titel = tk.Label(fenster, text="Fiktive Motor-Temperatur | °C",
font=("Arial", 15, "bold"))
titel.pack(pady=5)
anzeige = tk.Label(fenster, font=("Arial", 17))
anzeige.pack()
status = tk.Label(fenster, font=("Arial", 13, "bold"))
status.pack()
info = tk.Label(fenster, text="Orange: Warnung ab 70 °C | Rot: Alarm ab 80 °C\n"
"Rückschaltung mit 2 °C Hysterese | Datenfehler separat")
info.pack()
kurve = tk.Canvas(fenster, width=520, height=235, bg="white")
kurve.pack()
def zeichnen():
kurve.delete("all")
for grenze, farbe in [(70, "#a75a00"), (80, "#b12222")]:
y = 220 - (grenze - 40) * 3
kurve.create_line(40, y, 510, y, fill=farbe, dash=(5, 3))
kurve.create_text(5, y, anchor="w", text=str(grenze), fill=farbe)
zuletzt = None
for i, wert in enumerate(messungen):
if wert is None or not math.isfinite(wert):
zuletzt = None
continue
x = 45 + i * 28
y = max(15, min(220, 220 - (wert - 40) * 3))
if zuletzt is not None:
kurve.create_line(*zuletzt, x, y, fill="#005a8b", width=3)
kurve.create_oval(x-3, y-3, x+3, y+3, fill="#005a8b")
zuletzt = (x, y)
kurve.create_text(260, 230, text="Trend: bis zu 16 simulierte Messpunkte")
def aufnehmen(wert):
stand["zustand"] = zustand(wert, stand["zustand"])
messungen.append(wert)
anzeige.config(text="—" if wert is None else f"{wert} °C")
farben = {"OK": "#176b3b", "WARNUNG": "#a75a00",
"ALARM": "#b12222", "DATENFEHLER": "#4b5563"}
status.config(text="ZUSTAND: " + stand["zustand"],
fg=farben[stand["zustand"]])
zeichnen()
def weiter():
wert = WERTE[stand["index"] % len(WERTE)]
stand["index"] += 1
aufnehmen(wert)
def neu():
messungen.clear()
stand["index"] = 0
stand["zustand"] = "OK"
weiter()
leiste = tk.Frame(fenster)
leiste.pack(pady=5)
for name, aktion in [
("Nächster Messwert", weiter),
("Alarmfall", lambda: aufnehmen(85)),
("Datenlücke", lambda: aufnehmen(None)),
("Neustart", neu),
]:
tk.Button(leiste, text=name, command=aktion).pack(side="left", padx=3)
neu()
fenster.mainloop()
class LogikTests(unittest.TestCase):
def test_grenzen(self):
self.assertEqual(zustand(69), "OK")
self.assertEqual(zustand(70), "WARNUNG")
self.assertEqual(zustand(80), "ALARM")
def test_hysterese(self):
self.assertEqual(zustand(79, "ALARM"), "ALARM")
self.assertEqual(zustand(77, "ALARM"), "WARNUNG")
self.assertEqual(zustand(69, "WARNUNG"), "WARNUNG")
self.assertEqual(zustand(67, "WARNUNG"), "OK")
def test_datenqualitaet(self):
self.assertEqual(zustand(None), "DATENFEHLER")
self.assertEqual(zustand(float("nan")), "DATENFEHLER")
if __name__ == "__main__":
if "--test" in sys.argv:
unittest.main(argv=[sys.argv[0]])
else:
starten()Bedienung: „Nächster Messwert“ spielt den fiktiven Verlauf ab; „Alarmfall“ erzeugt 85 °C; „Datenlücke“ erzeugt einen fehlenden Wert; „Neustart“ setzt alles zurück. Der Alarm wird immer in Text und Farbe gezeigt.
Testkontrolle: Erwartet werden Ran 3 tests und OK. Im Testmodus wird keine grafische Oberfläche gestartet.
Datenfehler und sichere Grenzen (10 Minuten)

TLS-Authentisierung bei MQTT als reines Anschauungsbeispiel: Ademant, Wikimedia Commons, CC BY-SA 4.0.
Ein Dashboard ist keine sicherheitsgerichtete Abschaltung. Echte Systeme benötigen geprüfte Grenzwerte, Zugriffskontrolle, Segmentierung, Alarmmanagement und gesonderte Schutzfunktionen.
Fraunhofer ITWM verlinkt diesen Vortrag zu Condition Monitoring und Predictive Maintenance; freiwilliges Vertiefungsvideo.
Transferfrage: Welche Anzeige ist beim Sensorausfall richtig? Feedback: „DATENFEHLER“, denn ein alter Normalwert beweist keine aktuelle Unbedenklichkeit.
Gestufte Hilfen und begründete Rückmeldung
Hilfe 1 – Impuls: Was muss die Oberfläche beantworten? Aktueller Zustand – Entwicklung – erforderliche Aufmerksamkeit.
Hilfe 2 – Vorgehen: Die Funktion zustand() bewertet; zeichnen() visualisiert. Prüfe die Bewertung unabhängig von der Anzeige.
Hilfe 3 – Muster: 70 °C → WARNUNG; 80 °C → ALARM; 79 °C nach ALARM → ALARM; fehlender Wert → DATENFEHLER. Warum? Inklusive Grenzwerte, 2 °C Hysterese und eigene Datenfehlerklasse.
| Niveau | Lokale Prüfung | Feedback mit Begründung |
|---|---|---|
| Basis | 70 °C bewerten | WARNUNG, da die Schwelle eingeschlossen ist |
| Anwendung | 82 °C gefolgt von 79 °C bewerten | ALARM bleibt bis unter 78 °C |
| Transfer | Leeren Wert simulieren | DATENFEHLER statt OK, weil die Gültigkeit fehlt |
Interaktive Aufgaben
Quiz: Teste Dein Wissen
Wie wird ein fehlender Temperaturwert markiert? (DATENFEHLER) (!OK) (!ENTWARNUNG) (!NORMALBETRIEB)
Was macht der MQTT-Broker? (Er verteilt abonnierte Nachrichten) (!Er misst Temperaturen) (!Er ersetzt Sensoren) (!Er schaltet Motoren ab)
Was bedeutet Trend? (Verlauf mehrerer Messwerte) (!Art einer Schutzschaltung) (!Name eines Passworts) (!Farbe des Sensors)
Welcher Zustand gilt bei 82 Grad Celsius im Lernmodell? (ALARM) (!WARNUNG) (!OK) (!DATENFEHLER)
Warum werden Alarmfarbe und Text kombiniert? (Für eine eindeutigere Kennzeichnung) (!Zum Verschlüsseln der Daten) (!Zum Aktivieren des Gateways) (!Zum Ersetzen eines Tests)
Welche Technologie unterstützt industrielle Informationsmodelle? (OPC UA) (!PNG) (!JPEG) (!HTML allein)
Was bewirkt eine Hysterese? (Sie verhindert häufige Zustandswechsel an der Grenze) (!Sie löscht alle Sensorwerte) (!Sie lädt Kundendaten) (!Sie verbindet mit fremden Netzen)
Welche Anzeige gilt für 79 Grad Celsius direkt nach ALARM? (ALARM) (!OK) (!DATENFEHLER) (!SYSTEM AUS)
Wie testest Du die Bewertungsfunktion ohne Fenster? (Mit dem Python Testmodus) (!Mit einem fremden MQTT Broker) (!Mit einer produktiven SPS) (!Mit echten Kundendaten)
Welche Aussage zum Beispielprogramm ist richtig? (Es verwendet ausschließlich lokale fiktive Werte) (!Es liest echte Produktionssensoren) (!Es lädt Messwerte in eine Cloud) (!Es ist eine zertifizierte Sicherheitssteuerung)
Memory
| Sensor | physikalische Messgröße erfassen |
| Gateway | Übergang zwischen Komponenten |
| Broker | Nachrichten verteilen |
| Zeitreihe | Messwerte in zeitlicher Folge |
| Hysterese | verzögerte Rückschaltung |
| Datenfehler | ungültige oder fehlende Messung |
| Dashboard | visuelle Zustandsübersicht |
Drag and Drop
| Ordne die richtigen Begriffe zu. | Funktion |
|---|---|
| Sensor | Temperatur erfassen |
| Gateway | Daten vermitteln |
| Broker | Nachrichten verteilen |
| Trend | Verlauf sichtbar machen |
| Alarm | Kritischen Zustand kennzeichnen |
Kreuzworträtsel
| Sensor | Welches Bauteil erfasst eine physikalische Größe? |
| Gateway | Wie nennt man einen Vermittler zwischen technischen Systemen? |
| Broker | Wer verteilt bei MQTT abonnierte Nachrichten? |
| Trend | Wie heißt eine erkennbare Verlaufsrichtung? |
| Hysterese | Was verhindert zu häufiges Umschalten an Grenzwerten? |
| Alarm | Wie heißt ein deutlich markierter kritischer Zustand? |
LearningApps
Externe Suche; ein passendes Ergebnis ist nicht garantiert.
Lückentext
Offene Aufgaben
Nur mit fiktiven Daten in Deiner lokalen Übungsumgebung arbeiten. Basis, Anwendung und Transfer sind nach Schwierigkeit gestuft.
Leicht – Basis
- Sensor: Zeichne einen Messpunkt am erfundenen Motor. Feedback: Messort und Einheit müssen sichtbar sein, sonst bleibt die Messung mehrdeutig.
- Industrial Internet of Things: Skizziere den Datenweg. Feedback: Erfassen, Weiterleiten und Anzeigen müssen getrennt sein, weil sie unterschiedliche Aufgaben übernehmen.
- Dashboard: Entwirf drei Bereiche für Zustand, Trend und Alarm. Feedback: Eine Textkennzeichnung zusätzlich zur Farbe macht Alarme verständlicher.
- Messwert: Ordne 54, 71 und 82 °C Zustände zu. Feedback: OK, WARNUNG, ALARM entsprechen den Übungsgrenzen.
Standard – Anwendung
- Python: Führe die drei Offline-Tests aus und dokumentiere das Ergebnis. Feedback: Erfolgreiche Tests bestätigen nur die geprüften Regeln, nicht die Sicherheit einer Anlage.
- Datenvisualisierung: Zeichne den vorgegebenen Temperaturverlauf mit Grenzlinien. Feedback: Nur mit Reihenfolge und Grenzen lässt sich ein Trend sinnvoll beurteilen.
- Alarmmanagement: Prüfe 82 → 79 → 77 °C. Feedback: ALARM → ALARM → WARNUNG folgt aus der Rückschaltgrenze.
- Datenqualität: Betätige „Datenlücke“ und dokumentiere die Anzeige. Feedback: DATENFEHLER verhindert eine falsche Entwarnung.
Schwer – Transfer
- Softwaretest: Ergänze lokal einen Test für unendliche Zahlen. Feedback: DATENFEHLER ist richtig, weil unendliche Zahlen keine gültigen Temperaturen sind.
- Usability: Ergänze eine symbolische Alarmanzeige für farbsehschwache Personen. Feedback: Farbe darf nicht der einzige Informationsträger sein.
- IT-Sicherheit: Plane die Trennung von Trainingsnetz, Betriebsnetz und Schutzsteuerung. Feedback: Ein Übungsdashboard benötigt keinen Zugang zur Produktion.
- Instandhaltung: Entwirf einen zweiten fiktiven Schwingungskanal auf Papier. Feedback: Andere Messgrößen brauchen eigene Einheiten und fachlich begründete Grenzwerte.


Lernkontrolle
- Systemanalyse: Zeichne, wo Sensor-, Übertragungs- und Auswertungsfehler entstehen könnten, und begründe die jeweiligen Anzeigen.
- Mensch-Maschine-Schnittstelle: Vergleiche zwei Dashboard-Entwürfe nach Alarmklarheit und Trendverständlichkeit.
- Softwarequalität: Entwirf neue Grenzwerttests und erläutere, welche Fehler damit gefunden werden können.
- Industrial Ethernet: Erkläre anhand fiktiver Daten, warum korrekte Datenübertragung nicht automatisch richtige Messwerte bedeutet.
- Risikobeurteilung: Beurteile, warum der Prototyp keine Sicherheitsabschaltung ersetzen kann.
- Wartungsplanung: Erläutere, welche zusätzlichen Betriebsinformationen eine Wartungsentscheidung verbessern würden.
Lernnachweis
- Dokumentierter Dashboard-Entwurf mit Zustand, Trend und eindeutigem Alarm.
- Lokale Programmausführung mit ausschließlich fiktiven Daten.
- Drei bestandene Tests samt Erläuterung der getesteten Regeln.
- Fehlerfallanalyse für Hysterese und fehlende Werte.
- Begründete Abgrenzung von echten Anlagen und Netzen.
- Eine eigene Verbesserungsidee für die Offline-Simulation.
OERs zum Thema
Thematisch passende Wikipedia-Einstiege:
Geprüfte Fachquellen (10.10.2026):
- MQTT.org – Grundlagen und MQTT-Spezifikationen.
- OPC Foundation – OPC UA.
- Fraunhofer EMFT – Condition Monitoring.
- BSI – Empfehlungen für ICS.
- Python – Tkinter und Python – unittest.
Medienrechte: Commons-Bilder mit Urheber und Lizenz direkt am Bild, weitere Bedingungen auf der jeweiligen Dateiseite. Videos von HiveMQ, OPC Foundation und ein durch Fraunhofer verlinkter Vortrag sind nicht automatisch OER-lizenziert. Die freiwillige Wiedergabe externer Videos kann Daten an YouTube übertragen. Das lokale Programm überträgt nichts.
Verknüpfte Lernbereiche
aiMOOC-Projekte
Schulfach+


aiMOOCs


aiMOOC Projekte


MOOCwiki · Deutsch
Nach dem Lernen ist vor dem Lernen
Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.
Zur MOOCwiki-HauptseiteMediathek
Mediathek wird aus dem Wiki geladen ...
Keine passenden Inhalte gefunden. Bitte ändere Suche oder Filter.
NEWSLernweltNOAH fragen