Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Mikrocontroller
    • Arduino
    • ESP32 & Co.
    • Calliope Mini
    • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

MQTT einfach erklärt: Was ist MQTT und warum ist es perfekt für IoT?

Veröffentlicht am 10. April 202610. April 2026 von Stefan Draeger

MQTT ist das Kommunikationsprotokoll für IoT-Projekte – egal ob du mit einem ESP32 Sensordaten überträgst, ein Dashboard mit Node-RED aufbaust oder komplexe Smart-Home-Systeme betreibst.

Doch nicht nur im Hobbybereich spielt MQTT eine Rolle: Auch in Enterprise-Projekten, Industrieanwendungen und skalierbaren Cloud-Systemen ist MQTT längst etabliert. Immer dann, wenn viele Geräte zuverlässig und effizient miteinander kommunizieren müssen, kommt dieses Protokoll ins Spiel.

👉 MQTT ist ein leichtgewichtiges Publish/Subscribe-Protokoll zur Übertragung von Nachrichten zwischen Geräten.

Dieses Video auf YouTube ansehen.

Dieser Beitrag ist der Auftakt zu einer mehrteiligen MQTT-Serie.

Wir starten mit den Grundlagen und bauen direkt ein erstes kleines Testsystem auf. In den folgenden Teilen greifen wir dann Daten aus verschiedenen smarten Systemen ab, übertragen diese per MQTT und verarbeiten sie weiter – z. B. in Node-RED oder eigenen Anwendungen.

Inhaltsverzeichnis

  • Was bedeutet MQTT eigentlich?
  • MQTT Broker – Mosquitto mit Docker Compose
    • Image herunterladen
    • Docker Compose Datei erstellen
    • mosquitto.conf anlegen
      • Variante 1: Der bequeme Weg
      • Variante 2: Manuell anlegen
      • Berechtigungen auf die Verzeichnisse geben
      • Konfigurationsdatei erstellen
    • Broker erneut starten
    • Status prüfen
    • Logs anzeigen
  • Zugriff auf den MQTT Broker im Docker Container
    • In den Container wechseln
  • Erstes Praxisbeispiel: Temperaturwert senden und empfangen
    • Terminal 1 – Publisher
      • Retain-Flag
    • Terminal 2 – Subscriber
    • Topics strukturieren: Geräte und Sensoren gruppieren
  • Wildcards in MQTT: Mehrere Topics gleichzeitig abonnieren
    • Beispiel: Alle Lampen im Erdgeschoss
    • Wildcard # – mehrere Ebenen gleichzeitig abonnieren
      • Bedeutung von #
      • Wichtige Regel
  • Typischer Effekt bei Retained Messages
    • Beispiel
    • Warum passiert das?
    • Retained Nachrichten löschen
  • Fazit
    • Ausblick
  • FAQ – MQTT einfach erklärt

Was bedeutet MQTT eigentlich?

Bevor wir tiefer einsteigen, stellt sich erstmal eine einfache Frage:
👉 Wofür steht MQTT eigentlich?

MQTT steht für Message Queuing Telemetry Transport.

Klingt im ersten Moment etwas sperrig – lässt sich aber ziemlich einfach herunterbrechen:

  • Message → es werden Nachrichten übertragen
  • Queuing → Nachrichten werden nicht direkt von Gerät zu Gerät gesendet, sondern über eine zentrale Stelle gesammelt und verteilt
  • Telemetry → meist Sensordaten (z. B. Temperatur, Luftfeuchte, Statuswerte)
  • Transport → die Übertragung zwischen Geräten

Vereinfacht gesagt bedeutet das:
MQTT ist ein Protokoll, das speziell dafür entwickelt wurde, Daten effizient zwischen Geräten auszutauschen, ohne dass diese direkt miteinander verbunden sein müssen.

Und genau das macht es so interessant für IoT-Projekte.

