Das Kommunikationsprotokoll MQTT
BITMOTECO Factory Data Hub
Das modulare Factory Data Hub für Ihre Produktion unterstützt eine Vielzahl von Kommunikationsprotokollen und Industriestandards.
Jetzt Demo-Termin zur Abstimmung Ihres Testbetriebs vereinbaren.
Was ist MQTT?
Das Kommunikationsprotokoll MQTT steht für „Message Queuing Telemetry Transport“ und ist ein leichtgewichtiges, zuverlässiges und effizientes Protokoll für die Nachrichtenübermittlung in verteilten Systemen. Es wurde für die Kommunikation zwischen Geräten mit begrenzten Ressourcen entwickelt, wie z. B. Sensoren und Aktoren in eingebetteten Systemen oder auch Internet of Things (IoT)-Geräten. MQTT wurde von IBM bereits im Jahr 1999 entwickelt und ist heute ein weit verbreitetes Protokoll für das Internet of Things.
Das Protokoll basiert auf einem Publish/Subscribe-Muster, bei dem ein Gerät (Publisher) Nachrichten zu einem bestimmten Thema (Topic) sendet und andere Geräte (Subscriber) diese Nachrichten empfangen können, sofern sie sich für dieses Thema interessieren. MQTT ermöglicht somit eine effiziente Übermittlung von Nachrichten und minimiert dabei den Overhead. Dies macht es besonders für den Einsatz in Umgebungen mit begrenzter Bandbreite und hoher Latenz interessant.
Wie funktioniert die Kommunikation zwischen den Teilnehmern?
Die Kommunikation zwischen den Teilnehmern in einem MQTT-Netzwerk erfolgt über einen zentralen Vermittler, den sogenannten MQTT-Broker. Die Geräte, welche Daten senden möchten, werden als Publisher bezeichnet, während die Geräte, die Daten empfangen möchten, Subscriber heißen.
MQTT-Broker, Publisher und Subscriber
Wenn ein Publisher eine Nachricht zu einem bestimmten Thema senden möchte, verbindet er sich mit dem MQTT-Broker und veröffentlicht die Nachricht anschließend unter dem gewünschten Thema. Der Broker ist für die Verteilung dieser Nachricht an alle Subscriber verantwortlich, die sich für dieses Thema interessieren. Die Subscriber haben ihre Interessen zuvor ihrem Broker mitgeteilt, indem sie sich bei diesem für bestimmte Themen registriert haben. Sobald der Broker eine Nachricht von einem Publisher erhält, prüft er die Liste der Subscriber, die sich für das entsprechende Thema interessieren, und leitet die Nachricht anschließend an jeden relevanten Subscriber weiter. Dadurch wird eine direkte Punkt-zu-Punkt-Kommunikation vermieden, da der Broker als Vermittler dient und dadurch die Verbindung zwischen Publishern und Subscribern entkoppelt.
Die Rolle des MQTT-Brokers als zentraler Vermittler und Datenverwalter
Ein MQTT-Broker ist ein zentraler Bestandteil eines MQTT-Netzwerks. Er ist für die Annahme, Speicherung, Verwaltung sowie Verteilung von Nachrichten zwischen den Publishern und Subscribern verantwortlich. Der Broker ist ein Server, der auf einem Computer oder einer Cloud-Plattform läuft und als Vermittler zwischen den Geräten agiert. Der MQTT-Broker verwaltet die Verbindungen von Publishern und Subscribern, beinhaltet eine Liste der aktuellen Themen und der dazugehörigen Subscriber und sorgt anschließend dafür, dass Nachrichten ordnungsgemäß an die entsprechenden Empfänger weitergeleitet werden. Ein gut konfigurierter MQTT-Broker gewährleistet eine effiziente sowie zuverlässige Kommunikation zwischen den Teilnehmern im Netzwerk.
Was ist ein MQTT-Topic und wie wird es ausgewählt?
Als Topic wird ein Kanal oder ein Thema bezeichnet, unter dem Nachrichten veröffentlicht und empfangen werden. Topics werden als Zeichenketten dargestellt, die entsprechend die Hierarchie der Informationen widerspiegeln. Beispielsweise kann ein Thema für eine Temperaturangabe „Halle1/Produktion/Maschine1/Antrieb1/Temperatur“ heißen. Es ist wichtig, ein sinnvolles und gut strukturiertes Topic-System zu wählen, um somit die Skalierbarkeit und die Effizienz des MQTT-Netzwerks zu gewährleisten.
Allgemeine Empfehlungen zur Wahl eines passenden Topics
- Klare Strukturierung: Verwenden Sie eine klare Hierarchie, um Topics nach Funktionen oder Standorten zu gruppieren, um die Organisation und das Management zu erleichtern.
- Eindeutigkeit: Verwenden Sie eindeutige Topics, um Verwechslungen zu vermeiden und eine klare Zuordnung der Nachrichten sicherzustellen.
- Vermeiden von Sonderzeichen und Leerzeichen: Verwenden Sie nur alphanumerische Zeichen und trennen Sie Wörter durch Schrägstriche („/“) oder Unterstriche („_“).
- Flexibilität: Gestalten Sie Topics so, dass sie zukünftigen Anforderungen gerecht werden, um häufige Änderungen zu vermeiden.
- Minimierung der Länge: Vermeiden Sie übermäßig lange Topics, um die Netzwerkbelastung zu reduzieren.
Mit einer gut gewählten Strukturierung der Topics können Clients mit Hilfe von Topic-Filtern viel einfacher und mit weniger Vorwissen auf die von ihnen benötigten Informationen zugreifen.
Was sind Topic-Filter und wie werden sie effektiv eingesetzt?
Topic-Filter sind spezielle Zeichenketten, die verwendet werden, um Nachrichten basierend auf den Topics auszuwählen, für die sich ein Subscriber interessiert. Sie bieten eine flexible Möglichkeit, nur relevante Nachrichten zu abonnieren und folglich unerwünschte Datenfluten zu vermeiden. Ein effektiver Einsatz von Topic-Filtern ermöglicht es den Subscribern, nur die für sie relevanten Nachrichten zu empfangen und den Netzwerkverkehr schließlich zu optimieren.
Die zwei Arten von Topic-Filtern: Single-Level-Filter und Multi-Level-Filter
- Single-Level-Filter: Verwenden das Pluszeichen (+) als Platzhalter für genau ein Level im Topic. Zum Beispiel kann ein Filter “ Halle1/+“ alle Topics abdecken, die mit “ Halle1/“ beginnen, gefolgt von einem weiteren Level. Würden man mit dem obigen Beispiel die Temperatur aller Komponenten der ersten Maschine empfangen wollen, kann man den Filter „Halle1/Produktion/Maschine1/+/Temperatur “ verwenden.
- Multi-Level-Filter: Verwenden das Rautezeichen (#) als Platzhalter für null oder mehr Zeichen im Topic. Zum Beispiel kann ein Filter “ Halle1/#“ alle Topics abdecken, die mit “ Halle1/“ beginnen, unabhängig von der Anzahl der weiteren Ebenen. Mit dem Filter „Halle1/Produktion/#” würde der Client ebenfalls die Werte des Topics „Halle1/Produktion/Maschine1/Antrieb1/Temperatur“ empfangen. Allerdings auch alle weiteren Werte, die für eine beliebige Maschine in dieser Strukturierung bereitgestellt werden.
Liste mit verbreiteten MQTT-Broker Implementierungen
Es gibt eine Vielzahl von MQTT-Brokern, die in verschiedenen Umgebungen eingesetzt werden können. Einige der verbreiteten MQTT-Broker sind:
- Mosquitto: Mosquitto ist ein bekannter und beliebter Open-Source-MQTT-Broker, der von der Eclipse Foundation entwickelt wird. Er zeichnet sich durch seine Einfachheit, Leichtgewichtigkeit sowie Zuverlässigkeit aus. Mosquitto unterstützt die MQTT-Versionen 3.1 und 3.1.1 und ist einfach einzurichten und zu konfigurieren. Obwohl Mosquitto auch einige Funktionen von MQTT 5 unterstützt, bietet er keine volle Unterstützung für diese Version. Dennoch ist Mosquitto aufgrund seiner einfachen Handhabung und breiten Community eine gute Wahl für kleinere bis mittlere IoT-Projekte und Anwendungsfälle.
- HiveMQ: HiveMQ ist ein kommerzieller MQTT-Broker, der für seine Skalierbarkeit, Leistung und umfassende Unterstützung von MQTT 5 bekannt ist. Er bietet dabei volle Unterstützung für die MQTT-Versionen 3.1, 3.1.1 und 5.0. HiveMQ ist somit ideal für anspruchsvolle und unternehmenskritische IoT-Anwendungen, bei denen hohe Anforderungen an die Zuverlässigkeit, Skalierbarkeit sowie Sicherheit gestellt werden. Der Broker bietet zudem Funktionen wie Cluster-Unterstützung und MQTT-basierte Plugins, die es ermöglichen, komplexe und maßgeschneiderte IoT-Lösungen zu realisieren.
- RabbitMQ: RabbitMQ ist ein Open-Source-Broker, der nicht nur MQTT, sondern auch andere Protokolle wie AMQP, STOMP und andere unterstützt. Er bietet Unterstützung für die MQTT-Versionen 3.1, 3.1.1 und 5.0 (seit Version 3.8.0). RabbitMQ ist zudem für seine Flexibilität, Erweiterbarkeit und Fähigkeit bekannt, große Mengen von Nachrichten zu verarbeiten. Die Unterstützung mehrerer Protokolle macht ihn dementsprechend zu einer vielseitigen Option für komplexe Umgebungen, in denen unterschiedliche Kommunikationsprotokolle benötigt werden.
- EMQ X: EMQ X ist ein MQTT-Broker, der sowohl in einer Open-Source-Version als auch in einer kommerziellen Variante verfügbar ist. Er unterstützt die MQTT-Versionen 3.1, 3.1.1 und 5.0 vollständig. EMQ X bietet zudem eine robuste und hochleistungsfähige Implementierung von MQTT 5 und eignet sich daher ideal für anspruchsvolle und verteilte IoT-Anwendungen. Der Broker ermöglicht es ebenfalls, große IoT-Netzwerke effizient zu verwalten und zu skalieren, und bietet außerdem Funktionen wie hohe eine Verfügbarkeit, erweiterte Authentifizierung sowie Zugriffskontrolle.
Zusammenfassend
Die Auswahl des richtigen MQTT-Brokers hängt letztendlich von den spezifischen Anforderungen des IoT-Projekts ab, einschließlich der Größe des Netzwerks, der benötigten Funktionen sowie der gewünschten Leistung. Es ist zudem ratsam, die Funktionen, Leistung und Skalierbarkeit der verschiedenen Broker zu vergleichen, um schließlich die beste Wahl für das jeweilige Projekt zu treffen.
Wie kann das BITMOTECOsystem über MQTT mit Geräten kommunizieren?
Das BITMOTECOsystem kann über Node-RED und dem darin verfügbaren MQTT-Node direkt Nachrichten mit einem oder auch mehreren MQTT-Brokern über die MQTT-Versionen 3.1, 3.1.1 und 5.0 austauschen. Die empfangenen Daten lassen sich dabei von Node-RED aus direkt in eine Datenbank, wie z.B. die InfluxDB Times Series Data Platform, übertragen. Alternativ kann auch die Analysen oder Zusammenführung der Daten in Node-RED oder einem ausgelagerten Analyse-Modul erfolgen. Die Ergebnisse können schließlich anderen Interessenten per MQTT auf einem Broker bereitgestellt werden.
Mehr zum Thema:
Hannover | Niedersachsen | Oldenburg | Osnabrück | Göttingen | Celle | Lüneburg | Hameln | Aurich | Leer | Diepholz | Emsland | Gifhorn | Uelzen | Cuxhaven | Hamburg | Bremen | Braunschweig |