MQTT Protokoll: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 42: | Zeile 42: | ||
; Anwendung und Monitoring mit MQTT: | ; Anwendung und Monitoring mit MQTT: | ||
* MQTT kann verwendet werden, um den Status langer Prozesse zu überwachen, indem periodisch Statusmeldungen gesendet werden. | * MQTT kann verwendet werden, um den Status langer Prozesse zu überwachen, indem periodisch Statusmeldungen gesendet werden. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
= Weiter = | = Weiter = | ||
| Zeile 58: | Zeile 47: | ||
* Die »mosquitto_*«-Utilities sind für Tests oder zum Einbetten in Shellskripte unerlässlich. | * Die »mosquitto_*«-Utilities sind für Tests oder zum Einbetten in Shellskripte unerlässlich. | ||
* Unabhängig davon existieren MQTT-APIs für viele Sprachen, von Java und Javascript über C, C#, Objective-C und Lua bis Perl und Python. | * Unabhängig davon existieren MQTT-APIs für viele Sprachen, von Java und Javascript über C, C#, Objective-C und Lua bis Perl und Python. | ||
| − | * | + | * Ein Subscriber vereinbart typischerweise einen Callback, der aufgerufen wird, sobald eine Nachricht eintrifft; der Client verbindet sich mit dem Broker und geht kontrolliert in eine Endlosschleife. |
| − | |||
* Trifft vom Broker eine Nachricht mit dem richtigen Topic ein, wird der Callback ausgeführt, der die Nachricht ausgibt, in eine Datenbank speichert oder Ähnliches. | * Trifft vom Broker eine Nachricht mit dem richtigen Topic ein, wird der Callback ausgeführt, der die Nachricht ausgibt, in eine Datenbank speichert oder Ähnliches. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
; Weitere Funktionen: | ; Weitere Funktionen: | ||
| − | * Um den Client-Status zu überwachen, fügt man einen letzten Willen | + | * Um den Client-Status zu überwachen, fügt man einen letzten Willen (LWT) hinzu. |
* Das Projekt »mqttwarn« bietet ein Python-Werkzeug mit vielen Plugins für das Monitoring an. | * Das Projekt »mqttwarn« bietet ein Python-Werkzeug mit vielen Plugins für das Monitoring an. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
; Websockets: | ; Websockets: | ||
| Zeile 117: | Zeile 67: | ||
= Quellen = | = Quellen = | ||
* https://www.linux-magazin.de/ausgaben/2015/11/mqtt/ | * https://www.linux-magazin.de/ausgaben/2015/11/mqtt/ | ||
| − | |||
Aktuelle Version vom 20. Juni 2026, 06:45 Uhr
Grundsätzliches
- Entwicklung und Zweck
- MQTT wurde von IBM als "Message Queueing Telemetry Transport" entwickelt und ist besonders für das IoT geeignet.
- Protokollart
- MQTT ist ein Publish/Subscribe-Protokoll, bei dem sich Clients mit einem Broker verbinden, um Nachrichten zu senden oder zu empfangen.
- Ports und Kommunikation
- Nutzt TCP-Port 1883 und TLS-TCP-Port 8883, reduziert die Notwendigkeit von Polling, was Bandbreite spart und die Latenz minimiert.
- Client und Broker Beziehung
- Der Inhalt der Nachrichten ist dem Broker unbekannt; seine Aufgabe endet mit der Zustellung der Nachricht.
- Topics und Nachrichtenhandling
- Nachrichten sind mit Topics verbunden, die wie hierarchische Pfade strukturiert sind und Wildcards für flexible Abonnements unterstützen.
- Payloads und Daten
- Unterstützt bis zu 256 MByte große Payloads, häufig verwendet für einfache Datenstrings oder JSON-verpackte Daten.
- Retained-Flag
- Der Broker speichert die letzte Nachricht eines Topics und stellt sie jedem neuen Subscriber sofort zu.
- LWT (Last Will and Testament)
- Ermöglicht Clients, beim Verbinden eine Nachricht zu hinterlegen, die der Broker erst bei einem unerwarteten Ausfall veröffentlicht.
- Online-/Offline-Status
- Üblicher Kniff: Online-Status wird als retained Nachricht gesetzt, der Offline-Status kommt per LWT (idealerweise ebenfalls retained) — so kommunizieren Clients zuverlässig, ob sie erreichbar sind.
- Qualitätskontrolle
- MQTT bietet drei Servicequalitätsstufen (QoS), die von keiner Zusicherung bis zur garantierten einmaligen Zustellung reichen.
- Broker
- MQTT-Broker wie Mosquitto und HiveMQ bieten erweiterte Funktionen wie Clustering und unterstützen Websockets für flexible Netzwerkanwendungen.
Praxis
- Praktische Anwendung
- Ein Beispiel ist ein Temperatursensor, der Temperaturen in Fahrenheit misst und nach Konvertierung in Celsius wieder publiziert.
Weiter
- MQTT-Kommandos in der Praxis
- Befehl im ersten Terminal: mosquitto_sub -v -t '#'
- Befehl im zweiten Terminal für eine einfache Nachricht: mosquitto_pub -t linux/magazin -m "Hello world"
- Befehl mit Retained Flag: mosquitto_pub -r -t linux/magazin -m "Hallo Welt"
- Retained Messages
- Wenn das Retained-Flag verwendet wird, begrüßt MQTT zukünftige Subscriber mit der zuvor gespeicherten Nachricht auf dem Topic "linux/magazin".
- Broker und Bridges
- Die Auswahl eines MQTT-Brokers sollte basierend auf den spezifischen Anforderungen wie Clustering-Support und Sprachunterstützung getroffen werden.
- MQTT-Bridges helfen, Geräte ohne TLS-Support sicher zu verbinden, indem Nachrichten zu einem nahegelegenen gesicherten Broker weitergeleitet werden.
- Anwendung und Monitoring mit MQTT
- MQTT kann verwendet werden, um den Status langer Prozesse zu überwachen, indem periodisch Statusmeldungen gesendet werden.
Weiter
- Für Programmierer
- Die »mosquitto_*«-Utilities sind für Tests oder zum Einbetten in Shellskripte unerlässlich.
- Unabhängig davon existieren MQTT-APIs für viele Sprachen, von Java und Javascript über C, C#, Objective-C und Lua bis Perl und Python.
- Ein Subscriber vereinbart typischerweise einen Callback, der aufgerufen wird, sobald eine Nachricht eintrifft; der Client verbindet sich mit dem Broker und geht kontrolliert in eine Endlosschleife.
- Trifft vom Broker eine Nachricht mit dem richtigen Topic ein, wird der Callback ausgeführt, der die Nachricht ausgibt, in eine Datenbank speichert oder Ähnliches.
- Weitere Funktionen
- Um den Client-Status zu überwachen, fügt man einen letzten Willen (LWT) hinzu.
- Das Projekt »mqttwarn« bietet ein Python-Werkzeug mit vielen Plugins für das Monitoring an.
- Websockets
- Moderne Webbrowser können MQTT mit Hilfe von Websockets nutzen.
- Das Paho-Projekt stellt ein Javascript-Modul bereit, das dies implementiert.
- Viele Broker bieten Websocket-Unterstützung; bei Mosquitto muss dafür ein eigener Listener konfiguriert werden (z. B.
listener 9001+protocol websockets).
- Im richtigen Leben
- MQTT wird außerhalb des IoT in verschiedenen Produkten eingesetzt, z. B. für den Statistik-Daemon Collectd und das Loggingsystem Graylog.
- Das Open-Source-Projekt Owntracks stellt iOS- und Android-Clients bereit, die über MQTT Positionierungsdaten an den eigenen MQTT-Broker liefern.
- Bei der Heimautomatisierung und openHAB kann MQTT ebenfalls nützlich sein.
- Facebook setzt beim Messenger aufgrund der geringen Latenz auf MQTT.