MQTT ist ein leichtgewichtiges Protokoll für die Nachrichtenübertragung, das speziell für Geräte mit begrenzten Ressourcen und Netzwerke mit niedriger Bandbreite entwickelt wurde. Es findet häufig in der Heimautomatisierung, im Internet der Dinge (IoT) sowie in industriellen Anwendungen Verwendung.
Geschichte #
MQTT wurde 1999 von Andy Stanford-Clark (IBM) und Arlen Nipper (Arcom, später Cirrus Link) entwickelt. Ziel war es, ein Protokoll zu schaffen, das effizient in Umgebungen mit minimalen Netzwerkressourcen arbeitet, wie beispielsweise Satellitenkommunikation. Seitdem hat es sich zu einem der führenden Protokolle im IoT-Bereich entwickelt und wurde 2014 als OASIS-Standard veröffentlicht.
Funktionsweise #
MQTT basiert auf einem Publisher-Subscriber-Modell und nutzt das TCP/IP-Protokoll als Transportebene.
Hauptkomponenten: #
- Broker:
Der zentrale Server, der Nachrichten von Publishern empfängt und an die entsprechenden Subscriber weiterleitet. - Publisher:
Ein Gerät oder eine Anwendung, die Nachrichten an einen bestimmten „Topic“ sendet. - Subscriber:
Ein Gerät oder eine Anwendung, die sich für bestimmte Topics anmeldet, um Nachrichten zu empfangen.
Topics: #
Topics sind hierarchische Kanäle, die die Struktur der Nachrichten bestimmen. Zum Beispiel:home/livingroom/temperature
Subscriber können sich auch für mehrere Topics mit Wildcards wie #
(alle Unterthemen) oder +
(eine Ebene) anmelden.
Merkmale #
- Leichtgewichtig:
Durch geringen Overhead ist MQTT ideal für ressourcenbeschränkte Geräte und Netzwerke. - Qualitätsstufen (QoS):
Nachrichten können mit verschiedenen Qualitätsstufen übertragen werden:- QoS 0: „Fire and Forget“ – Nachricht wird einmal gesendet.
- QoS 1: Nachricht wird mindestens einmal zugestellt.
- QoS 2: Nachricht wird genau einmal zugestellt.
- Retained Messages:
Der Broker speichert die letzte Nachricht eines Topics und stellt sie neuen Subscriber sofort zur Verfügung. - Will Messages:
Falls ein Client unerwartet die Verbindung verliert, sendet der Broker eine zuvor festgelegte Nachricht an ein bestimmtes Topic. - Sicherheitsoptionen:
MQTT unterstützt SSL/TLS-Verschlüsselung und Authentifizierung durch Benutzernamen und Passwort.
Anwendungsbereiche #
- Heimautomatisierung:
Steuerung und Überwachung von Smart-Home-Geräten wie Lampen, Thermostaten und Sensoren. - Industrie 4.0:
Maschinenkommunikation und Zustandsüberwachung in Produktionsstätten. - IoT-Plattformen:
Verbindung und Kommunikation von IoT-Geräten wie Sensoren, Aktoren und Gateways. - Transport und Logistik:
Überwachung von Fahrzeugen, Containern und Lieferketten.
Vorteile #
- Effizient bei geringer Bandbreite.
- Skalierbar für kleine und große Netzwerke.
- Flexibles Publish/Subscribe-Modell.
- Einfach zu implementieren und zu erweitern.
Nachteile #
- Abhängigkeit vom Broker: Der Broker ist eine Single Point of Failure, wenn keine Redundanz implementiert ist.
- Sicherheitsanforderungen: MQTT benötigt zusätzliche Konfiguration, um sicher zu sein (z. B. TLS).
- Kein nativer Support für komplexe Datenformate wie JSON oder XML (muss durch die Anwendung hinzugefügt werden).
Alternativen #
- AMQP (Advanced Message Queuing Protocol): Eignet sich für komplexere Nachrichtenanforderungen.
- CoAP (Constrained Application Protocol): Entwickelt für sehr eingeschränkte Umgebungen.
- WebSockets: Oft für Echtzeitanwendungen verwendet.
MQTT ist ein vielseitiges und ressourcenschonendes Protokoll, das sich besonders für IoT-Anwendungen eignet. Mit seinem einfachen Design und seiner Flexibilität hat es sich als Standard für die Kommunikation zwischen vernetzten Geräten etabliert.
Weblinks: