Zum Inhalt springen

Digitale Vernetzung und Industrial IoT – Datenpunkte mit Einheiten modellieren

Aus MOOCsWiki Staging
Version vom 11. Oktober 2026, 01:32 Uhr von Glanz (Diskussion | Beiträge) (aiMOOC über GPT aiMOOC Action erstellt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
aiMOOC-Siegel aiMOOC

Digitale Vernetzung und Industrial IoT – Datenpunkte mit Einheiten modellieren

QR-Code


Digitale Vernetzung und Industrial IoT – Datenpunkte mit Einheiten modellieren

Zielgruppe: Ausbildung in Automatisierungstechnik, Mechatronik und IT. Dauer: ca. 60–90 Minuten. Vorkenntnisse: Grundbegriffe zu Sensoren; Python ist hilfreich, aber nicht zwingend.

Dein Ziel: Du modellierst Messwerte mit Zeit, Messgröße, Einheit und Geräteidentität, prüfst Fehler und erklärst die Bedeutung für das Industrial IoT (IIoT).

Sicher arbeiten: Alle Geräte, IDs und Messwerte hier sind erfunden. Die Programme laufen nur lokal und offline, ohne Netzwerkzugriff, Broker oder Anlagensteuerung. Verwende keine Produktivanlagen, fremden Netze, Passwörter oder Kundendaten.

Bild: Beispiel einer IIoT-Architektur. Welche Station erzeugt Messdaten, welche wertet sie aus?


Einleitung

Ausbildungsfall: Am fiktiven Werkstatt-Teststand LAB-K1 werden zwei Temperaturkanäle T01 und T02 beobachtet. Du sollst aus den Werten eine verständliche Datenreihe bilden. Als Übungsgrenze gilt für T01 22,5 °C. Dies ist ausschließlich eine erfundene Lernregel, kein realer Anlagen-Grenzwert.

Video der OPC Foundation: Kurzüberblick über OPC UA. Beobachtungsauftrag: Warum benötigen vernetzte Geräte gemeinsame Datenbeschreibungen?


Lerneinheit 1 – Welches Gerät misst? (ca. 7 Minuten)

Ein Sensor erfasst eine physikalische Größe. Die Gerätekennung LAB-K1 bezeichnet unseren Teststand; die Sensorkennung T01 die Messstelle. Erst die Kombination macht die Herkunft in diesem Lernmodell eindeutig.

Sensorprinzip: Ein physikalischer Zustand wird in ein nutzbares Signal umgesetzt.

Mini-Auftrag: Wenn T01 und T02 beide 22,0 melden: Sind es dieselben Messungen? Feedback: Nein. Gleiche Zahlenwerte bedeuten nicht gleiche Herkunft; die Sensorkennung unterscheidet die Messstellen.


Lerneinheit 2 – Was wird wann gemessen? (ca. 8 Minuten)

Ein Datenpunkt verbindet Gerät, Sensor, Messgröße, Zahlenwert, Einheit, Messzeitpunkt und hier zusätzlich Qualität. temperature beschreibt die Messgröße, 22.8 ihren Zahlenwert, °C die Einheit. K ist die SI-Basiseinheit der thermodynamischen Temperatur; 22,8 °C = 295,95 K. Eine andere Einheit verlangt eine passende Umrechnung des Zahlenwerts.

Die Skala zeigt, warum eine Zahl ohne Einheit missverständlich bleibt.

Der Zeitstempel 2026-10-10T14:02:00Z bezeichnet den 10. Oktober 2026, 14:02 Uhr UTC. Das Z kennzeichnet UTC. Die Messzeit ist nicht automatisch die spätere Empfangszeit im Netzwerk. Orientierung: ISO 8601 / RFC 3339.

{
  "device_id": "LAB-K1",
  "sensor_id": "T01",
  "quantity": "temperature",
  "value": 22.8,
  "unit": "°C",
  "timestamp": "2026-10-10T14:02:00Z",
  "quality": "good"
}

Das ist ein eigenes didaktisches JSON-Modell, keine vorgeschriebene MQTT-Nachricht und kein vollständiges OPC-UA-Datenmodell.


Lerneinheit 3 – Datenreihe sehen (ca. 8 Minuten)

Messzeit in UTC T01 in °C T02 in °C Regel für T01
14:00 21,5 19,0 innerhalb der Übungsgrenze
14:01 22,0 19,2 innerhalb der Übungsgrenze
14:02 22,8 19,4 über 22,5 °C

Visualisierung für T01: Jedes █ steht für 0,1 °C oberhalb von 21,0 °C. Die Zahlen bleiben für genaue Aussagen entscheidend.

14:00  21,5 °C  █████
14:01  22,0 °C  ██████████
14:02  22,8 °C  ██████████████████

Deute: T01 steigt um 1,3 °C. Nur der dritte Wert überschreitet die fiktive Schwelle von 22,5 °C. Ein Zeitdiagramm ohne Einheiten, Sensor-ID oder Zeitbezug wäre schwer zuverlässig auszuwerten.

Vertiefung: Ein standardisiertes Sensordatenmodell verknüpft Beobachtung, Messgröße, Sensor und zugehöriges Objekt. Es ist komplexer als unser Übungs-JSON.


Lerneinheit 4 – Vom Datenpunkt zur Vernetzung (ca. 8 Minuten)

MQTT transportiert Nachrichten über ein Publish/Subscribe-Prinzip. MQTT legt nicht von sich aus unser JSON-Feldschema fest. In einem echten Projekt müssten Datenstruktur, Einheiten und Identitäten zusätzlich vereinbart werden. Hier wird nichts gesendet.

Ein Broker verteilt Nachrichten an abonnierende Teilnehmer. Im Kurs wird nur das Prinzip betrachtet.

HiveMQ: Einführung in MQTT. Frage: Welche Aufgabe hat der Broker?

OPC UA bietet neben Kommunikation auch Informationsmodelle. Ein DataValue kann Wert, Status und Quellzeitpunkt enthalten; die Eigenschaft EngineeringUnits beschreibt bei entsprechenden Datenvariablen die technische Einheit. Die NodeId identifiziert einen Knoten im OPC-UA-Adressraum; sie ist nicht automatisch identisch mit unserer Gerätekennung.

Schichten einer OPC-UA-Anwendung: Transport und Bedeutung der Daten sind unterschiedliche Aufgaben.

OPC Foundation / Unified Automation: OPC-UA-Konzepte. Zusatzfrage: Wie unterstützt ein Informationsmodell die Interpretation eines Werts?


Lerneinheit 5 – Lokales Praxislabor: Modell erzeugen (ca. 10 Minuten)

Umgebung A: Eigener Ausbildungsrechner mit Python 3.9 oder neuer, offline. Speichere den Code als modell.py und starte lokal mit python modell.py oder python3 modell.py. Keine Zusatzpakete, keine externen Server.

from datetime import datetime, timedelta, timezone
import json

werte = [21.5, 22.0, 22.8]  # nur erfundene Celsiuswerte
start = datetime(2026, 10, 10, 14, 0, tzinfo=timezone.utc)

for minute, wert in enumerate(werte):
    punkt = {
        "device_id": "LAB-K1",
        "sensor_id": "T01",
        "quantity": "temperature",
        "value": wert,
        "unit": "°C",
        "timestamp": (start + timedelta(minutes=minute))
                     .isoformat().replace("+00:00", "Z"),
        "quality": "good"
    }
    print(json.dumps(punkt, ensure_ascii=False))
    print("Über 21,0 °C:", "█" * round((wert - 21.0) * 10))

Erwartung: Drei vollständige JSON-Zeilen und Balken mit 5, 10, 18 Blöcken. Feedback: Ohne unit wäre der Balken nicht physikalisch beschriftet; ohne timestamp wäre die Reihenfolge nicht eindeutig als Messzeit dokumentiert.


Lerneinheit 6 – Isolierte interaktive Fehlerwerkstatt (ca. 12 Minuten)

Umgebung B: Speichere als prueflabor.py und starte lokal/offline. Wähle am eigenen Rechner mit 0 bis 6 einen Test. Das Programm verändert ausschließlich eine Kopie eines erfundenen Datenpunkts; es liest oder versendet keine Messdaten. Es prüft nur unser eng definiertes Lernschema, keinen universellen Standard.

import json
import re
from datetime import datetime

basis = {
    "device_id": "LAB-K1",
    "sensor_id": "T01",
    "quantity": "temperature",
    "value": 22.8,
    "unit": "°C",
    "timestamp": "2026-10-10T14:02:00Z",
    "quality": "good"
}

def pruefe(p):
    pflicht = {"device_id", "sensor_id", "quantity", "value",
               "unit", "timestamp", "quality"}
    if set(p) != pflicht:
        return "FEHLER: Pflichtfelder stimmen nicht."
    if p["device_id"] != "LAB-K1" or p["sensor_id"] not in {"T01", "T02"}:
        return "FEHLER: Unbekannte Testidentität."
    if p["quantity"] != "temperature" or p["unit"] != "°C":
        return "FEHLER: Messgröße und Einheit passen nicht zum Lernmodell."
    if type(p["value"]) not in (int, float):
        return "FEHLER: Wert muss eine Zahl sein."
    zeit = p["timestamp"]
    if not isinstance(zeit, str) or not re.fullmatch(
            r"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z", zeit):
        return "FEHLER: UTC-Zeitstempel im vorgegebenen Format fehlt."
    try:
        datetime.strptime(zeit, "%Y-%m-%dT%H:%M:%SZ")
    except ValueError:
        return "FEHLER: Datum oder Uhrzeit ungültig."
    if p["quality"] not in {"good", "uncertain", "bad"}:
        return "FEHLER: Unbekannter Qualitätsstatus."
    if p["quality"] != "good":
        return "WARNUNG: Vollständig, aber nicht für Entscheidungen freigegeben."
    return "OK: Im Lernmodell vollständiger Datenpunkt."

wahl = input("Test 0=ok 1=ohne Einheit 2=falsche Einheit "
             "3=ohne UTC 4=fremder Sensor 5=Textwert 6=unsicher: ").strip()
punkt = basis.copy()
if wahl == "1":
    punkt.pop("unit")
elif wahl == "2":
    punkt["unit"] = "K"
elif wahl == "3":
    punkt["timestamp"] = "2026-10-10T14:02:00"
elif wahl == "4":
    punkt["sensor_id"] = "T99"
elif wahl == "5":
    punkt["value"] = "22.8"
elif wahl == "6":
    punkt["quality"] = "uncertain"

print(json.dumps(punkt, ensure_ascii=False))
print(pruefe(punkt))

Feedback mit Begründung: 0 ist vollständig; 1 lässt eine Pflichtangabe weg; 2 verändert die Einheit ohne Zahlenumrechnung; 3 entfernt den eindeutigen UTC-Bezug; 4 ist im Teststand unbekannt; 5 speichert statt einer Zahl Text; 6 ist formal vollständig, aber die Messqualität ist nicht verlässlich genug für eine automatische Entscheidung. Hinweis: Ein Grenzwertalarm ist hier nur eine Lernübung, niemals ein Signal an eine Anlage.


Gestufte Hilfen

  1. Hilfe 1 – Denkanstoß: Frage bei jeder Zahl: Von welchem Gerät und Sensor? Welche Größe, Einheit und Messzeit?
  2. Hilfe 2 – Struktur: Vergleiche die Felder device_id, sensor_id, quantity, value, unit, timestamp, quality.
  3. Hilfe 3 – Beispiel: LAB-K1 / T01 / temperature / 22.8 / °C / 2026-10-10T14:02:00Z / good. Falls die Einheit K sein soll, rechne 22,8 + 273,15 = 295,95.


Interaktive Aufgaben


Quiz: Teste Dein Wissen

Was macht aus der Zahl 22,8 einen interpretierbaren Temperaturwert? (Die Angabe einer passenden Einheit) (!Die Schriftfarbe) (!Die Größe des Monitors) (!Die Position im Dateinamen)




Welches Feld benennt den Teststand? (device_id) (!value) (!unit) (!quality)




Welches Feld unterscheidet die Kanäle T01 und T02? (sensor_id) (!timestamp) (!value) (!quantity)




Welche Messgröße steckt hinter temperature? (Temperatur) (!Druck) (!Stromstärke) (!Länge)




Was bedeutet Z am Ende unseres Zeitstempels? (Die Zeit ist als UTC gekennzeichnet) (!Die Uhr ist ausgeschaltet) (!Der Wert ist zufällig) (!Der Sensor ist defekt)




Was ergibt die Umrechnung von 22,8 Grad Celsius in Kelvin? (295,95 Kelvin) (!22,8 Kelvin) (!250,35 Kelvin) (!273,15 Kelvin)




Wann überschreitet T01 die fiktive Grenze von 22,5 Grad Celsius? (Um 14 Uhr 02 UTC) (!Um 14 Uhr 00 UTC) (!Um 14 Uhr 01 UTC) (!Nie)




Welche Aufgabe erfüllt MQTT hauptsächlich? (Nachrichten nach dem Publish Subscribe Prinzip übertragen) (!Temperaturen automatisch in Kelvin umrechnen) (!Messgeräte mechanisch kalibrieren) (!Zeitstempel durch Bilddateien ersetzen)




Was bezeichnet EngineeringUnits im passenden OPC UA Datenmodell? (Die technische Einheit einer Datenvariablen) (!Das Kennwort des Sensors) (!Die IP Adresse des Lernrechners) (!Das Gehäusematerial)




Wie soll ein Datenpunkt mit quality uncertain im Lernfall verwendet werden? (Nicht als verlässliche Grundlage für einen automatischen Alarm) (!Ohne Prüfung als fehlerfrei gelten) (!Seine Einheit wird gelöscht) (!Seine Sensor ID wird ignoriert)





Memory

Gerätekennung Fiktiver Teststand
Sensorkennung Kanal T01
Zeitstempel UTC Messzeit
Messgröße Physikalische Temperatur
Einheit Grad Celsius
Qualitätsstatus Gütehinweis zur Messung





Drag and Drop

Ordne die richtigen Begriffe zu. Funktion im Datenpunkt
device_id Testgerät identifizieren
sensor_id Messstelle identifizieren
quantity Art der Größe beschreiben
unit Einheit des Werts angeben
timestamp Zeitpunkt der Erfassung festhalten





Kreuzworträtsel

Temperatur Welche physikalische Größe erfasst T01?
Zeitstempel Wie heißt die Angabe des Erfassungszeitpunkts?
Sensor Welches Bauteil nimmt die physikalische Größe auf?
Kelvin Wie heißt die SI-Basiseinheit der thermodynamischen Temperatur?
Datenpunkt Wie heißt ein Messwert zusammen mit seinen Kontextangaben?
Messreihe Wie heißt eine zeitlich geordnete Folge von Messwerten?





LearningApps

Dies ist eine externe Themensuche, keine lokal ausgeführte Übungsumgebung. Öffne externe Dienste nur, wenn dies für Deine Lerngruppe erlaubt ist; trage keine echten Betriebsdaten ein.


Lückentext

Vervollständige den Text.
Der fiktive Teststand wird durch

gekennzeichnet.
Die Messstelle ist unter

zu finden.
Die Art der gemessenen Größe steht in

.
Der Zahlenwert steht im Feld

.
Das Feld

enthält die technische Einheit.
Die UTC-Messzeit steht in

.
Die Kennzeichnung

steht im Beispiel für gute Messqualität.
Für die Celsius-Temperatur verwenden wir das Symbol

.
Die thermodynamische SI-Basiseinheit heißt

.
Ein MQTT-Vermittler heißt

.



Offene Aufgaben

Arbeite immer mit selbst erfundenen Daten und nur in Deiner lokalen Testumgebung. Das angegebene Feedback beschreibt überprüfbare Erfolgskriterien.


Leicht – Basisaufgaben

  1. Datenmodell: Markiere alle sieben Felder des Beispiel-JSON. Feedback: Vollständig, wenn Herkunft, Inhalt, Zeit und Qualitätsstatus auffindbar sind; nur der Zahlenwert reicht nicht.
  2. Sensor: Zeichne LAB-K1 mit den Kanälen T01 und T02. Feedback: Beide müssen unterscheidbar sein, damit gleich hohe Werte nicht verwechselt werden.
  3. Maßeinheit: Erkläre in zwei Sätzen den Unterschied zwischen temperature und °C. Feedback: Messgröße bezeichnet was, Einheit bezeichnet worin gemessen wird.
  4. Diagramm: Übertrage die drei T01-Werte maßstäblich in ein Diagramm mit Zeitachse. Feedback: Richtig sind UTC auf der x-Achse und °C auf der y-Achse; sonst fehlt die Einordnung.


Standard – Anwendungsaufgaben

  1. JSON: Erstelle einen eigenen Datenpunkt für T02 um 14:02 UTC mit 19,4 °C. Feedback: Erwartet werden LAB-K1, T02, 19.4, °C und die richtige UTC-Zeit; Herkunft und Einheit müssen zusammenpassen.
  2. Softwaretest: Starte im Prüflabor die Varianten 0 bis 6 und notiere für jede den Befund. Feedback: Sechs fehlerhafte oder kritisch markierte Varianten plus ein gültiger Referenzfall müssen begründet sein.
  3. Temperatur: Berechne 22,8 °C in Kelvin und passe Wert und Einheit im JSON an. Feedback: 295.95 und K müssen gemeinsam geändert werden, da ein bloßes Austauschen der Einheit falsch wäre.
  4. Zeitstempel: Vergleiche 2026-10-10T14:02:00Z mit 2026-10-10T14:02:00. Feedback: Der erste Wert benennt eindeutig UTC; beim zweiten fehlt die Zeitzonenangabe.


Schwer – Transferaufgaben

  1. Datenqualität: Entwirf eine Regel für den Umgang mit uncertain und bad. Feedback: Eine gute Regel trennt formelle Datenvollständigkeit von Verlässlichkeit und verhindert automatische Entscheidungen bei fragwürdigen Werten.
  2. Druck: Übertrage das Datenmodell auf einen fiktiven Drucksensor mit Einheit kPa. Feedback: Die Messgröße muss pressure heißen; der Prüfer benötigt dann bewusst eine neue zulässige Kombination von Messgröße und Einheit.
  3. MQTT: Zeichne eine reine Papierarchitektur mit Sensor, Broker und Anzeige und beschrifte eine fiktive Nachricht. Feedback: Transportweg, Dateninhalt und Geräteidentität sind getrennt erklärt; kein echter Broker wird angesprochen.
  4. Fehlersuche: Entwirf einen Prüfablauf für ein Dashboard, das T01 und T02 vergleicht. Feedback: Gute Lösungen prüfen Identität, Zeitbezug, Einheit und Qualität vor Grenzwert- oder Trendentscheidungen.




Text bearbeiten Bild einfügen Video einbetten Interaktive Aufgaben erstellen



Lernkontrolle

  1. Datenmodell: Zwei Geräte senden zeitgleich 22,8 °C. Begründe, weshalb das Zusammenführen ohne Gerätekennung zu einer falschen Diagnose führen kann.
  2. Zeit: Ein Wert trifft zwei Minuten nach der Messung ein. Unterscheide Messzeit und Empfangszeit und erkläre den Einfluss auf ein Trenddiagramm.
  3. Einheitenumrechnung: Eine Software setzt die Einheit von °C auf K, lässt aber den Zahlenwert stehen. Erkläre den Fehler anhand von 22,8 °C und korrigiere ihn.
  4. Datenqualität: Eine Messung liegt über der Übungsgrenze, hat aber den Status uncertain. Begründe eine vorsichtige Auswertungsentscheidung.
  5. Interoperabilität: Vergleiche die Aufgaben von MQTT und einem OPC-UA-Informationsmodell anhand des fiktiven Teststands.
  6. Datensicherheit: Beschreibe, wie Du denselben Lernfall ohne Zugang zu Produktivnetzen oder echten Kundendaten nachstellst.


Lernnachweis

  1. Datenmodell: Ein selbst erstellter JSON-Datenpunkt mit korrekter Gerätekennung, Messgröße, Zahlenwert, Einheit, UTC-Zeit und Qualitätsstatus.
  2. Visualisierung: Ein Zeitdiagramm mit zwei sauber benannten Achsen und einer begründeten Deutung der Übungsgrenze.
  3. Ausführung: Ein lokal erzeugtes Protokoll der sieben Prüflabor-Testfälle mit Ursachen für OK, FEHLER und WARNUNG.
  4. Transfer: Eine nachvollziehbare Celsius-Kelvin-Umrechnung sowie eine Modellübertragung auf eine zweite Messgröße.
  5. Reflexion: Eine kurze Erklärung zu Datenherkunft, Qualität, Zeitbezug und sicherem Arbeiten ohne echte Netze.


OERs zum Thema

Geprüfte fachliche Grundlagen (die Standards sind Quellen, aber nicht automatisch freie Lernmedien):

  1. BIPM: SI-Broschüre – offizielle Einheiten und Celsius/Kelvin.
  2. RFC 3339 – eindeutige Zeitstempel.
  3. OPC Foundation: DataValue – Status, Quellzeit und Serverzeit.
  4. OPC Foundation: Data Access – EngineeringUnits.
  5. OASIS: MQTT 5.0 – Nachrichtenformat und Übertragung.

Bildnachweise und Rechte (Bilddateien wurden auf Wikimedia Commons geprüft; bei CC BY-SA gelten Namensnennung und Lizenzbedingungen):

  1. IIoT Architecture.png – Paul McLaughlin / Rohan McAdam, CC BY-SA 4.0.
  2. Sensor prinzip.svg – mik81, CC0.
  3. Thermometer.svg – Werneuchen, gemeinfrei.
  4. SensorThings API data model.svg – OGC SensorThings API Standard Working Group, CC BY-SA 4.0.
  5. MQTT single broker multiple listener.svg – Ademant, CC BY-SA 4.0.
  6. OPC UA Application Layers.svg – Vshebordaev, CC BY-SA 3.0.

Videos: Die verifizierten Links stammen von der OPC Foundation und aus der HiveMQ-Videoserie. Sie werden nur über YouTube eingebettet, nicht als frei lizenziert zur Weiterverwendung ausgewiesen. Externe Einbettungen können Daten an Drittanbieter übertragen; für vollständig offline durchgeführte Stunden nutze ausschließlich Tabellen, Bilder und den lokalen Python-Code.

Wikipedia als ergänzende Einführung in das Internet der Dinge:



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-Hauptseite

Mediathek

Inhalte werden geladen ...

Mediathek wird aus dem Wiki geladen ...