Grundlagen

MQTT (Message Queue Telemetry Transport) ist ein einfaches TCP/IP-basiertes Nachrichtenprotokoll, das die Übertragung von Nachrichten von Geräten zum Server ermöglicht. Es wird zwischen dem MQTT-Server („Broker“) und den MQTT-Clients unterschieden. MQTT eignet sich besonders für Automatisierungslösungen.

Einfaches schematisches Beispiel zur Veranschaulichung:

MQTT-Client

Der Client verbindet sich per TCP/IP mit einem MQTT-Server, wozu im Regelfall ein Benutzername und ein Kennwort benötigt wird. Der Client kann einfach Nachrichten mit einem Topic zum MQTT-Server schicken. Der Inhalt der Nachrichten ist nicht spezifiziert, kann also zum Beispiel eine einfache Textnachricht oder eine strukturierte Nachricht sein, die aus mehreren Feldern besteht.

Der Client kann auch Nachrichten empfangen, indem er sich für spezielle Topics registriert. Der Broker leitet dann Nachrichten für die registrieren Topics an vorhandene MQTT-Clients weiter, vorausgesetzt, diese sind zum Zeitpunkt der Nachricht verbunden. Grundsätzlich kann der Client ein ganz einfaches Gerät sein oder sogar ein Server, welcher Nachrichten empfangen und senden möchte.

MQTT-Broker

Der MQTT-Broker ist ein Server, der als Nachrichten-Vermittlungszentrale für alle MQTT-Teilnehmer zu sehen ist. Im MQTT-Broker werden auch Benutzer und Zugriffsrechte verwaltet. Der Broker nimmt aktiv keine Verbindungen zu anderen MQTT-Geräten auf, sondern die MQTT-Clients müssen sich beim Broker anmelden. Solange die Verbindung steht, kann der Broker Nachrichten zum Client schicken und empfangen. Für den Transport der Daten wird eine TCP/IP-Verbindung verwendet. Abhängig davon, was  Broker und Clients unterstützen, kann die Verbindung SSL-verschlüsselt sein.

MQTT funktioniert selbst dann, wenn sich Clients, die hinter einem DSL-Router im privaten Netzwerken installiert sind, am Broker anmelden.

MQTT Topics, Subscribe und Publish

Topics

Topics können als eine Art Betreff-Unterteilung der Nachrichten angesehen werden. Es handelt sich dabei in der Regel um eine Textzeile, die oft mit einem „/“ unterteilt ist. Nur wenn sich ein Client für ein oder mehrere Topics registriert hat, werden Nachrichten für diese Topics auch vom Broker an die registrierten Clients weitergeleitet.
Hier ein Beispiel verschiedener Topics:

  • /Gebäude-1/Keller/Temperatur
  • /Gebäude-1/Garten/Bewegung
  • /Gebäude-1/Schlafzimmer/Rauchmelder

Subscribe

MQTT-Clients können sich für ein oder mehrere Topics registrieren. Diesen Vorgang nennt man Subscribe.

Publish

MQTT-Clients können eine Nachricht mit einem Topic an den Broker schicken. Diesen Vorgang nennt man Publish. Es kann dabei nur sichergestellt werden, dass der Broker verbunden ist und dieser die Nachricht empfängt. Ob der Broker diese Nachricht an andere Clients weiterleitet, ist hingegen erst einmal unbekannt.

Verweise