Was ist MQTT?
Message Queuing Telemetry Transport (MQTT) ist ein beliebtes, schlankes Publish-Subscribe-Nachrichtenprotokoll, das sich ideal eignet, um Geräte und Anwendungen des Internets der Dinge (IoT) oder für die Maschine-zu-Maschine-Kommunikation (M2M) über das Internet zu verbinden. MQTT ist für den effizienten Betrieb in Umgebungen mit geringer Bandbreite oder niedrigem Energieverbrauch ausgelegt und damit die ideale Wahl für Anwendungen mit einer großen Anzahl dezentraler Clients. Es wird in zahlreichen Branchen eingesetzt, darunter Unterhaltungselektronik, Automobilindustrie, Transportwesen, Fertigung und Gesundheitswesen.
Wie funktioniert MQTT?
Über MQTT verbundene Geräte oder Anwendungen werden als Clients bezeichnet. Diese Clients veröffentlichen und/oder abonnieren Nachrichten zu einem bestimmten Thema oder zu mehreren Themen. Abonnierende Clients empfangen alle zu diesem Thema veröffentlichten Nachrichten. Dies ermöglicht einen effizienten und fehlertoleranten Datenaustausch zwischen zahlreichen Geräten und Diensten.
Das Herzstück einer MQTT-Architektur ist ein Broker. Der Broker ist ein Server, der Clients (und die von ihnen abonnierten Topics) verwaltet, Nachrichten verarbeitet und diese an die entsprechenden Systeme weiterleitet.
MQTT-Protokollversionen
Mehrere wichtige Versionen des MQTT-Protokolls wurden als Standard verabschiedet. Die Organisation OASIS verwaltet die Überarbeitungen des Protokolls und stellt eine vollständige Spezifikation für jede Version bereit. Mit jeder Überarbeitung von MQTT wurde der Funktionsumfang des Protokolls erweitert. Daher ist es wichtig zu wissen, welche MQTT-Version Ihre Geräte und Ihr Broker verwenden.
MQTT-Nachrichtentypen und -format
Es gibt verschiedene Arten von MQTT-Nachrichten, wobei jeder Nachrichtentyp ein bestimmtes Format aufweist, das kompatible Geräte und Anwendungen einhalten müssen. Die verschiedenen Versionen des MQTT-Protokolls unterscheiden sich hinsichtlich Format und Nachrichtentypen. Eine vollständige Liste der Nachrichtentypen ist in der jeweiligen Spezifikation des MQTT-Protokolls zu finden.
Die drei häufigsten Nachrichtentypen sind CONNECT, PUBLISH und SUBSCRIBE. Jede MQTT-Nachricht enthält einen Header, eine Nutzlast und optionale Flags. Je nach Nachrichtentyp kann die Länge der Nutzlast variieren. Bei einer PUBLISH-Nachricht enthält die Nutzlast beispielsweise die Daten, die an alle abonnierenden Geräte gesendet werden sollen. Die Länge des Datenfelds wirkt sich dabei direkt auf die Größe der Nachricht aus. Standardmäßig stellen MQTT-Geräte eine ungesicherte Verbindung über Port 1883 her oder verwenden Port 8883, wenn die SSL/TLS-Verschlüsselung aktiviert ist.
Was ist ein Beispiel für MQTT in der Praxis?
Vernetzte Autos sind ein hervorragendes Beispiel für den praktischen Einsatz von MQTT. Da Automobilhersteller neue Funktionen für verschiedenste Anwendungsbereiche hinzufügen – von Ferndiagnose und Flottenmanagement bis hin zu Kraftstoffzahlungen und Unterhaltung –, hat sich MQTT zu einem gängigen Standard für vernetzte Fahrzeuge entwickelt. Im Gegensatz zum Hypertext Transfer Protocol (HTTP) kann MQTT eine dauerhafte Sitzung aufrechterhalten, selbst wenn ein Fahrzeug Funklöcher durchquert oder die Verbindung zwischen Mobilfunkmasten wechselt. MQTT unterstützt außerdem die bidirektionale Kommunikation, sodass das Fahrzeug und die Cloud-Anwendung Daten einfacher senden und empfangen können, ohne auf eine Antwort der jeweils anderen Seite warten zu müssen.
Was ist der Unterschied zwischen HTTP und MQTT?
HTTP und MQTT sind beides Netzwerkprotokolle, die zur Datenübertragung über das Internet verwendet werden. Sehen wir uns ihre Unterschiede an.
HTTP
- Anfrage-Antwort-Protokoll, bei dem ein Client eine Anfrage an einen Server sendet und der Server mit den angeforderten Daten antwortet.
- In erster Linie für die Übertragung von Webinhalten (wie HTML-Dokumenten, Bildern und Formulardaten) zwischen Webservern und Browsern konzipiert.
- Beispiel: Ein Webbrowser (der Client) sendet eine Anfrage an einen Webserver, und der Server antwortet mit Daten in Form einer Webseite.
MQTT
- Leichtgewichtiges Publish-Subscribe-Nachrichtenprotokoll, bei dem Clients Topics abonnieren und Nachrichten empfangen, die von anderen Clients in diesen Topics veröffentlicht werden.
- Entwickelt für Netzwerktopologien und Geräte, bei denen eine geringe Bandbreite, eine stabile Verbindung und ein niedriger Stromverbrauch wichtige Kriterien sind.
- Beispiel: Das oben beschriebene Smart-Car-Szenario.
Warum MQTT im Internet der Dinge (IoT) verwenden?
Viele Eigenschaften von MQTT machen es zum idealen Protokoll für den Nachrichtenaustausch zwischen IoT-Geräten (den „Dingen“ im Internet der Dinge) und Backend-Systemen. Im Folgenden konzentrieren wir uns auf vier Eigenschaften:
- Ressourcenschonend – MQTT hat einen geringen Speicherbedarf und eignet sich daher gut für Geräte mit begrenzter Rechenleistung und Speicherkapazität, wie etwa Sensoren.
- Zuverlässig – Viele IoT-Geräte stellen über Mobilfunknetze eine Verbindung her. MQTT ist ein Protokoll, das sich für Netzwerke mit geringer Bandbreite eignet, da es kompakte Nachrichten verwendet und weniger Daten überträgt. Dadurch ist MQTT selbst bei begrenzter oder instabiler Netzwerkbandbreite zuverlässiger.
- Skalierbar – Das Publish-Subscribe-Modell lässt sich durch das Hinzufügen von Geräten und Backend-Systemen problemlos skalieren. Ein Beispiel für ein einzelnes Gerät, das Daten an zwei separate Backend-Netzwerke (Abonnenten) übermittelt, ist ein intelligenter Stromzähler in einem Privathaushalt. Dieser sendet Verbrauchsdaten sowohl zu Abrechnungszwecken an die Systeme des Versorgungsunternehmens als auch an eine kundenorientierte Anwendung, über die der Hauseigentümer den Energieverbrauch seines Haushalts im Blick behalten kann.
- Sicher – MQTT-Nachrichten können mit dem standardmäßigen Transport Layer Security (TLS) verschlüsselt werden und unterstützen Anmeldedaten, die zur Authentifizierung verwendet werden können. Dadurch ist MQTT ein sicheres Nachrichtenprotokoll für IoT-Anwendungen, das sensible Informationen wie Messwerte von Gesundheitsmonitoren verschiedener medizinischer Geräte verarbeiten kann.
Welches Transportprotokoll verwendet MQTT?
MQTT verwendet das Transmission Control Protocol/Internet Protocol (TCP/IP) als zugrunde liegendes Transportprotokoll. Dieses weitverbreitete Netzwerkprotokoll gewährleistet, dass Nachrichten zuverlässig zwischen Clients und Brokern übertragen werden.
Es gibt mehrere Gründe, warum TCP/IP als zuverlässig und effizient gilt:
- Fehlererkennung und -korrektur – Verschiedene Verfahren überprüfen die Integrität von Datenpaketen und nutzen Mechanismen zur erneuten Übertragung, um verlorene Pakete wiederherzustellen.
- Flusskontrolle – Daten werden mit der für das jeweilige Netzwerk optimalen Geschwindigkeit übertragen. Dadurch werden Übertragungsverzögerungen vermieden und eine effiziente Kommunikation gefördert.
- Multiplexing – Mehrere Datenströme können über eine einzige Verbindung übertragen werden, sodass mehrere Anwendungen dieselbe Verbindung gleichzeitig nutzen können.
- Kompatibilität – Funktioniert mit einer Vielzahl von Geräten und Betriebssystemen.
- Skalierbarkeit – Für den Einsatz in großen, komplexen Netzwerken konzipiert, ohne Leistungseinbußen selbst bei der Verarbeitung großer Datenverkehrsmengen.
Obwohl TCP/IP am häufigsten verwendet wird, ist es nicht die einzige Möglichkeit zur Übertragung von MQTT-Nachrichten. Das MQTT-Protokoll funktioniert auch über das User Datagram Protocol (UDP) und WebSockets.