Ein Mikrocontroller wie ein ESP32 kann seine Daten einfach „in den Raum senden“, ohne zu wissen, wer diese später empfängt – sei es ein Dashboard, eine Datenbank oder ein anderes Gerät.

Damit das Ganze funktioniert, braucht MQTT im Hintergrund eine zentrale Instanz, die alle Nachrichten entgegennimmt und verteilt.

Genau diese Rolle übernimmt der sogenannte Broker.

Und genau diesen setzen wir jetzt gemeinsam auf.

MQTT Broker – Mosquitto mit Docker Compose

Damit wir unser Testsystem sauber und dauerhaft betreiben können, benötigen wir einen sogenannten MQTT-Broker. Dieser übernimmt die zentrale Rolle in unserem Setup und verteilt später alle Nachrichten zwischen den Geräten.

Eine der bekanntesten und leichtgewichtigen Lösungen ist Eclipse Mosquitto.

Eine sehr gute und ausführliche Beschreibung zum offiziellen Docker-Image findest du direkt auf Docker Hub: https://hub.docker.com/_/eclipse-mosquitto

Image herunterladen

Zunächst laden wir uns das offizielle Image:

docker pull eclipse-mosquitto

Docker Compose Datei erstellen

Jetzt erstellen wir eine eigene Docker-Compose-Datei:

nano mosquitto-docker-compose.yml

Füge folgenden Inhalt ein:

services:
  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto
    restart: unless-stopped
    ports:
      - "1883:1883"
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log

mosquitto.conf anlegen

Die Datei mosquitto.conf wird nicht automatisch erstellt und muss daher einmalig von dir angelegt werden.

Zuvor muss jedoch die Verzeichnisstruktur angelegt werden, dafür gibt es zwei Möglichkeiten:

Variante 1: Der bequeme Weg

Du kannst den Container einmal kurz starten, damit die Verzeichnisstruktur automatisch angelegt wird:

docker compose -f mosquitto-docker-compose.yml up -d

Anschließend stoppst du den Container wieder:

docker compose -f mosquitto-docker-compose.yml down

👉 Danach sind die benötigten Ordner vorhanden und du kannst die Konfigurationsdatei hinzufügen.

Variante 2: Manuell anlegen

Alternativ kannst du die Struktur direkt selbst erstellen:

mkdir mosquitto; cd mosquitto; mkdir config; mkdir data; mkdir log;

Berechtigungen auf die Verzeichnisse geben

Damit der Mosquitto Broker Service in die Verzeichnisse schreiben kann, müssen die berechtigungen angepasst werden.

sudo chown -R 1883:1883 config
sudo chown -R 1883:1883 data
sudo chown -R 1883:1883 log

Konfigurationsdatei erstellen

Im Verzeichnis: ./mosquitto/config legst du nun die Datei mosquitto.conf an:

edit ./mosquitto/config/mosquitto.conf
listener 1883
allow_anonymous true
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
Editor - mosquitto.conf
Editor – mosquitto.conf

Broker erneut starten

Jetzt kannst du den Container wieder starten:

docker compose -f mosquitto-docker-compose.yml up -d

Status prüfen

docker compose -f mosquitto-docker-compose.yml ps
MQTT Broker Mosquitto gestartet
MQTT Broker Mosquitto gestartet

Logs anzeigen

docker compose -f mosquitto-docker-compose.yml logs -f
Ausgabe der Logdatei des Mosquitto Brokers im Docker Container
Ausgabe der Logdatei des Mosquitto Brokers im Docker Container

Zugriff auf den MQTT Broker im Docker Container

Da wir den MQTT-Broker in einem Docker-Container betreiben, müssen wir für einige Befehle direkt innerhalb des Containers arbeiten.

Dafür können wir uns eine interaktive Shell im Container öffnen.

In den Container wechseln

Zunächst schauen wir uns an, wie unser Container heißt:

