MQTT steht für Message Queue Telemtry Transport
MQTT wurde ursprünglich von IBM entwickelt und fand die Anwendung für den Datentransfer von einfachen Geräten zu SCADA-Systeme über eine Satellitenkommunikation. Es wurde jedoch auch für die Überwachung der ÖL-Pipelines angewendet.
Heute wird das Protokoll in vielen Branchen eingesetzt, wie z. B.
- Industrie & Energie
- Gebäudeautomation
- Transport & Logistik
- Medizin & Gesundheitswesen
Doch wie funktioniert MQTT?
MQTT Publish / Subscribe
Bei MQTT handelt es sich um ein Publish-Subscribe Kommunikation, es gibt hier zwei verschiedene Teilnehmer. Unter anderem einen Broker und einen Client. Die Clients können als Publisher und Subscriber nicht direkt miteinander kommunizieren. Die Kommunikation findet immer über einen MQTT Broker statt.
Hierfür können Sie kostenfreie MQTT Broker aus dem Internet verwenden für Testzwecke oder Sie hosten einen eigenen Broker auf Ihrer Cloud-Umgebung.
Es macht jedoch durchaus Sinn einen Broker lokal in Ihrem Netzwerk zu hosten für die lokale Kommunikation, hierfür können Sie einen Broker mithilfe von Docker integrieren.
Topics
Die Kommunikation wird über verschiedene Topics definiert. Jede Nachricht können sie einem sogenannten Topic zuordnen, das bedeutet, dass jede MQTT-Nachricht eine Payload mit dem zugehörigen Topic enthält. Die Topic Schreibsyntax ist ähnlich einer URL, die Sie frei definieren können.
QoS Levels (Quality of Service)
QoS steht für Quality of Service und gibt an, wie sicher eine Nachricht zugestellt werden soll. Wir unterschieden in drei verschiedene Stufen von QoS 0 bis QoS 2. In meiner ersten Abbildung können Sie entnehmen, welche Bedeutung jedes einzelne QoS besitzt.
Wildcards
Wenn ein Client ein gewünschtes Topic abonniert, hat er die Möglichkeit, die Topics anhand zwei verschiedenen Wildcards zu sortieren und dementsprechend mehrere Nachrichten auszulesen.
Es gibt hierfür zwei verschiedene Wildcards
- + hiermit kann eines oder mehrere Topics Level ersetzt werden
- # Dies kann immer nur am Ende eines Topics eingesetzt werden, sämtliche Nachrichten ab dem # werden nun ausgegeben