Zuletzt aktualisiert am 04.12.2025 6 Minuten Lesezeit

MQTT

MQTT (Message Queuing Telemetry Transport) ist ein leichtgewichtiges Messaging-Protokoll, das speziell für die Kommunikation zwischen Geräten mit begrenzten Ressourcen und unzuverlässigen Netzwerkverbindungen entwickelt wurde. Es bildet heute das Rückgrat vieler IoT-Anwendungen (Internet of Things) und ermöglicht die effiziente Datenübertragung zwischen Sensoren, Aktoren und zentralen Systemen.

Stell dir MQTT wie einen intelligenten Postboten vor: Anstatt dass jedes Gerät ständig nachfragen muss, ob neue Nachrichten vorliegen, werden Nachrichten automatisch zugestellt, sobald sie verfügbar sind. Das spart Energie und Bandbreite - zwei kritische Ressourcen in IoT-Umgebungen.

Geschichte und Entwicklung von MQTT

Das MQTT-Protokoll wurde 1999 von Dr. Andy Stanford-Clark (IBM) und Arlen Nipper (Cirrus Link Solutions) entwickelt. Die Entstehungsgeschichte ist eng mit der Öl- und Gasindustrie verbunden: Die Ingenieure benötigten ein System zur Fernüberwachung von Ölpipelines an abgelegenen Standorten, wo nur teure Satellitenkommunikation verfügbar war.

Aus dieser praktischen Anforderung entstand ein Protokoll mit einem klaren Designziel: minimale Bandbreitennutzung und minimaler Energieverbrauch bei gleichzeitiger Zuverlässigkeit.

Die wichtigsten Meilensteine:

  • 1999: Erste Entwicklung durch IBM und Arlen Nipper
  • 2010: Veröffentlichung als offenes Protokoll (MQTT 3.1)
  • 2013: Standardisierung durch OASIS (Organization for the Advancement of Structured Information Standards)
  • 2016: ISO-Standardisierung als ISO/IEC 20922:2016
  • 2019: Veröffentlichung von MQTT 5.0 mit erheblichen Verbesserungen

Seit Version 3.1.1 ist MQTT übrigens kein Akronym mehr, sondern der offizielle Name des Protokolls.

Funktionsweise: Das Publish-Subscribe-Modell

Das Herzstück von MQTT ist das Publish-Subscribe-Modell (Pub/Sub). Anders als bei klassischen Client-Server-Modellen, bei denen Clients aktiv beim Server nach Daten anfragen müssen, arbeitet MQTT nach einem Push-Prinzip.

Die drei Rollen im MQTT-System

  • Publisher: Geräte oder Anwendungen, die Daten an das System senden (z.B. ein Temperatursensor)
  • Subscriber: Geräte oder Anwendungen, die an bestimmten Daten interessiert sind (z.B. eine Heizungssteuerung)
  • Broker: Der zentrale Vermittler, der alle Nachrichten empfängt und an die richtigen Empfänger weiterleitet

Topics: Die Adressierung von Nachrichten

Topics sind hierarchisch strukturierte Zeichenketten, die durch Schrägstriche getrennt werden. Sie fungieren als Adressierungssystem für Nachrichten:

Haus/Wohnzimmer/Temperatur
Fabrik/Halle1/Maschine5/Vibration
Gebaeude/Etage2/Buero12/Licht

Clients können Topics abonnieren (Subscribe) und erhalten dann automatisch alle Nachrichten, die zu diesem Topic veröffentlicht werden. Der Broker übernimmt die Zustellung.

Wildcards für flexible Abonnements

MQTT unterstützt zwei Wildcard-Typen:

  • + (Plus): Ersetzt genau eine Hierarchieebene → Haus/+/Temperatur empfängt Temperaturdaten aus allen Räumen
  • # (Hash): Ersetzt beliebig viele Ebenen → Haus/# empfängt alle Nachrichten aus dem Haus

Quality of Service (QoS) Level

MQTT definiert drei Quality of Service-Level, die die Zuverlässigkeit der Nachrichtenlieferung bestimmen:

QoS-Level Name Beschreibung Anwendungsfall
QoS 0 At Most Once Nachricht wird einmal gesendet, keine Bestätigung Unkritische Sensordaten, wo Verlust akzeptabel ist
QoS 1 At Least Once Nachricht wird bestätigt, bei Ausbleiben wiederholt Wichtige Daten, wo Duplikate verarbeitet werden können
QoS 2 Exactly Once Handshake-Verfahren garantiert genau einmalige Zustellung Kritische Transaktionen, Abrechnungsdaten

Die Wahl des QoS-Levels ist ein Kompromiss zwischen Zuverlässigkeit und Ressourcenverbrauch. Je höher das Level, desto mehr Nachrichten werden zwischen Client und Broker ausgetauscht.

Weitere wichtige MQTT-Features

Retained Messages

Der Broker speichert die letzte Nachricht eines Topics und sendet sie automatisch an neue Subscriber. Das ist praktisch, wenn ein neuer Client sofort den aktuellen Zustand kennen soll, ohne auf die nächste Aktualisierung warten zu müssen.

Last Will and Testament (LWT)

Clients können beim Verbindungsaufbau eine "letzte Nachricht" hinterlegen. Wenn der Client unerwartet die Verbindung verliert, sendet der Broker diese Nachricht automatisch. Das ermöglicht anderen Systemen, auf Ausfälle zu reagieren.