docker ps --format "{{.Names}}"
Ausgabe der Containernamen in der Konsole mit docker ps
Ausgabe der Containernamen in der Konsole mit docker ps

In der Regel haben wir ihn bereits mosquitto genannt.

Nun wechseln wir in den Container:

docker exec -it mosquitto sh
Zugriff auf die Shell in einem Docker Container mit docker exec
Zugriff auf die Shell in einem Docker Container mit docker exec

Erstes Praxisbeispiel: Temperaturwert senden und empfangen

Nachdem unser MQTT-Broker läuft und wir Zugriff auf den Container haben, schauen wir uns jetzt ein erstes praxisnahes Beispiel an.

Ein klassisches Beispiel: Temperaturwerte.

Mosquitto MQTT Broker - Beispiel - Temperatur - Publisher und Subscriber
Mosquitto MQTT Broker – Beispiel – Temperatur – Publisher und Subscriber

Terminal 1 – Publisher

Der Publisher sendet eine Nachricht an den MQTT-Broker.
Dieser verteilt die Nachricht anschließend automatisch an alle Subscriber, die das entsprechende Topic abonniert haben.

mosquitto_pub -h localhost -t sensor/temperature -m "22.5"

Gibt es keinen Subscriber für dieses Topic, wird die Nachricht zwar vom Broker entgegengenommen, aber nicht gespeichert und somit verworfen.

Retain-Flag

Mit dem Parameter retain kannst du dieses Verhalten beeinflussen.

Wird dieser auf true gesetzt, speichert der Broker die letzte gesendete Nachricht und liefert sie automatisch an neue Subscriber aus, sobald diese das Topic abonnieren.

mosquitto_pub -h localhost -t sensor/temperature -m "22.5" -r
Beispiel - senden einer MQTT Nachricht mit retain flag
Beispiel – senden einer MQTT Nachricht mit retain flag

Hinweis: Es wird dabei immer nur die letzte Nachricht gespeichert.
Sobald eine neue Nachricht mit gesetztem Retain-Flag gesendet wird, ersetzt diese die vorherige.

Terminal 2 – Subscriber

Der Subscriber lauscht auf ein bestimmtes Topic und empfängt automatisch alle Nachrichten, die darauf veröffentlicht werden.

In unserem Beispiel ist das Topic:

sensor/temperature

Der Subscriber wird mit folgendem Befehl gestartet:

mosquitto_sub -h localhost -t sensor/temperature

Sobald nun eine Nachricht auf dieses Topic gesendet wird, erscheint sie direkt im Terminal.

Wichtig zu verstehen: Der Subscriber muss den Publisher nicht kennen.
Er „hört“ einfach auf das Topic und bekommt alle Nachrichten, die dort ankommen.

Topics strukturieren: Geräte und Sensoren gruppieren

Ein großer Vorteil von MQTT ist die Möglichkeit, Topics hierarchisch zu strukturieren. Dazu werden die einzelnen Ebenen mit einem / getrennt.

So lassen sich Geräte und Sensoren logisch gruppieren, zum Beispiel nach Ort und Funktion:

erdgeschoss/steckdosen
erdgeschoss/lampen

erdgeschoss/kueche/steckdosen
erdgeschoss/kueche/lampen
erdgeschoss/kueche/sensoren/temperatur
erdgeschoss/kueche/sensoren/luftfeuchtigkeit

erdgeschoss/wohnstube/steckdosen
erdgeschoss/wohnstube/lampen
erdgeschoss/wohnstube/sensoren/temperatur
erdgeschoss/wohnstube/sensoren/luftfeuchtigkeit

Wildcards in MQTT: Mehrere Topics gleichzeitig abonnieren

Bisher haben wir einzelne Topics gezielt abonniert, zum Beispiel:

mosquitto_sub -h localhost -t erdgeschoss/kueche/lampen

Doch was passiert, wenn wir nicht nur einen Raum, sondern mehrere gleichzeitig überwachen möchten?

