Schlankes IoT-Protokoll

So funktioniert MQTT

8. Dezember 2017, 13:53 Uhr | Von Dominik Obermaier
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Protokoll-Feature QoS

Neben dem reinen Austausch von Nachrichten besitzt MQTT eine Fülle an Features, die es als Kommunikationsprotokoll für das Internet of Things optimal machen, vor allem wenn eine unzuverlässige Verbindung (z.B. via Mobilfunk) zu erwarten ist. MQTT besitzt das Konzept von Quality of Service (QoS) Levels. Diese QoS-Ebenen bestimmen die Übertragungsgarantien für Nachrichten. Es wird zwischen drei QoS-Arten unterschieden:

  • QoS 0: At-most-once delivery. Es wird versucht, die Nachricht auszuliefern. Die Nachricht kommt einmal oder keinmal beim Empfänger an.
  • QoS 1: At-least-once De­livery. Der Sender versendet die Nachricht neu, falls der Empfänger den Empfang nicht quittiert.
  • QoS 2: Exactly-once Delivery. Das MQTT-Protokoll stellt sicher, dass die Nachricht genau einmal beim Empfänger ankommt.

MQTT benutzt TCP als Transportprotokoll, welches im Normalfall „Exactly-once Delivery“-Garantien bei der Datenübertragung gibt. Es kann jedoch jederzeit passieren, dass die TCP-Verbindung während der Datenübertragung getrennt wird. In einem solchen Fall greifen QoS 1 und QoS 2, da nach einer Wiederherstellung der Verbindung die Datenübertragung fortgesetzt werden kann.

Retained Messages

Ein weiteres Protokoll-Feature von MQTT sind „Retained Messages“. Ein Publisher kann beim Versenden einer MQTT-Nachricht diese als retained markieren. Der MQTT Broker speichert diese Nachricht nun für diesen Topic ab, damit alle neuen Subscriber auf diesem Topic direkt diese Nachricht zugestellt bekommen. Bei einer normalen MQTT Message würde die Nachricht zwar an alle aktiven MQTT Subscriber verschickt werden, am Broker würde jedoch nichts hinterlegt werden, weshalb ein neuer Subscriber warten müsste, bis auf einem Topic eine neue Nachricht versendet wird. Mittels Retained Messages bekommt nun jeder neue Subscriber den letzten Stand auf einem Topic, vorausgesetzt, dass das Retained Flag für eine zu sendende Nachricht vom Client gesetzt wurde.

Nachricht bei Verbindungsabbruch

Durch die stehende TCP-Verbindung der MQTT Clients zum Broker wird eine ereignisgetriebene Kommunikation umgesetzt. Ein weiterer Vorteil dieser stehenden Verbindung ist, dass der MQTT Broker bei einem Verbindungsabbruch eines Client dies sofort erkennen kann. Das Last Will and Testament Feature von MQTT erlaubt einem Client, eine Nachricht am MQTT Broker zu hinterlegen, welche vom Broker versendet wird, sobald die TCP-Verbindung geschlossen wurde. Damit ist es möglich, auf einen Ausfall eines Gerätes zu reagieren, da man den Last Will and Testament Topic dieses Gerätes über MQTT-Bordmittel abonnieren kann.

Persistent Sessions

Speziell Geräte, die per Mobilfunk vernetzt werden, müssen mit häufigeren Verbindungsabbrüchen rechnen, was beim Einsatz von MQTT dazu führt, dass die Verbindung zum Broker gekappt wird. Ein MQTT Client kann daher beim Verbindungsaufbau entscheiden, ob er eine persistente Session anlegen möchte, also eine Session, die über die Lebenszeit einer TCP-Verbindung hinweg bestehen bleibt. Wenn ein Gerät sich nun wieder verbindet, dann kann es seine Session fortführen. Konkret bedeutet das, dass der Broker die Subscriptions eines nicht verbundenen Clients vorhält und somit alle Nachrichten, die der Client verpasst hat, für den Client ausliefert, sobald dieser wieder online ist. Hierbei handelt es sich um das Konzept der „Queued Messages“. Dabei werden alle verpassten QoS-1- und -2-Nachrichten vom Broker für den Client vorgehalten, QoS-0-Nachrichten werden jedoch nicht gespeichert.

Natürlich kann ein Client auch entscheiden, keine langlebigen Persistent Sessions anzulegen. Rein sendende Clients können sich mit einer „Clean Session“ beim Broker anmelden und somit werden alle Daten über diesen Client nach Beendigung der TCP-Verbindung am Broker gelöscht.

Ressourcenschonend und schnell

MQTT ist ein sehr schlankes IoT-Protokoll mit interessanten Funktionen, die eine ereignisgetriebene Kommunikation ermöglichen. Im Vergleich zu deutlich komplexeren Protokollen versteht sich MQTT als Datentransportprotokoll und entkoppelt dabei Sender und Empfänger von Nachrichten mittels eines MQTT Broker. Neben Brokern für den professionellen Einsatz wie HiveMQ gibt es ein Vielzahl an freier Software, weshalb MQTT sich auch für kostengünstige Entwicklungen eignet. Besonders wenn Kommunikation über das Internet oder eine schnelle und pragmatische IoT-Entwicklung gefordert sind, ist MQTT eine sehr gute Wahl und eine gute Alternative zu schwergewichtigeren Protokollen für die Vernetzung von Geräten und Software.

Der Autor

Dominik Obermaier, dc-square
Dominik Obermaier, dc-square
© dc-square

Dominik Obermaier
ist Geschäftsführer bei dc-square. Das Unternehmen entwickelt hochskalierbare IoT-Lösungen wie den MQTT Broker HiveMQ. Dominik Obermaier berät Unternehmen in den Bereichen MQTT, Messaging und IoT. Er entwickelte MQTT 3.1.1 bei OASIS mit und ist regelmäßiger Autor und Sprecher auf Konferenzen.


  1. So funktioniert MQTT
  2. Verzögerungsfrei durch Publish/Subscribe
  3. Protokoll-Feature QoS

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Componeers GmbH

Weitere Artikel zu IIoT-Protokolle (OPCUA, MQTT, ...)

Weitere Artikel zu Wireless

Weitere Artikel zu Automatisierung

Weitere Artikel zu IoT / IIoT / Industrie 4.0