← Technologien

// Technologie · Messaging & IIoT

MQTT

MQTT ist eine schlanke, gemeinsame Sprache, mit der Geräte im Internet der Dinge (IoT) Daten austauschen.

MQTT-Datenfluss: Publish/Subscribe über einen Broker
Tempo:

Schritt 1 von 9

Der Temperatursensor meldet sich beim Broker an. Die Verbindung geht immer vom Gerät aus.

In 30 Sekunden

MQTT ist der Standard, mit dem Sensoren und Maschinen ihre Daten melden. Es braucht sehr wenig Bandbreite und funktioniert auch über wackelige Verbindungen zuverlässig. Eine zentrale Verteilstelle, der Broker, leitet jede Nachricht an alle Abonnenten des passenden Themas (Topic) weiter. Vom Smart Home über die Fabrikhalle bis zur Fahrzeugflotte: Wer heute IoT sagt, meint fast immer auch MQTT.

Der Alltagsvergleich:

Stell dir MQTT wie einen Zeitungsverlag mit Abo-Dienst vor. Ein Sensor ist wie eine Journalistin: Sie schreibt eine Meldung und schickt sie an den Verlag, zum Beispiel in die Rubrik «Sport». Diese Rubrik heisst bei MQTT übrigens Topic. Der Verlag ist der Broker, also die zentrale Verteilstelle. Wer Sport-News lesen will, bestellt beim Verlag ein Abo auf genau diese Rubrik; bei MQTT sagt man: Er abonniert das Topic. Ab dann liefert der Verlag jede neue Meldung automatisch an alle Abonnenten. Das Wichtigste dabei: Die Journalistin kennt ihre Leserinnen und Leser nicht, und die Leser kennen die Journalistin nicht. Beide reden nur mit dem Verlag. Genau so ist es bei MQTT: Geräte senden und empfangen nur über den Broker und müssen sich gegenseitig nicht kennen. Fachleute nennen das Entkopplung. Und wenn ein Abonnent gerade offline ist? Standardmässig verpasst er die Meldungen aus dieser Zeit. Auf Wunsch lässt sich MQTT aber so einstellen, dass der Broker Nachrichten für ihn aufbewahrt, bis er wieder da ist (Fachbegriff: persistente Sitzung).

Wo trifft man MQTT an?

Smart Home

Lichtschalter, Thermostate und Bewegungsmelder melden ihren Zustand per MQTT an Zentralen wie Home Assistant.

Maschinenüberwachung in der Industrie (IIoT)

In Fabriken senden Maschinen Temperatur, Vibration und Stückzahlen per MQTT an Dashboards und Wartungssysteme; Fachleute nennen das IIoT, das industrielle Internet der Dinge.

Fahrzeug-Telematik

Lastwagen- und Mietwagenflotten übertragen Position, Tempo und Batteriestand per MQTT über das Mobilfunknetz an die Zentrale.

Energiemonitoring

Stromzähler, Solaranlagen und Wärmepumpen liefern ihre Messwerte per MQTT an Energie-Dashboards und Abrechnungssysteme.

Landwirtschaft

Sensoren auf Feldern und in Ställen melden Bodenfeuchte, Temperatur und Füllstände per MQTT, oft über schwache Funkverbindungen.

Messenger-Dienste

Auch grosse Apps setzen auf MQTT: Der Facebook Messenger nutzte es jahrelang, um Chat-Nachrichten stromsparend aufs Handy zu bringen.

Gut geeignet für

  • Viele Geräte, kleine Nachrichten: Ein Broker verteilt mühelos Messwerte von Tausenden Sensoren gleichzeitig.
  • Schmale Bandbreite: Der Verwaltungsanteil pro Nachricht (Overhead) ist extrem klein, eine komplette Datennachricht kommt mit wenigen Bytes plus Topic-Name aus, ein Bruchteil eines HTTP-Requests.
  • Instabile Verbindungen: Quittungsmechanismen (QoS) und die Abschiedsnachricht Last Will fangen Verbindungsabbrüche sauber ab.
  • Entkopplung: Sender und Empfänger kennen sich nicht, dadurch lassen sich neue Abonnenten jederzeit ergänzen, ohne die Sender anzufassen.
  • Firewall-freundlich: Der Client (so heisst jedes angeschlossene Gerät oder Programm) baut die Verbindung immer selbst nach aussen zum Broker auf. Auf der Geräteseite muss keine Tür in der Firewall (ein sogenannter Port) von aussen geöffnet werden; erreichbar sein muss nur der Broker.

Weniger geeignet für

  • Harte Echtzeit im Maschinentakt: Wenn jede Millisekunde zählt, etwa bei der Steuerung von Maschinenachsen, sind spezialisierte Maschinen-Netzwerke die richtige Wahl (Fachbegriffe: Feldbusse oder Industrial Ethernet, etwa PROFINET und EtherCAT).
  • Grosse Dateien: MQTT ist für kurze Meldungen gebaut, für Firmware-Updates, Bilder oder Videos eignet sich ein Dateitransfer über HTTP oder ein spezialisiertes Protokoll besser.
  • Klassisches Frage-Antwort-Muster: Wer gezielt eine Antwort auf eine Anfrage braucht, etwa eine App, die auf Knopfdruck Daten abruft, fährt mit HTTP, der gewohnten Web-Technik, meist einfacher.
  • Direktverbindungen ohne Infrastruktur: MQTT braucht immer einen Broker, für eine simple Punkt-zu-Punkt-Verbindung zwischen zwei Geräten ist das zu viel des Guten.

Fakten