👉 Genau hier kommen sogenannte Wildcards ins Spiel.

Beispiel: Alle Lampen im Erdgeschoss

Mit folgendem Topic kannst du alle Lampen im Erdgeschoss abonnieren:

mosquitto_sub -h localhost -t erdgeschoss/+/lampen

Damit würdest du z. B. folgende Topics empfangen:

  • erdgeschoss/kueche/lampen
  • erdgeschoss/wohnstube/lampen
Beispiel - senden und empfangen von Nachrichten mit Wildcard auf einem Topic
Beispiel – senden und empfangen von Nachrichten mit Wildcard auf einem Topic

Wildcard # – mehrere Ebenen gleichzeitig abonnieren

Neben der + Wildcard gibt es noch eine zweite, sehr mächtige Möglichkeit: die # Wildcard

Bedeutung von #

Die Wildcard # steht für beliebig viele Ebenen innerhalb eines Topics. Damit kannst du komplette Bereiche auf einmal abonnieren.

Wichtige Regel

Die # Wildcard darf nur am Ende eines Topics stehen.

Beispiel - Wildcard auf einer Ebene zu einem Topic in MQTT
Beispiel – Wildcard auf einer Ebene zu einem Topic in MQTT

Typischer Effekt bei Retained Messages

Wenn du ein Topic abonnierst und sofort alte Nachrichten angezeigt bekommst, liegt das in der Regel an sogenannten Retained Messages.

alte Nachrichten vom MQTT Broker
alte Nachrichten vom MQTT Broker

Der MQTT-Broker speichert dabei die letzte Nachricht pro Topic, wenn diese mit dem Retain-Flag (-r) gesendet wurde.

Beispiel

Du abonnierst: mosquitto_sub -h localhost -t erdgeschoss/# -v

👉 Und erhältst direkt mehrere Nachrichten, obwohl aktuell nichts gesendet wurde.

alte Nachrichten vom MQTT Broker welche via Retain Flag gesendet wurden
alte Nachrichten vom MQTT Broker welche via Retain Flag gesendet wurden

Warum passiert das?

Für jedes Topic unterhalb von erdgeschoss/... kann eine retained Nachricht gespeichert sein.

Zum Beispiel:

  • erdgeschoss/kueche/lampen
  • erdgeschoss/kueche/sensoren/temperatur
  • erdgeschoss/wohnstube/lampen

👉 Für jedes dieser Topics wird die letzte gespeicherte Nachricht sofort ausgeliefert.

Retained Nachrichten löschen

Um eine retained Nachricht zu löschen, sendest du einfach eine leere Nachricht auf das gleiche Topic – ebenfalls mit gesetztem Retain-Flag:

mosquitto_pub -h localhost -t erdgeschoss/kueche/lampen -n -r

Alternativ:

mosquitto_pub -h localhost -t erdgeschoss/kueche/lampen -m "" -r

Fazit

Wenn du das Prinzip von Publish und Subscribe einmal verstanden hast und weißt, wie Topics aufgebaut sind und mit Wildcards funktionieren, ist der Einstieg in MQTT bereits geschafft.

Viele Dinge wirken am Anfang vielleicht etwas abstrakt – spätestens nach den ersten eigenen Tests wird jedoch schnell klar, wie einfach und flexibel dieses System eigentlich ist.

Gerade die Möglichkeit, Daten unabhängig voneinander zu senden und zu empfangen, macht MQTT so leistungsfähig und perfekt für IoT-Projekte.

Ausblick

Im nächsten Beitrag gehen wir einen Schritt weiter in die Praxis:

Ich zeige dir anhand eines ESP32, wie du echte Sensordaten erfassen und auf ein MQTT-Topic senden kannst.

Diese Daten werden wir anschließend weiterverarbeiten – zum Beispiel in Node-RED oder anderen Anwendungen.

👉 Damit baust du dir Schritt für Schritt dein eigenes kleines IoT-System auf.