Keep-Alive-Mechanismus

Regelmäßige PING-Nachrichten halten die Verbindung aktiv und ermöglichen die Erkennung von Verbindungsabbrüchen, auch wenn keine Daten übertragen werden.

MQTT 5.0: Neue Features

Mit der 2019 veröffentlichten Version 5 wurden erhebliche Verbesserungen eingeführt:

  • Erweiterte Fehlerbehandlung: Detaillierte Fehlercodes ermöglichen besseres Debugging
  • Message Expiration: Nachrichten können mit einer Gültigkeitsdauer versehen werden
  • Shared Subscriptions: Mehrere Subscriber teilen sich eine Subscription für Load-Balancing
  • User Properties: Benutzerdefinierte Metadaten können zu Nachrichten hinzugefügt werden
  • Request-Response-Pattern: Direkte Antwortmöglichkeiten zwischen Clients

Vergleich mit anderen Protokollen

Aspekt MQTT HTTP/REST WebSocket
Kommunikationsmodell Publish-Subscribe Request-Response Bidirektional
Overhead Sehr gering (2 Byte Header) Hoch (HTTP-Header) Mittel
Verbindung Persistent Kurzlebig Persistent
Ideal für IoT, Sensoren APIs, Webservices Echtzeit-Web-Apps
Batteriefreundlich Sehr gut Schlecht (Polling) Gut

MQTT wurde für ressourcenbegrenzte Geräte und instabile Netzwerke optimiert, während HTTP für klassische Web-Kommunikation konzipiert wurde.

Typische Einsatzgebiete

MQTT hat sich in mehreren Bereichen als Standardprotokoll etabliert:

  • Internet of Things (IoT): Sensoren und Aktoren in verteilten Systemen kommunizieren effizient über MQTT
  • Smart Home und Hausautomation: Lichter, Heizungssysteme, Kameras und andere intelligente Geräte werden über MQTT zentral gesteuert
  • Industrieautomation (Industrie 4.0): Produktionsmaschinen, Überwachungssysteme und SCADA-Systeme nutzen MQTT zur Echtzeit-Datenübertragung
  • Telemetrie und Remote Monitoring: Überwachung von Geräten an abgelegenen Standorten mit schlechter Netzwerkanbindung
  • Mobile Anwendungen: Chat-Apps und Push-Benachrichtigungen profitieren vom geringen Energieverbrauch

Praxisbeispiel: Smart Home Temperaturüberwachung

# Publisher: Temperatursensor sendet alle 5 Minuten
import paho.mqtt.client as mqtt

client = mqtt.Client()
client.connect("broker.local", 1883)
client.publish("haus/wohnzimmer/temperatur", "21.5", qos=1, retain=True)
# Subscriber: Heizungssteuerung empfängt Temperaturdaten
def on_message(client, userdata, msg):
    temperatur = float(msg.payload.decode())
    if temperatur < 20:
        heizung_einschalten()

client = mqtt.Client()
client.on_message = on_message
client.connect("broker.local", 1883)
client.subscribe("haus/+/temperatur")
client.loop_forever()

Sicherheitsaspekte

Bei der ursprünglichen Entwicklung stand Sicherheit nicht im Vordergrund, da MQTT primär für kontrollierte Umgebungen konzipiert war. Moderne Implementierungen bieten jedoch umfangreiche Sicherheitsfunktionen:

TLS/SSL-Verschlüsselung

TLS verschlüsselt die gesamte Kommunikation zwischen Client und Broker. Der Standard-Port für MQTT über TLS ist 8883 (statt 1883 für unverschlüsselte Verbindungen).

Authentifizierung

  • Benutzername/Passwort: Der Client übermittelt Anmeldedaten beim Verbindungsaufbau
  • Zertifikat-basiert: X.509-Zertifikate für sichere Identifizierung
  • Token-basiert: JWT oder OAuth für moderne Cloud-Umgebungen

Access Control Lists (ACLs)

Der Broker kann Regeln definieren, welcher Client zu welchen Topics publishen oder subscriben darf. Das verhindert unbefugten Zugriff auf sensible Daten.

Populäre MQTT-Broker

  • Mosquitto: Open-Source-Broker der Eclipse Foundation, ideal zum Lernen und für kleine Projekte
  • HiveMQ: Enterprise-Broker mit Clustering und Management-Tools
  • EMQX: Hochskalierbarer Broker für große IoT-Deployments
  • AWS IoT Core, Azure IoT Hub, Google Cloud IoT: Cloud-basierte MQTT-Services

MQTT in der IT-Praxis

MQTT begegnet dir in der IT-Praxis besonders häufig bei IoT-Projekten und der Vernetzung von Geräten. Wer als Fachinformatiker für Anwendungsentwicklung oder Fachinformatiker für Systemintegration im Bereich Smart Building, Industrieautomation oder vernetzte Systeme arbeitet, wird mit MQTT in Berührung kommen.

Das Protokoll eignet sich besonders gut, um das Konzept von ereignisgesteuerter Architektur (Event-Driven Architecture) zu verstehen - ein Paradigma, das auch in anderen Bereichen wie Microservices-Architekturen Anwendung findet.

Quellen und weiterführende Links