MQTT ist ein schlankes Publish-and-Subscribe-Nachrichtenprotokoll. Es wurde für Geräte über langsame oder unzuverlässige Verbindungen entwickelt und ist inzwischen der Standardweg, über den Sensoren, Steuerungen und Gateways Daten an eine IoT-Plattform senden. Dieser Leitfaden behandelt, was Sie wissen müssen, um Industriegeräte mit MQTT anzubinden, und welche Fehler Sie besser vermeiden.
So funktioniert MQTT
MQTT kennt drei Rollen.
- Publisher senden Nachrichten. Ein Temperatursensor veröffentlicht seine Messwerte.
- Subscriber empfangen Nachrichten. Eine Plattform abonniert die Messwerte, die sie benötigt.
- Der Broker steht in der Mitte. Er nimmt jede Nachricht entgegen und leitet sie an die Subscriber weiter, die sie angefordert haben.
Geräte kommunizieren nie direkt miteinander. Jedes hält eine einzige, dauerhaft offene Verbindung zum Broker. Dadurch ist MQTT firewall- und mobilfunkfreundlich: Das Gerät baut eine ausgehende Verbindung auf, und niemand muss von außen in die Anlage gelangen.
Topics
Jede Nachricht wird an ein Topic veröffentlicht, einen Textpfad wie site-a/line-2/filler/temperature. Subscriber können Wildcards verwenden, um viele Topics gleichzeitig zu empfangen. Das Topic-Design ist wichtiger, als es auf den ersten Blick scheint.
- Halten Sie eine feste Reihenfolge ein, zum Beispiel Standort, Bereich, Gerät, Messgröße.
- Vermeiden Sie Leerzeichen und Sonderzeichen.
- Setzen Sie keine Werte oder Zeitstempel in das Topic; sie gehören in die Payload.
- Wenn eine Plattform die Topics für Sie festlegt, verwenden Sie diese. Hermetry teilt jedem Gerät mit, welche Topics es verwenden soll, sodass die Daten ohne eigene Zuordnung auf dem richtigen Gerät ankommen.
Quality of Service
MQTT bietet drei Zustellstufen, genannt QoS.
- QoS 0, höchstens einmal. Die Nachricht wird einmal ohne Bestätigung gesendet. Geeignet für häufige Messwerte, bei denen der Verlust eines Werts keine Rolle spielt.
- QoS 1, mindestens einmal. Die Nachricht wird so lange wiederholt, bis der Broker sie bestätigt. Sie kann zweimal ankommen, daher sollte der Empfänger Duplikate tolerieren. Dies ist die übliche Wahl für Telemetrie.
- QoS 2, genau einmal. Ein Handshake mit vier Schritten stellt sicher, dass die Nachricht genau einmal ankommt. Er verursacht mehr Datenverkehr und wird für Messwerte selten benötigt.
Eine praktische Regel: Verwenden Sie QoS 1 für Messwerte und Ereignisse und fügen Sie einen Zeitstempel in die Payload ein, damit Duplikate erkannt werden können.
Retained-Nachrichten und Last Will
Eine retained-Nachricht wird vom Broker gespeichert und an jeden zugestellt, der sich später abonniert. Sie eignet sich für sich langsam ändernde Zustände, etwa eine Konfiguration oder die zuletzt bekannte Position eines Ventils. Halten Sie keine schnellen Messwerte zurück; ein neuer Subscriber würde sonst ohne Warnung einen veralteten Wert erhalten.
Das Last Will ist eine Nachricht, die der Broker für ein Gerät veröffentlicht, wenn dessen Verbindung unerwartet abbricht. Es ist eine einfache Möglichkeit, ein Gerät als offline zu markieren. In Kombination mit einem Keep-Alive-Intervall erfahren Sie innerhalb von Sekunden oder Minuten, dass ein Gerät verstummt ist, je nachdem, welches Intervall Sie wählen.
Payloads
MQTT interessiert sich nicht für den Inhalt einer Nachricht. JSON ist die gängigste Wahl, da es leicht zu lesen und zu debuggen ist. Eine gute Payload enthält:
- einen Zeitstempel vom Gerät, in UTC;
- benannte Werte mit klaren Einheiten, etwa temperature_c statt t;
- nur das, was sich geändert hat oder benötigt wird, um Nachrichten auf volumenabhängigen Verbindungen klein zu halten.
Binärformate sparen Bandbreite auf sehr begrenzten Verbindungen, sind aber schwerer lesbar. Beginnen Sie mit JSON, es sei denn, Sie haben einen gemessenen Grund dagegen.
Sicherheit
Eine MQTT-Verbindung ist eine Tür in Ihre Plattform. Behandeln Sie sie entsprechend.
- Verwenden Sie immer TLS. Zugangsdaten und Daten sollten niemals unverschlüsselt durch ein Netzwerk übertragen werden.
- Vergeben Sie jedem Gerät eigene Zugangsdaten. Ein gemeinsamer Benutzername für eine ganze Geräteflotte bedeutet, dass ein kompromittiertes Gerät alle anderen offenlegt.
- Begrenzen Sie, was jedes Gerät veröffentlichen und abonnieren darf. Ein Sensor sollte nur seine eigenen Topics beschreiben können.
- Rotieren Sie Zugangsdaten, wenn ein Gerät ersetzt wird oder ein Techniker das Unternehmen verlässt.
- Verwenden Sie Zertifikate, wo Geräte sie benötigen. Manche Geräte und manche Kunden verlangen zusätzlich zu Passwörtern eine zertifikatsbasierte Identität.
Auf Hermetry verbinden sich MQTT-Geräte mit einem Benutzernamen und Passwort pro Gerät über eine verschlüsselte Verbindung, und der Zertifikatsdienst der Plattform stellt dort Zertifikate aus, wo Geräte sie benötigen.
Gateways und Geräte, die kein MQTT sprechen
Viele Industriegeräte sprechen stattdessen Modbus, SNMP oder ein herstellerspezifisches Protokoll. Die übliche Lösung ist ein Gateway vor Ort: Es liest die lokalen Geräte aus und veröffentlicht deren Daten über eine einzige MQTT- oder HTTP-Verbindung. Das hilft auch dort, wo nur eine einzige Maschine am Standort das Internet erreichen darf.
Checkliste vor dem Go-live
- Topics folgen einem festen Muster und sind dokumentiert.
- QoS 1 für Telemetrie, mit Zeitstempeln in jeder Payload.
- TLS aktiviert, eine Zugangsdaten-Kennung pro Gerät und ein Plan für deren Rotation.
- Keep-Alive und Last Will eingerichtet, damit offline gegangene Geräte auffallen.
- Gerätprofile legen fest, was jeder Gerätetyp sendet, sodass hundert Geräte genauso eingerichtet werden wie eines.
Wie Gerätprofile und Provisionierung funktionieren, lesen Sie auf der Seite zu Geräten, die vollständige Protokollliste finden Sie in der Dokumentation.