FAQ – MQTT einfach erklärt

Was ist MQTT einfach erklärt?

MQTT ist ein leichtgewichtiges Kommunikationsprotokoll, mit dem Geräte Nachrichten untereinander austauschen können.

Dabei senden Geräte ihre Daten an ein sogenanntes Topic, ohne zu wissen, wer diese empfängt. Andere Geräte können diese Topics abonnieren und die Daten verarbeiten.

Was ist ein MQTT Broker?

Ein MQTT-Broker ist die zentrale Instanz im System.

Er nimmt Nachrichten von Sendern (Publishern) entgegen und verteilt diese an alle Empfänger (Subscriber), die das entsprechende Topic abonniert haben.

Ein häufig verwendeter Broker ist Eclipse Mosquitto.

Was ist ein Topic bei MQTT?

Ein Topic ist eine Art „Adresse“ oder „Kanal“, über den Nachrichten gesendet werden.

Beispiel: sensor/temperature

Geräte können gezielt auf bestimmte Topics hören und so nur die für sie relevanten Daten empfangen.

Was bedeutet Publish und Subscribe?
  • Publish bedeutet, eine Nachricht an ein Topic zu senden
  • Subscribe bedeutet, ein Topic zu abonnieren und Nachrichten zu empfangen

Dieses Prinzip nennt man Publish/Subscribe-Modell.

Was ist der Unterschied zwischen MQTT und HTTP?

Der wichtigste Unterschied liegt im Kommunikationsmodell:

  • HTTP arbeitet mit Anfrage und Antwort (Request/Response)
  • MQTT arbeitet mit Publish/Subscribe

MQTT ist dadurch deutlich effizienter und besser für IoT-Projekte geeignet, bei denen viele Geräte gleichzeitig Daten austauschen.

Was sind Wildcards in MQTT?

Wildcards ermöglichen es, mehrere Topics gleichzeitig zu abonnieren.

  • + steht für genau eine Ebene
  • # steht für mehrere Ebenen (nur am Ende erlaubt)

Beispiel: erdgeschoss/+/lampen

Damit können alle Lampen in verschiedenen Räumen gleichzeitig empfangen werden.

Was ist das Retain-Flag bei MQTT?

Mit dem Retain-Flag kann eine Nachricht beim Broker gespeichert werden.

Neue Subscriber erhalten diese Nachricht sofort, sobald sie das Topic abonnieren.

👉 Wichtig: Es wird immer nur die letzte Nachricht gespeichert.

Wann sollte ich MQTT einsetzen?

MQTT eignet sich besonders gut für:

  • Systeme mit vielen Geräten
  • IoT-Projekte mit Mikrocontrollern (z. B. ESP32)
  • Smart Home Anwendungen
  • Echtzeit-Datenübertragung
Kann ich mehrere Geräte gleichzeitig verbinden?

Ja, genau das ist einer der größten Vorteile von MQTT. Mehrere Publisher und Subscriber können gleichzeitig über einen einzigen Broker kommunizieren.

Letzte Aktualisierung am: 10. April 2026

Foto von Stefan Draeger
Über den Autor

Stefan Draeger — Entwickler & Tech-Blogger

Ich zeige praxisnah, wie du Projekte mit Arduino, ESP32 und Smarthome-Komponenten umsetzt – Schritt für Schritt, mit Code und Schaltplänen.

Mehr Artikel von Stefan →

1 thought on “MQTT einfach erklärt: Was ist MQTT und warum ist es perfekt für IoT?”

  1. Pingback: MQTT vs ESP-NOW: Was wirklich besser für dein ESP32 Projekt ist - Technik Blog

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • QR-Code Generator
  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 015565432686
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2026 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
  • Optionen verwalten
  • Dienste verwalten
  • Verwalten von {vendor_count}-Lieferanten
  • Lese mehr über diese Zwecke
Einstellungen anzeigen
  • {title}
  • {title}
  • {title}