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

  1. Publisher-Subscriber-Modell:
    • Geräte senden Nachrichten (Publisher) und/oder empfangen Nachrichten (Subscriber).
    • Die Kommunikation erfolgt über einen Broker, der die Nachrichten verteilt.
  2. Leichtgewichtig:
    • Ideal für ressourcenbeschränkte Geräte.
    • Geringer Overhead bei der Datenübertragung.1
  3. 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.).
  4. 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.
  5. 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.
  6. Themen (Topics):
    • Nachrichten werden über hierarchische Themenkanäle übertragen (z. B. sensor/temp oder sensor/humidity).
    • Subscriber abonnieren Themen oder verwenden Wildcards (+, #) für mehrere Themen.

3. Komponenten von MQTT

  1. Broker:
    • Zentraler Vermittler, der Nachrichten von Publishern empfängt und an Subscriber weiterleitet.
    • Beispiele: Mosquitto, HiveMQ, EMQX.
  2. Clients:
    • Geräte oder Anwendungen, die als Publisher oder Subscriber agieren.

4. MQTT-Datenfluss

  1. Ein Client veröffentlicht (PUBLISH) eine Nachricht auf einem bestimmten Thema (z. B. sensor/temp).
  2. Der Broker empfängt die Nachricht und prüft, welche Subscriber das Thema abonniert haben.
  3. 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:
    1. Ein Temperatursensor (Publisher) misst die Temperatur und veröffentlicht Daten auf sensor/temp.
    2. Ein Dashboard (Subscriber) hat das Thema sensor/temp abonniert und zeigt die Daten in Echtzeit an.


8. Häufig genutzte Tools für MQTT

  1. MQTT-Broker:
    • Eclipse Mosquitto: Open-Source-Broker.
    • HiveMQ: Skalierbarer Broker mit erweiterten Funktionen.
    • EMQX: Leistungsstarker Open-Source-Broker.
  2. 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!

  1. “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. ↩︎