MQTT: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
Zeile 52: Zeile 52:
 
*DISCONNECT
 
*DISCONNECT
 
*AUTH (ab MQTT Version 5.0)
 
*AUTH (ab MQTT Version 5.0)
 +
=Quelle=
 +
*https://de.wikipedia.org/wiki/MQTT

Version vom 18. März 2024, 19:43 Uhr

MQTT: Einführung und Grundlagen

  • MQTT (ursprünglich MQ Telemetry Transport) ist ein offenes Netzwerkprotokoll, das für Machine-to-Machine-Kommunikation (M2M) entwickelt wurde.
  • Es ermöglicht, trotz hoher Verzögerungen oder beschränkter Netzwerke die Kommunikation zwischen Geräten.
  • Entsprechende Geräte reichen von Sensoren und Aktoren, Mobiltelefonen, eingebetteten Systemen in Fahrzeugen oder Laptops bis zu voll entwickelten Rechnern.
  • MQTT war bis zur Version 3.1 ein Akronym für MQ Telemetry Transport,wobei MQ von MQSeries abgeleitet ist und für Message Queueing steht.
  • Mit Version 3.1.1 wurde definiert, dass MQTT für kein Akronym steht.
  • Das MQTT-Protokoll ist auch unter älteren Namen wie „WebSphere MQTT“ (WMQTT), „SCADA-Protokoll“ oder „MQ Integrator SCADA Device Protocol“ (MQIsdp) bekannt.
  • 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.
  • Ein MQTT-Server („Broker“) hält die gesamte Datenlage seiner Kommunikationspartner und kann so als Zustands-Datenbank benutzt werden.
  • So ist es möglich, kleine unperformante MQTT-Geräte mit einem MQTT-Broker zu verbinden*
  • Die Geräte sammeln Daten oder nehmen Befehle entgegen, während ein komplexes Lagebild nur auf dem MQTT-Broker entsteht.
  • Stelleingriffe können so von einer oder mehreren leistungsfähigen Instanzen an den MQTT-Broker übermittelt und auf die einzelnen Geräte verbreitet werden.
  • Dadurch eignet sich MQTT sehr gut für Automatisierungslösungen und findet im Bereich IoT durch die einfache Verwendung große Verbreitung.

Spezifikation

  • Die MQTT-Spezifikation unterscheidet TCP/IP-basierte und Nicht-TCP/IP-Netzwerke und Systeme.
Haupt-Spezifikation
  • Das Protokoll ermöglicht auf eine 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.
  • Im Januar 2018 wurde Version 5 veröffentlicht, die die Verwendung für Entwickler komfortabler machen soll.
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

  • MQTT ist ein Client-Server-Protokoll.
  • Clients senden dem Server (“Broker”) nach Verbindungsaufbau Nachrichten mit einem Topic, welches die Nachricht hierarchisch einstuft.
  • Zum Beispiel Küche/Kühlschrank/Temperatur oder Auto/Rad/3/Luftdruck.
  • Die Topics müssen vorher auch nicht konfiguriert werden. Clients können diese Topics abonnieren, wobei der Server die empfangenen Nachrichten an die entsprechenden Abonnenten weiterleitet.
  • Nachrichten bestehen immer aus einem Topic und dem Nachrichteninhalt.
  • Nachrichten werden mit einer definierbaren Quality of Service versendet:
  • at most once (die Nachricht wird einmal gesendet und kommt bei Verbindungsunterbrechung möglicherweise nicht an),
  • at least once (die Nachricht wird so lange gesendet, bis der Empfang bestätigt wird, und kann beim Empfänger mehrfach ankommen)
  • exactly once (hierbei wird sichergestellt, dass die Nachricht auch bei Verbindungsunterbrechung genau einmal ankommt).
  • Außerdem kann mit dem Retain-Flag der Server angewiesen werden, die Nachricht zu diesem Topic zwischenzuspeichern.
  • Clients, die dieses Thema neu abonnieren, bekommen als erstes die zwischengespeicherte Nachricht zugestellt.
  • Beim Verbindungsaufbau können Clients einen „letzten Willen“ in Form einer Nachricht definieren.
  • Falls die Verbindung zum Client verloren geht, wird diese Nachricht publiziert und dabei an die entsprechenden Abonnenten gesendet.
  • MQTT wird üblicherweise über TCP benutzt und hat einen fixen Header. Das erste Byte enthält den Nachrichtentyp (4 Bit) und, je nach Nachrichtentyp, weitere Flags.

Es gibt folgende Nachrichtentypen

  • CONNECT
  • CONNACK
  • PUBLISH
  • PUBACK
  • PUBREC
  • PUBREL
  • PUBCOMP
  • SUBSCRIBE
  • SUBACK
  • UNSUBSCRIBE
  • UNSUBACK
  • PINGREQ
  • PINGRESP
  • DISCONNECT
  • AUTH (ab MQTT Version 5.0)

Quelle