MQTT

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

MQTT (MQ Telemetry Transport oder Message Queue Telemetry Transport) ist ein offenes Nachrichtenprotokoll für Machine-to-Machine-Kommunikation (M2M), das die Übertragung von Telemetriedaten in Form von Nachrichten zwischen Geräten ermöglicht, trotz hoher Verzögerungen oder beschränkten Netzwerken.[1] Entsprechende Geräte reichen von Sensoren und Aktoren, Mobiltelefonen, Eingebetteten Systemen in Fahrzeugen oder Laptops bis zu voll entwickelten Rechnern. Das Protokoll wurde von Andy Stanford-Clark von IBM und Arlen Nipper von Cirrus Link Solutions entwickelt.

Seit 2013 wird MQTT über die Organization for the Advancement of Structured Information Standards (OASIS) als Protokoll des Internet der Dinge standardisiert.[2][3][4]

Das MQTT-Protokoll ist auch bekannt unter älteren Namen wie „WebSphere MQTT“ (WMQTT), „SCADA-Protokoll“ oder „MQ Integrator SCADA Device Protocol“ (MQIsdp).[5]

Die Internet Assigned Numbers Authority (IANA) reserviert für MQTT die Ports 1883 und 8883. MQTT-Nachrichten können mit dem TLS-Protokoll verschlüsselt werden.

Interessant ist, dass ein MQTT-Broker die gesamte Datenlage seiner Kommunikationspartner hält, und so als Zustands-Datenbank benutzt werden kann. So ist es möglich, kleine unperformante MQTT-Geräte mit einem MQTT-Broker zu verbinden wobei die Geräte Daten einsammeln und/oder Befehle entgegen nehmen, während ein komplexes Lagebild nur auf dem MQTT-Broker entsteht und hier oder durch einen leistungsfähigen Kommunikationspartner ausgewertet werden kann. Stelleingriffe können so von einer oder mehren leistungsfähigen Instanzen an den MQTT-Broker übermittelt und auf die einzelnen Geräte verbreitet werden. Durch diese Eigenschaft eignet sich MQTT sehr gut für Automatisierungslösungen. Stichwort / Buzzword "IoT".

Spezifikation[Bearbeiten | Quelltext bearbeiten]

Die MQTT-Spezifikation unterscheidet TCP/IP-basierte und Nicht-TCP/IP-Netzwerke.

Haupt-Spezifikation
Das Protokoll ermöglicht auf eine sehr einfache Art ein Beobachter-Verhaltensmuster. Es ist besonders geeignet für Verbindungen, die nur einen geringen Verwaltungsdatenanteil erlauben. Der OASIS-Standardisierungsprozess basiert auf Version 3.1 der MQTT-Spezifikation.[6]
Spezifikation von MQTT-SN (ehemals MQTT-S), Version 1.2 (MQTT für Sensorgeräte)
Ausgelegt für eingebettete Geräte in non-TCP/IP-Netzwerken, wie zum Beispiel ZigBee. MQTT-SN ist ein Nachrichtenprotokoll nach dem Beobachter-Muster für Sensornetze. Es erweitert MQTT für die Nutzung über TCP/IP-Infrastruktur hinaus und ist besonders optimiert für die Nutzung mit Sensor- und Aktor-Lösungen.: Der ursprüngliche Name war MQTT-S. Dieser erzeugte jedoch Missverständnisse (s für secure?), so dass 2013 eine Umbenennung in MQTT-SN angestoßen wurde (SN für sensor networks).

Protokoll[Bearbeiten | Quelltext bearbeiten]

MQTT wird üblicherweise über TCP benutzt. Es hat einen 2 Byte Header das erste Byte enthält den Nachrichtentyp (4 Bit), "Quality of Service", was eher ein Zustell-Modus ist (2Bit), und ein Retain-Flag.

Es gibt folgende Nachrichten-Typen:

  • CONNECT
  • CONNACK
  • PUBLISH
  • PUBACK
  • PUBREC
  • PUBREL
  • PUBCOMP
  • SUBSCRIBE
  • SUBACK
  • UNSUBSCRIBE
  • UNSUBACK
  • PINGREQ
  • PINGRESP
  • DISCONNECT

Das 2.Byte ist die Länge des restlichen MQTT-Pakets.

Daran schließt sich ein Variabler Teil an, der das MQTT-Topic, also das Thema enthält, und als letzter Teil kommt der Payload, also der Dateninhalt, der unter dem Thema veröffentlicht wird.

Die Themen sind hierarchisch organisiert.

Beispiel:

Neujahrsansprache/1984/audio/ogg

Neujahrsansprache/1984/audio/mp3

Neujahrsansprache/1984/video

Neujahrsansprache/1984/text/ascii

Neujahrsansprache/1984/text/odt

Subscribe zum Thema:

Mit den Zeichen # kann ab einer Hierarchie-Ebene alles, und was darunter liegt, empfangen werden (kann teuer sein, da viel Verkehr entstehen kann).

Mit einem + kann eine Hierarchie-Ebene als Wildcard gesetzt werden.

Implementierungen[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

  • mqtt.org - Offizielle Website
  • heise.de/... - Artikel „MQTT: Protokoll für das Internet der Dinge – Einst für die Ölpipeline, nun offener Standard“ vom 15. April 2014 (abgerufen am 23. April 2015)
  • Mosquitto - Open Source MQTT Broker und Teil des Eclipse IoT Projektes (iot.eclipse.org).

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. http://blogs.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-stomp.html
  2. M2M-Protokoll MQTT soll Internet-Standard werden - iX
  3. http://dennisseidel.de/mqtt-eine-einfuhrung/
  4. https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=mqtt
  5. MQTT Frequently Asked Questions: „How does MQTT relate to SCADA protocol and MQIsdp?“ (abgerufen am 21. April 2015)
  6. http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html