MQTT Protokoll: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Grunsätzliches=
+
= Grundsätzliches =
 
;Entwicklung und Zweck:
 
;Entwicklung und Zweck:
 
* MQTT wurde von IBM als "Message Queueing Telemetry Transport" entwickelt und ist besonders für das IoT geeignet.
 
* MQTT wurde von IBM als "Message Queueing Telemetry Transport" entwickelt und ist besonders für das IoT geeignet.
Zeile 7: Zeile 7:
 
* Nutzt TCP-Port 1883 und TLS-TCP-Port 8883, reduziert die Notwendigkeit von Polling, was Bandbreite spart und die Latenz minimiert.
 
* 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:
 
;Client und Broker Beziehung:
* Die Inhalt der Nachrichten ist dem Broker unbekannt; seine Aufgabe endet mit der Zustellung der Nachricht.
+
* Der Inhalt der Nachrichten ist dem Broker unbekannt; seine Aufgabe endet mit der Zustellung der Nachricht.
 
;Topics und Nachrichtenhandling:
 
;Topics und Nachrichtenhandling:
 
* Nachrichten sind mit Topics verbunden, die wie hierarchische Pfade strukturiert sind und Wildcards für flexible Abonnements unterstützen.
 
* Nachrichten sind mit Topics verbunden, die wie hierarchische Pfade strukturiert sind und Wildcards für flexible Abonnements unterstützen.
 
;Payloads und Daten:
 
;Payloads und Daten:
 
* Unterstützt bis zu 256 MByte große Payloads, häufig verwendet für einfache Datenstrings oder JSON-verpackte Daten.
 
* Unterstützt bis zu 256 MByte große Payloads, häufig verwendet für einfache Datenstrings oder JSON-verpackte Daten.
;Letzter Wille und Retained-Flag:
+
;Retained-Flag:
* Ermöglicht das Setzen von Nachrichten, die gespeichert und bei Bedarf an Subscriber gesendet werden.
+
* Der Broker speichert die letzte Nachricht eines Topics und stellt sie jedem neuen Subscriber sofort zu.
=Weiter=
 
;Entwicklung und Zweck:
 
* MQTT, entwickelt von IBM, dient als effizientes Kommunikationsprotokoll, besonders für IoT-Anwendungen.
 
 
;LWT (Last Will and Testament):
 
;LWT (Last Will and Testament):
* Ermöglicht Clients, Nachrichten für den Fall eines unerwarteten Ausfalls zu hinterlegen, die dann vom Broker veröffentlicht werden.
+
* Ermöglicht Clients, beim Verbinden eine Nachricht zu hinterlegen, die der Broker erst bei einem unerwarteten Ausfall veröffentlicht.
;Retained-Flag:
+
;Online-/Offline-Status:
* Wird genutzt, um den Zustand eines Clients dauerhaft zu speichern und zu kommunizieren, ob ein Client online oder offline ist.
+
* Ü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:
 
;Qualitätskontrolle:
 
* MQTT bietet drei Servicequalitätsstufen (QoS), die von keiner Zusicherung bis zur garantierten einmaligen Zustellung reichen.
 
* MQTT bietet drei Servicequalitätsstufen (QoS), die von keiner Zusicherung bis zur garantierten einmaligen Zustellung reichen.
 
;Broker:
 
;Broker:
* MQTT-Broker wie Mosquitto und Hivemq bieten erweiterte Funktionen wie Clustering und unterstützen Websockets für flexible Netzwerkanwendungen.
+
* MQTT-Broker wie Mosquitto und HiveMQ bieten erweiterte Funktionen wie Clustering und unterstützen Websockets für flexible Netzwerkanwendungen.
 +
 
 +
= Praxis =
 
;Praktische Anwendung:
 
;Praktische Anwendung:
 
* Ein Beispiel ist ein Temperatursensor, der Temperaturen in Fahrenheit misst und nach Konvertierung in Celsius wieder publiziert.
 
* Ein Beispiel ist ein Temperatursensor, der Temperaturen in Fahrenheit misst und nach Konvertierung in Celsius wieder publiziert.
Hier ist eine Zusammenfassung und ein weiterführendes Skriptbeispiel basierend auf dem Artikel aus dem Linux-Magazin:
 
  
 +
= 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. <code>listener 9001</code> + <code>protocol websockets</code>).
 +
 +
; 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.
  
Dieser Code-Block umfasst alle wesentlichen Aspekte des Textes, angepasst für eine direkte Verwendung in einem technischen Dokument oder Wiki.
+
= Quellen =
 +
* 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.

Quellen