Standard
Offener Standard der Standardisierungsorganisation OASIS; Versionen 3.1.1 (2014) und 5.0 (2019), 3.1.1 auch als ISO-Norm (ISO/IEC 20922)
Transport
TCP/IP (die zuverlässige Basisverbindung des Internets); für Browser-Anwendungen zusätzlich über WebSocket (eine Dauerverbindung im Webbrowser)
Standard-Ports
1883 (unverschlüsselt), 8883 (verschlüsselt mit TLS); via WebSocket üblich 80/443
Einordnung
Anwendungsebene: MQTT setzt auf bestehende Internetverbindungen auf (Fachjargon: OSI-Schicht 7)
Topologie
Sternförmig: alle Clients verbinden sich mit einem zentralen Broker
QoS-Stufen
0 (höchstens einmal), 1 (mindestens einmal), 2 (genau einmal)
Nachrichtenformat
Topic (Adress-Text) plus Payload (der eigentliche Inhalt); dieser ist beliebig, auch binär
Overhead
Sehr klein: Der feste Kopfteil einer Nachricht (Fixed Header) beginnt bei 2 Bytes

Im Detail

Broker und Topics: das Adresssystem

Der Broker ist das Herz von MQTT. Er ist ein Server-Programm, mit dem sich alle Geräte verbinden. Kein Gerät redet direkt mit einem anderen, alles läuft über den Broker. Bekannte Broker sind zum Beispiel Mosquitto, HiveMQ oder EMQX.

Jede Nachricht wird auf ein Topic veröffentlicht. Ein Topic ist eine frei wählbare Text-Adresse mit Hierarchie-Ebenen, getrennt durch Schrägstriche: zum Beispiel halle1/linie3/temperatur. Der Broker vergleicht jedes eingehende Topic mit den Abos seiner Clients und stellt die Nachricht allen passenden Abonnenten zu.

Beim Abonnieren sind Platzhalter (Wildcards) erlaubt. Das Pluszeichen + steht für genau eine Ebene: halle1/+/temperatur trifft alle Linien in Halle 1. Die Raute # steht für die Ebene davor und alles darunter: halle1/# trifft auch halle1 selbst. Die Raute darf dabei nur am Ende des Filters stehen. Und wichtig: Wildcards gelten nur beim Abonnieren, publiziert wird immer auf ein konkretes Topic. So genügt ein einziges Abo für viele Sensoren.

QoS: drei Stufen der Zuverlässigkeit

QoS steht für Quality of Service und regelt, wie sicher eine Nachricht ankommt. Der Absender wählt die Stufe pro Nachricht; auch der Abonnent gibt beim Abonnieren eine maximale Stufe an, zugestellt wird die niedrigere der beiden. Je höher die Stufe, desto mehr Quittungen werden ausgetauscht, und desto mehr Datenverkehr entsteht.

QoS 0 heisst «höchstens einmal»: Die Nachricht wird einmal gesendet, ohne Quittung. Geht sie verloren, ist sie weg. Das reicht für unkritische Messwerte, die ohnehin alle paar Sekunden neu kommen. QoS 1 heisst «mindestens einmal»: Der Empfänger bestätigt mit einem PUBACK-Paket. Bleibt die Bestätigung aus, sendet der Absender erneut. Solange die Sitzung besteht, geht die Nachricht so nicht verloren, kann aber doppelt eintreffen; Voraussetzung für die Wiederholung nach einem Verbindungsabbruch ist eine persistente Sitzung.

QoS 2 heisst «genau einmal»: Ein vierstufiger Quittungs-Austausch (die Pakete heissen im Protokoll PUBLISH, PUBREC, PUBREL und PUBCOMP) stellt zwischen den beiden Partnern einer Verbindung sicher, dass die Nachricht weder verloren geht noch doppelt verarbeitet wird. Damit die Garantie bis zum Empfänger reicht, muss auch dieser mit QoS 2 abonniert haben. Das ist die sicherste, aber auch aufwendigste Stufe, etwa für Schaltbefehle oder Abrechnungsdaten.

Retained Messages und Last Will: zwei Praxishelfer

Eine Retained Message ist eine Nachricht mit Merk-Kennzeichen. Der Broker speichert pro Topic die letzte solche Nachricht. Wer das Topic neu abonniert, bekommt diesen letzten Wert sofort geliefert, statt auf die nächste Messung zu warten. Ein Dashboard zeigt so direkt nach dem Start die aktuelle Temperatur an.

Das Last Will (Testament) löst ein anderes Problem: Wie merkt man, dass ein Gerät ausgefallen ist? Beim Verbindungsaufbau hinterlegt der Client eine Abschiedsnachricht beim Broker. Bricht die Verbindung unerwartet ab, also ohne sauberes Abmelden, veröffentlicht der Broker diese Nachricht automatisch. Alle Abonnenten erfahren so, dass der Sensor offline ist, obwohl er sich selbst nicht mehr melden kann.

Sicherheit: Verschlüsselung und Zugriffsschutz

MQTT selbst verschlüsselt nichts, das übernimmt TLS, dieselbe Technik wie bei HTTPS im Browser. Dafür ist der Port 8883 vorgesehen. Der unverschlüsselte Port 1883 gehört nur in geschützte, abgeschottete Netze, niemals offen ins Internet.

Für den Zugriffsschutz sieht der Standard Benutzername und Passwort im Verbindungsaufbau vor. Zusätzlich können sich Clients mit Zertifikaten ausweisen, das ist die robusteste Variante. MQTT 5.0 erlaubt darüber hinaus erweiterte Anmeldeverfahren über ein eigenes AUTH-Paket.

Gute Broker können ausserdem pro Benutzer festlegen, wer welche Topics lesen und wer darauf senden darf. So sieht jeder Kunde oder jede Abteilung nur die eigenen Daten.

Weiterführend