Im Folgenden ist eine Zusammenfassung über MQTT, wenn man sich mit MQTT bisher garnicht auskennt sollte man erstmal ausführlichere Artikel zu dem Thema lesen.
Eine gute ausführliche Website ist z.B. https://www.opc-router.de/was-ist-mqtt/
1. Was ist MQTT?
- Definition: MQTT ist ein leichtgewichtiges Kommunikationsprotokoll, das für die Übertragung von Nachrichten zwischen Geräten über ein Netzwerk entwickelt wurde. Es eignet sich besonders für IoT (Internet of Things)-Anwendungen.
- Zweck: Entwickelt, um minimalen Bandbreitenverbrauch und geringe Anforderungen an Energie und Ressourcen zu gewährleisten.
2. Hauptmerkmale von MQTT
- Publisher-Subscriber-Modell:
- Geräte senden Nachrichten (Publisher) und/oder empfangen Nachrichten (Subscriber).
- Die Kommunikation erfolgt über einen Broker, der die Nachrichten verteilt.
- Leichtgewichtig:
- Ideal für ressourcenbeschränkte Geräte.
- Geringer Overhead bei der Datenübertragung.1
- Quality of Service (QoS):
- Stufen der Nachrichtenübertragung
- QoS 0: At most once (keine Garantie, dass Nachrichten ankommen: Die Nachricht des Clients wird genau einmal versendet, unabhängig davon, ob sie bei dem Broker angekommen ist.).
- QoS 1: At least once (Nachrichten werden mindestens einmal zugestellt: Die Nachricht des Clients wird immer und immer wieder versendet, bis der Broker mit einer Empfangsbestätigung antwortet. Das kann dazu führen, dass eine Nachricht mehrmals beim Broker ankommt.).
- QoS 2: Exactly once (Nachrichten werden genau einmal zugestellt: Der Client sendet eine Nachricht einmalig und stellt gleichzeitig sicher, dass diese beim Broker angekommen ist. Die Kommunikation mit Quality of Service 2 benötigt mehr Bandbreite als die mit Quality of Service 0 oder 1.).
- Stufen der Nachrichtenübertragung
- Persistent und Retained-Messages:
- Persistent Sessions: Nachrichten können gespeichert werden, damit neue Clients die letzte Nachricht erhalten.
- Retained Messages: Die letzte Nachricht bleibt auf dem Broker.
- Last-Will Nachrichten:
- Spezielle Nachricht, die gesendet wird, wenn ein Client unerwartet die Verbindung verliert – damit der Verbindungsfehler vom Broker bemerkt wird und an den Anwender weitergegeben werden kann.
- Themen (Topics):
- Nachrichten werden über hierarchische Themenkanäle übertragen (z. B.
sensor/temp
odersensor/humidity
). - Subscriber abonnieren Themen oder verwenden Wildcards (
+
,#
) für mehrere Themen.
- Nachrichten werden über hierarchische Themenkanäle übertragen (z. B.
3. Komponenten von MQTT
- Broker:
- Zentraler Vermittler, der Nachrichten von Publishern empfängt und an Subscriber weiterleitet.
- Beispiele: Mosquitto, HiveMQ, EMQX.
- Clients:
- Geräte oder Anwendungen, die als Publisher oder Subscriber agieren.
4. MQTT-Datenfluss
- Ein Client veröffentlicht (
PUBLISH
) eine Nachricht auf einem bestimmten Thema (z. B.sensor/temp
). - Der Broker empfängt die Nachricht und prüft, welche Subscriber das Thema abonniert haben.
- Der Broker leitet die Nachricht an die entsprechenden Subscriber weiter.
5. Vorteile von MQTT
- Effizient: Minimale Nutzung von Netzwerkressourcen.
- Flexibel: Unterstützt verschiedene Datenstrukturen und Übertragungswege.
- Skalierbar: Kann Hunderte bis Tausende von Geräten verbinden.
- Zuverlässig: Mit QoS-Stufen für unterschiedliche Zuverlässigkeitsanforderungen.
6. Nachteile von MQTT
- Kein integrierter Sicherheitsmechanismus:
- MQTT bietet von sich aus keine integrierte Verschlüsselung (außer Benutzer/Passwort), mit TLS/SSL sollte die Kommunikation auf Transportebene abgesichert werden. Für Zusätzliche sicherheit könnten Broker-/Client Zertifikate verwendet werden.
- Abhängigkeit vom Broker:
- Der Broker ist ein Single Point of Failure, wenn nicht redundant gestaltet.
7. MQTT in der Praxis
- Anwendungsbereiche:
- IoT (z. B. Smarte Haushaltsgeräte, Sensoren, Wearables).
- Industrielle Überwachung und Steuerung.
- Push-Nachrichten in mobilen Apps.
- Beispiel: Smarte Temperaturüberwachung:
- Ein Temperatursensor (Publisher) misst die Temperatur und veröffentlicht Daten auf
sensor/temp
. - Ein Dashboard (Subscriber) hat das Thema
sensor/temp
abonniert und zeigt die Daten in Echtzeit an.
- Ein Temperatursensor (Publisher) misst die Temperatur und veröffentlicht Daten auf
8. Häufig genutzte Tools für MQTT
- MQTT-Broker:
- Eclipse Mosquitto: Open-Source-Broker.
- HiveMQ: Skalierbarer Broker mit erweiterten Funktionen.
- EMQX: Leistungsstarker Open-Source-Broker.
- Clients:
- MQTT.fx: GUI für MQTT-Tests.
- Paho MQTT: Bibliothek für verschiedene Programmiersprachen (Java, Python, etc.).
Zusammenfassung
- MQTT ist ein effizientes Protokoll für die Kommunikation in IoT-Systemen.
- Es basiert auf einem Publisher-Subscriber-Modell und bietet verschiedene QoS-Stufen.
- Sicherheitsmaßnahmen wie TLS und Authentifizierung sind entscheidend.
- Praktische Implementierungen nutzen Broker wie Mosquitto und Clients wie Paho MQTT.
MQTT ist eine der Grundlagen für moderne IoT-Anwendungen und wird in vielen Branchen eingesetzt!
- “Geringer Overhead bei der Datenübertragung” bedeutet, dass das Protokoll nur sehr wenige zusätzliche Daten (Metadaten) zur eigentlichen Nutzlast (Payload) hinzufügt, die übertragen werden. ↩︎