Blog/MQTT

MQTT12. Mai 20265 Minuten

MQTT-Topics planen: ein Schema, das einen Gerätetausch übersteht

Das Topic-Schema ist die Entscheidung, die beim Einrichten fünf Minuten dauert und danach jahrelang bestimmt, wie brauchbar die Daten sind. Umbenennen heisst später: jede Verknüpfung in jedem Zielsystem neu ziehen.

Das Wichtigste in Kürze

  • Nach Ort und Funktion gliedern, nie nach Seriennummer.
  • Die Hierarchie von grob nach fein, damit Platzhalter sinnvoll greifen.
  • Einheiten und Zeitstempel gehören in die Nutzlast, nicht ins Topic.
  • Ein Schema, das Erweiterungen verträgt, hat eine freie Ebene eingeplant.

Die Grundregel

Ein Topic soll beschreiben, was gemessen wird und wo – nicht, womit. Der Messpunkt bleibt, das Gerät wird getauscht. Ein Topic, das die Seriennummer enthält, ist beim ersten Defekt wertlos.

Bewährt hat sich diese Reihenfolge, von grob nach fein:

Ebene 1Liegenschaft oder Standort
Ebene 2Gebäude oder Bauteil
Ebene 3Geschoss, Zone oder Nutzeinheit
Ebene 4Messpunkt in Anlagenbezeichnung
Ebene 5Messgrösse

Beispiel: werk-nord/halle-2/zone-ost/hv-abgang-04/wirkenergie-import

Warum die Reihenfolge zählt

MQTT-Abonnements arbeiten mit Platzhaltern: + für genau eine Ebene, # für alles darunter. Diese Platzhalter greifen nur dann sinnvoll, wenn die Hierarchie von grob nach fein läuft.

werk-nord/# liefert alles aus dem Werk. werk-nord/+/+/+/wirkenergie-import liefert alle Wirkenergie-Importwerte, unabhängig von Halle und Zone. Bei einer Struktur, die mit der Messgrösse beginnt, funktioniert keine dieser Abfragen.

Fünf Fehler, die später Geld kosten

  1. Seriennummer im Topic. Überlebt den ersten Gerätetausch nicht.
  2. Einheit im Topic, etwa .../energie-kwh. Ändert sich die Skalierung, ändert sich das Topic. Einheiten gehören in die Nutzlast.
  3. Umlaute, Leerzeichen und Grossbuchstaben. Technisch oft erlaubt, in der Praxis eine Quelle stiller Fehler. Kleinbuchstaben und Bindestriche.
  4. Zeitangaben im Topic, etwa ein Datum pro Tag. Erzeugt unendlich viele Topics und macht Abonnements unmöglich.
  5. Keine Reserveebene. Kommt ein zweites Gebäude dazu, muss die ganze Struktur umgebaut werden.

Was in die Nutzlast gehört

Das Topic sagt, wo. Die Nutzlast sagt, was und wann. Für Energiedaten hat sich ein kleines JSON-Objekt bewährt mit Wert, Einheit, Zeitstempel und einem Statusfeld.

Der Zeitstempel in der Nutzlast ist nicht optional. Er unterscheidet den Zeitpunkt der Messung vom Zeitpunkt der Zustellung – und erlaubt, Duplikate aus QoS 1 zu erkennen und nachgelieferte Werte korrekt einzuordnen. Ohne ihn ist eine Nachlieferung nach einem Broker-Ausfall nicht von einem aktuellen Wert zu unterscheiden.

Das EMU M-Center erlaubt frei konfigurierbare Topics und QoS; die MQTT-Funktion ist lizenzpflichtig und TLS-verschlüsselt.

Vor dem ersten Publish festlegen

  • Schema schriftlich, abgestimmt mit dem Empfängersystem
  • Benennungsregeln: Kleinbuchstaben, Bindestriche, keine Umlaute
  • Eine Ebene Reserve für spätere Standorte oder Bauteile
  • Nutzlastformat mit Wert, Einheit, Zeitstempel, Status
  • Wer darf veröffentlichen, wer darf abonnieren

Dasselbe Prinzip gilt bei BACnet-Objektnamen – nur dass dort das Umbenennen noch teurer ist.

Häufige Fragen


Wie sollte ein MQTT-Topic für Energiedaten aufgebaut sein?

Hierarchisch von grob nach fein und nach Ort und Funktion statt nach Gerät: Liegenschaft, Gebäude, Zone, Messpunkt, Messgrösse. So greifen Platzhalter sinnvoll und das Schema übersteht einen Gerätetausch.

Gehört die Einheit ins Topic?

Nein. Einheit, Zeitstempel und Status gehören in die Nutzlast. Steht die Einheit im Topic, ändert sich bei einer Skalierungsänderung der Pfad und damit jedes Abonnement.

Warum braucht die Nutzlast einen Zeitstempel?

Er trennt den Messzeitpunkt vom Zustellzeitpunkt. Damit lassen sich Duplikate aus QoS 1 erkennen und nach einer Unterbrechung nachgelieferte Werte korrekt einordnen.

Weiterlesen


TXTMQTT für Energiedaten: Broker, Topics und QoS verständlich erklärtBlogbeitrag TXTZählerdaten in die Cloud: MQTT-Anbindung mit dem EMU M-CenterBlogbeitrag SEITETCP/IP-SchnittstelleSchnittstelle

Fragen zu Ihrem Projekt?


Schicken Sie uns Ihre Zählerliste und das Zielsystem. Wir sagen Ihnen, was zusammenpasst – und was nicht.

Telefon
+41 (0)41 545 03 00

Technischer Support
helpdesk@emuag.ch