Was ist MQTT?
MQTT ist ein standardbasiertes Messaging-Protokoll bzw. eine Reihe von Regeln, die für die Kommunikation zwischen Maschinen verwendet werden. Intelligente Sensoren, Wearables und andere Internet-of-Things-Geräte (IoT) müssen in der Regel Daten über ein ressourcenbeschränktes Netzwerk mit begrenzter Bandbreite übertragen und empfangen. Diese IoT-Geräte verwenden MQTT für die Datenübertragung, da es einfach zu implementieren ist und IoT-Daten effizient übertragen kann. MQTT unterstützt den Nachrichtenaustausch zwischen Geräten und der Cloud sowie zwischen der Cloud und dem Gerät.
Warum ist das MQTT-Protokoll so wichtig?
Das MQTT-Protokoll hat sich zu einem Standard für die IoT-Datenübertragung entwickelt, weil es die folgenden Vorteile bietet:
Leicht und effizient
Die MQTT-Implementierung auf dem IoT-Gerät erfordert nur minimale Ressourcen, so dass sie sogar auf kleinen Mikrocontrollern verwendet werden kann. Eine minimale MQTT-Kontrollnachricht kann zum Beispiel nur zwei Datenbytes umfassen. MQTT-Nachrichtenheader sind ebenfalls klein, so dass Sie die Netzwerkbandbreite optimieren können.
Skalierbar
Die MQTT-Implementierung erfordert nur eine minimale Menge an Code, der im Betrieb sehr wenig Energie verbraucht. Das Protokoll verfügt außerdem über integrierte Funktionen zur Unterstützung der Kommunikation mit einer großen Anzahl von IoT-Geräten. Daher können Sie das MQTT-Protokoll implementieren, um sich mit Millionen dieser Geräte zu verbinden.
Zuverlässig
Viele IoT-Geräte verbinden sich über unzuverlässige Mobilfunknetze mit geringer Bandbreite und hoher Latenz. MQTT verfügt über integrierte Funktionen, die die Zeit reduzieren, die das IoT-Gerät benötigt, um sich wieder mit der Cloud zu verbinden. Außerdem werden drei verschiedene Servicequalitätsstufen definiert, um die Zuverlässigkeit für IoT-Anwendungsfälle zu gewährleisten – höchstens einmal (0), mindestens einmal (1) und genau einmal (2).
Sicher
MQTT macht es Entwicklern leicht, Nachrichten zu verschlüsseln und Geräte und Benutzer mit modernen Authentifizierungsprotokollen wie OAuth, TLS1.3, Customer Managed Certificates und mehr zu authentifizieren.
Gut unterstützt
Mehrere Sprachen wie Python bieten umfangreiche Unterstützung für die Implementierung des MQTT-Protokolls. Daher können Entwickler es schnell und mit minimalem Programmieraufwand in jede Art von Anwendung implementieren.
Was ist die Geschichte hinter dem MQTT-Protokoll?
Das MQTT-Protokoll wurde 1999 für den Einsatz in der Öl- und Gasindustrie erfunden. Die Ingenieure benötigten ein Protokoll für minimale Bandbreite und minimalen Batterieverlust, um Ölpipelines über Satellit zu überwachen. Ursprünglich war das Protokoll unter dem Namen Message Queuing Telemetry Transport bekannt, nach dem IBM-Produkt MQ Series, das seine Anfangsphase unterstützte. Im Jahr 2010 veröffentlichte IBM MQTT 3.1 als kostenloses und offenes Protokoll, das von jedermann implementiert werden kann. 2013 wurde das Protokoll dann bei der Organization for the Advancement of Structured Information Standards (OASIS) zur Wartung eingereicht. 2019 wurde eine aktualisierte MQTT-Version 5 von OASIS veröffentlicht. Jetzt ist MQTT kein Akronym mehr, sondern gilt als der offizielle Name des Protokolls.
Was ist das Prinzip von MQTT?
Das MQTT-Protokoll arbeitet nach den Prinzipien des Publish/Subscribe-Modells. Bei der herkömmlichen Netzwerkkommunikation kommunizieren Clients und Server direkt miteinander. Die Clients fordern Ressourcen oder Daten vom Server an, der Server verarbeitet diese und sendet eine Antwort zurück. MQTT verwendet jedoch ein Publish/Subscribe-Muster, um den Sender von Nachrichten (Publisher) vom Empfänger von Nachrichten (Subscriber) zu entkoppeln. Stattdessen kümmert sich eine dritte Komponente, ein so genannter Message Broker, um die Kommunikation zwischen Herausgebern und Abonnenten. Die Aufgabe des Brokers ist es, alle eingehenden Nachrichten von Verlagen zu filtern und sie korrekt an die Abonnenten zu verteilen. Der Broker entkoppelt die Verleger und Abonnenten wie folgt:
Entkoppelung von Platzbedarf
Der Herausgeber und der Abonnent kennen den Standort des jeweils anderen Netzwerks nicht und tauschen keine Informationen wie IP-Adressen oder Portnummern aus.
Entkoppelung von Zeit
Der Herausgeber und der Empfänger laufen nicht gleichzeitig oder haben keine Netzwerkverbindung.
Entkopplung der Synchronisation
Sowohl Herausgeber als auch Empfänger können Nachrichten senden oder empfangen, ohne sich gegenseitig zu unterbrechen. Der Empfänger muss zum Beispiel nicht darauf warten, dass der Herausgeber eine Nachricht sendet.
Was sind MQTT-Komponenten?
MQTT implementiert das Publish/Subscribe-Modell durch die Definition von Clients und Brokern wie unten beschrieben.
MQTT-Client
Ein MQTT-Client ist jedes Gerät, vom Server bis zum Microcontroller, auf dem eine MQTT-Bibliothek läuft. Wenn der Client Nachrichten sendet, fungiert er als Herausgeber, und wenn er Nachrichten empfängt, fungiert er als Empfänger. Grundsätzlich kann jedes Gerät, das mit MQTT über ein Netzwerk kommuniziert, als MQTT-Client-Gerät bezeichnet werden.
MQTT-Broker
Der MQTT-Broker ist das Backend-System, das die Nachrichten zwischen den verschiedenen Clients koordiniert. Zu den Aufgaben des Brokers gehören der Empfang und die Filterung von Nachrichten, die Identifizierung der Kunden, die die einzelnen Nachrichten abonniert haben, und der Versand der Nachrichten an sie. Sie ist auch für andere Aufgaben zuständig, wie z. B.:
- Autorisierung und Authentifizierung von MQTT-Clients
- Weitergabe von Nachrichten an andere Systeme zur weiteren Analyse
- Umgang mit verpassten Nachrichten und Client-Sitzungen
MQTT Verbindung
Clients und Broker beginnen ihre Kommunikation über eine MQTT-Verbindung. Clients initiieren die Verbindung, indem sie eine CONNECT-Nachricht an den MQTT-Broker senden. Der Broker bestätigt, dass eine Verbindung hergestellt wurde, indem er mit einer CONNACK-Nachricht antwortet. Sowohl der MQTT-Client als auch der Broker benötigen einen TCP/IP-Stack zur Kommunikation. Die Clients verbinden sich nie untereinander, sondern nur mit dem Broker.
Wie funktioniert MQTT?
Im Folgenden finden Sie einen Überblick über die Funktionsweise von MQTT.
- Ein MQTT-Client stellt eine Verbindung mit dem MQTT-Broker her.
- Sobald die Verbindung hergestellt ist, kann der Client entweder Nachrichten veröffentlichen, bestimmte Nachrichten abonnieren oder beides tun.
- Wenn der MQTT-Broker eine Nachricht erhält, leitet er sie an interessierte Abonnenten weiter.
Lassen Sie uns zum besseren Verständnis die Details aufschlüsseln.
MQTT-Thema
Der Begriff „Thema“ bezieht sich auf Schlüsselwörter, die der MQTT-Broker verwendet, um Nachrichten für die MQTT-Clients zu filtern. Die Themen sind hierarchisch organisiert, ähnlich wie ein Datei- oder Ordnerverzeichnis. Nehmen wir zum Beispiel ein Smart Home-System, das in einem mehrstöckigen Haus mit verschiedenen intelligenten Geräten auf jeder Etage betrieben wird. In diesem Fall kann der MQTT-Broker Themen wie folgt organisieren:
ourhome/groundfloor/livingroom/light
ourhome/firstfloor/kitchen/temperature
MQTT veröffentlichen
MQTT-Clients veröffentlichen Nachrichten, die das Thema und die Daten im Byte-Format enthalten. Der Client bestimmt das Datenformat, z. B. Textdaten, Binärdaten, XML- oder JSON-Dateien. Zum Beispiel kann eine Lampe im Smart Home System eine Nachricht zum Thema Wohnzimmer/Licht veröffentlichen.
MQTT abonnieren
MQTT-Clients senden eine SUBSCRIBE-Nachricht an den MQTT-Broker, um Nachrichten über Themen von Interesse zu erhalten. Diese Nachricht enthält einen eindeutigen Bezeichner und eine Liste der Abonnements. Die Smart Home App auf Ihrem Telefon möchte zum Beispiel anzeigen, wie viele Lichter in Ihrem Haus eingeschaltet sind. Er abonniert das Thema Licht und erhöht den Zähler für alle Nachrichten.
Was ist MQTT über WSS?
MQTT over WebSockets (WSS) ist eine MQTT-Implementierung zum direkten Empfang von Daten in einem Webbrowser. Das MQTT-Protokoll definiert einen JavaScript-Client, der WSS-Unterstützung für Browser bietet. In diesem Fall funktioniert das Protokoll wie gewohnt, aber es fügt zusätzliche Header zu den MQTT-Nachrichten hinzu, um auch das WSS-Protokoll zu unterstützen. Sie können es sich als die MQTT-Nachricht in einem WSS-Umschlag vorstellen.
Ist MQTT sicher?
Die MQTT-Kommunikation verwendet das SSL-Protokoll, um sensible Daten zu schützen, die von IoT-Geräten übertragen werden. Sie können Identität, Authentifizierung und Autorisierung zwischen Clients und dem Broker mit SSL-Zertifikaten und/oder Passwörtern implementieren. Der MQTT-Broker authentifiziert die Clients in der Regel mit ihren Passwörtern sowie mit eindeutigen Client-Kennungen, die er jedem Client zuweist. In den meisten Implementierungen authentifiziert der Client den Server mit Zertifikaten oder DNS-Abfragen. Sie können mit MQTT auch Verschlüsselungsprotokolle implementieren.
Ist MQTT RESTful?
MQTT ist nicht RESTful. Representational State Transfer (REST) ist ein architektonischer Ansatz für die Netzwerkkommunikation, der das Anfrage-Antwort-Muster für die Kommunikation zwischen Sendern und Empfängern von Nachrichten verwendet. Im Gegensatz dazu verwendet MQTT das Publish/Subscribe-Modell der Kommunikation in der Anwendungsschicht und benötigt eine ständige TCP-Verbindung, um Nachrichten im Push-Verfahren zu übertragen. MQTT Version 5 fügt jedoch eine neue Anfrage/Antwort-Methode hinzu, die ähnlich wie REST funktioniert, wobei der Herausgeber ein spezielles Antwortthema anhängen kann, das der Empfänger verarbeitet und eine entsprechende Antwort erzeugt.
Wie kann AWS Ihre MQTT-Implementierung unterstützen?
AWS IoT Core ist ein vollständig verwalteter Service, mit dem Sie Milliarden von IoT-Geräten verbinden und Billionen von Nachrichten an AWS-Services weiterleiten können. Sie können:
- Einfaches und zuverlässiges Verbinden, Verwalten und Skalieren Ihrer Geräteflotten ohne Bereitstellung und Verwaltung von Servern.
- Bestimmen Sie Ihr bevorzugtes Kommunikationsprotokoll, einschließlich MQTT, HTTPS, MQTT über WSS und LoRaWAN.
- Sichere Geräteverbindungen und Daten mit gegenseitiger Authentifizierung und End-to-End-Verschlüsselung.
- Filterung, Umwandlung und Verarbeitung von Gerätedaten im laufenden Betrieb auf der Grundlage der von Ihnen definierten Geschäftsregeln.
Legen Sie sofort mit MQTT in AWS los, indem Sie noch heute ein kostenloses Konto erstellen!
AWS MQTT – Nächste Schritte
Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.
Beginnen Sie mit der Entwicklung mit AWS in der AWS-Managementkonsole.