MQTT ist der Gruppenchat für Maschinen: Niemand adressiert jemanden, alle posten in ein Thema, und der Broker spielt Briefträger.
Kurz gesagt
MQTT ist ein Nachrichtenprotokoll-Standard von OASIS für das Internet der Dinge. Es ist ein sehr leichter Publish/Subscribe-Transport für kleine Geräte und schmale Netzanbindungen [1][2]. Clients sprechen nie direkt miteinander. Sie verbinden sich mit einem Broker, veröffentlichen Nachrichten zu Topics und abonnieren Topics, die sie interessieren [1][3]. Im Homelab ist MQTT der Kleber zwischen Sensoren, Zigbee-Brücken und Home Assistant [6].
So funktioniert’s
- Broker und Clients. Ein Broker wie Eclipse Mosquitto nimmt jede Nachricht entgegen und gibt sie an passende Abonnenten weiter. Die Home-Assistant-Dokumentation nennt einen eigenen Broker die einfachste und privateste Option und empfiehlt die Mosquitto-App [6].
- Topics und Filter. Ein Topic ist eine Bezeichnung wie
home/livingroom/temperature. Ein Abonnement nutzt einen Topic-Filter mit Platzhaltern:+steht für eine Ebene,#für mehrere Ebenen [3]. - Dienstgüte (QoS). MQTT kennt drei Stufen: 0 höchstens einmal, 1 mindestens einmal, 2 genau einmal [1]. Höhere Stufen kosten mehr Datenverkehr, wähle sie also je Anwendungsfall.
- Retain und Will. Eine Retained Message bleibt auf dem Broker liegen und geht an künftige Abonnenten, praktisch für den zuletzt bekannten Zustand. Eine Will Message veröffentlicht der Broker, wenn die Verbindung eines Clients unsauber endet; so lässt sich melden, dass ein Gerät offline ist [3][6].
- Versionen und Ports. Den Standard gibt es als MQTT 5 und als älteres MQTT 3.1.1, das ein ISO- und OASIS-Standard ist [2]. Der Text von 3.1.1 vermerkt in einem nicht normativen Kommentar, dass die TCP-Ports 1883 (unverschlüsselt) und 8883 (TLS) bei der IANA registriert sind [4].
- Sichere Voreinstellungen. Seit Mosquitto 2.0 bindet ein Broker ohne konfigurierte Listener nur an die Loopback-Adresse, also kann nur der lokale Rechner zugreifen [5]. Sobald du einen Listener definierst, steht
allow_anonymousstandardmäßig auf false, Clients brauchen also Zugangsdaten [7]. Bis 1.6.x war der Standard true, solange keine andere Sicherheitsoption gesetzt war [7].
Ein Wohnungsbeispiel
In unserem Inventar (Stand 14. bis 16. Okt. 2026) ist kein MQTT-Broker erfasst, das hier ist also ein erfundenes Szenario. Eine Docker-VM in unserem Homelab betreibt Portainer, n8n und Homarr (Stand 1. Okt. 2026); ein MQTT-Broker gehört nicht dazu. Stell dir vor, du setzt daneben einen Mosquitto-Container. Ein Temperatursensor veröffentlicht home/livingroom/temperature, Home Assistant abonniert per MQTT-Discovery. Gibst du Port 1883 ins LAN frei, musst du einen Listener konfigurieren, und damit gilt die Anmeldepflicht [5][7]. Für alles jenseits des LANs nutze TLS auf Port 8883 [4].
Prüfliste
- Betreibe einen Broker und notiere, welche Clients sich verbinden [6].
- Benenne Topics nach einem Muster wie
ort/raum/messwert(unsere Einschätzung). - Lege Benutzerkonten an und lass
allow_anonymousbei jedem erreichbaren Listener auf false [7]. - Nutze Retained Messages für Zustände, nicht für Ereignisse (unsere Einschätzung).
- Schalte TLS ein, bevor Daten über nicht vertrauenswürdige Netze laufen [4].
- Teste mit einem zweiten Client, der
#abonniert, auf einem Testbroker und nie auf dem produktiven (unsere Einschätzung).