In verteilten IoT-Systemen kommunizieren Geräte selten direkt miteinander. Stattdessen werden Daten über zentrale Dienste ausgetauscht, die Informationen sammeln, verteilen und für verschiedene Anwendungen bereitstellen. Dieses Prinzip ermöglicht eine flexible, skalierbare und robuste Vernetzung, wie sie in Smart Homes, Industrieanlagen oder Cloud-Anwendungen üblich ist.
Das MQTT-Protokoll greift genau dieses Konzept auf: Geräte (Producer) senden ihre Daten nicht gezielt an einen Empfänger, sondern veröffentlichen sie über einen Broker als Vermittlungsinstanz. Andere Geräte (Consumer) können diese Informationen abonnieren und weiterverarbeiten. Dadurch entsteht eine entkoppelte Kommunikation, bei der Sender und Empfänger unabhängig voneinander arbeiten können.
Ziel dieses Tutorials ist es, dieses Kommunikationsprinzip anhand eines einfachen Aufbaus zu verstehen und praktisch umzusetzen. Dazu werden zwei Mikrocontroller eingesetzt: Einer fungiert als Sender (Producer) und veröffentlicht Daten, der andere als Empfänger (Consumer) und reagiert auf diese Nachrichten. Ein MQTT-Broker übernimmt dabei die Rolle des zentralen Vermittlers. Auf diese Weise lernen wir das grundlegende Publish-Subscribe-Prinzip kennen, wie Geräte über einen Broker miteinander kommunizieren und wie sich vernetzte Systeme modular aufbauen lassen.
In klassischen Webanwendungen wird oft das HTTP-REST-Prinzip verwendet: Ein Client stellt aktiv eine Anfrage (Request), und ein Server antwortet darauf (Response). Dieses Modell ist einfach, aber für IoT-Anwendungen eigentlich ineffizient. MQTT verfolgt dagegen einen anderen Ansatz:
Vorteil von MQTT: Geräte müssen nicht ständig nach neuen Daten fragen, sondern erhalten diese automatisch, sobald sie verfügbar sind. Das spart Bandbreite, Energie und Rechenleistung.

Topics: organisieren dabei die Nachrichten. Sie funktionieren ähnlich wie Verzeichnisse und ermöglichen eine klare Strukturierung der Daten. Topics sind case-sensitiv, hierarchisch aufgebaut und durch / getrennt: “haus/wohnzimmer/temperatur”, “iotwerkstatt/temperatur”. Mehrere Geräte nutzen das selbe Topic. Topics sind frei definierbar, beliebig verschachtelbar und es gibt optionale Wildcards: “haus/+/temperatur” liefert alle Temperaturwerte im Haus.
Quality of Service: QoS beschreibt die Zuverlässigkeit der Nachrichtenübertragung.
| Level | Bedeutung | Beschreibung |
|---|---|---|
| 0 | At most once | Nachricht wird einmal gesendet, kann verloren gehen |
| 1 | At least once | Nachricht kommt mindestens einmal an (evtl. doppelt) |
| 2 | Exactly once | Nachricht kommt genau einmal an (aufwendig) |
In IoT-Projekten wird häufig QoS 0 oder 1 verwendet, da sie effizient sind.
Eine Retained Message ist eine spezielle Nachricht, die der Broker speichert. Wenn ein neuer Subscriber ein Topic abonniert, erhält er sofort die letzte gespeicherte Nachricht. Ein später gestartetes Gerät bekommt sofort den aktuellen Wert, ohne warten zu müssen.
Für erste Experimente ist ein öffentlicher Broker wie broker.mqtt-dashboard.com sehr praktisch, da keine eigene Server-Infrastruktur benötigt wird. Dennoch gibt es einige wichtige Punkte, die beachtet werden sollten. Ein öffentlicher Broker ist für alle frei zugänglich. Das bedeutet: Jeder kann Topics lesen und beschreiben, Daten sind nicht privat, andere Nutzer könnten Nachrichten sehen oder überschreiben. Deshalb: verwende eindeutige Topic-Namen, z. B. “iotwerkstatt/temperatur”. Demo-Broker nutzen keine Benutzeranmeldung und speichern unsere Nachrichten nicht dauerhaft. Für produktive Projekte empfiehlt sich ein eigener Broker (z. B. Mosquitto) oder ein Cloud-Dienst mit Authentifizierung (adafruit,thingspeak.com usw.).

Producer (Octopus)
Im Setup stellen wir per WLAN die Verbindung zu unserem Demo-Broker her. Wichtig ist dabei, dass wir sowohl dem Producer, als auch dem Consumer einen eindeutigen Client-Namen geben. MQTT nutzt den Port 1883, dieser Port muss im Gastnetzwerk eventuell erst freigegeben werden. Hotspot über Handy ist ein gutes Fallback. In der Loop senzen wir zyklisch unsere Messwerte (hier auf dem Topic iotwerkstatt/temperature). Wichtig ist das gleiche Topic für Producer und Consumer.

Consumer (Makey)
Um jetzt an unsere aktuellen Temperaturmesswerte zu gelangen, abonnieren wir das Topic “iotwerkstatt/temperature” beim Broker. Dies geschieht einmalig im Setup. Mit der Subscription haben wir ein Callback ( = Unterprogramm) definiert, welches bei jedem neuen Wert asynchron aufgerufen wird. In unserem Fall werden die aktuellen Daten (in der Variable MQTT_RX_Payload) auf das OLED ausgegeben. In der Loop können wir unser normales Programm realisieren.

Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an VCRP/Panopto übermittelt. Weitere Informationen dazu finden Sie hier.
Auch die Cloud-Anwendung Thingspeak besitzt einen integrierten MQTT-Zugang und einen eigenen Broker. Wollen wir so Daten in unseren Thingspeak-Channel schreiben, so müssen wir diesen jedoch zuerst für die MQTT-Kommunikation freischalten. Dies geschieht im Web-Browser unter dem Menüfeld “Devices”. User, Client_ID und Passwort wird dann per Cut & Paste an das Ardublock übergeben. Das von Matlab vorgegebene Topic lautet: channels/channel-id/publish/fields/field1 für das erste Datenfeld im Kanal.
MQTT ist ein zentrales Kommunikationsprotokoll für das Internet der Dinge, da es eine effiziente, asynchrone und skalierbare Datenübertragung zwischen Geräten ermöglicht. Im Gegensatz zu klassischen HTTP-Ansätzen arbeitet MQTT ereignisbasiert und entkoppelt Sender und Empfänger über einen Broker.
Im Tutorial wurde gezeigt, wie zwei Mikrocontroller über einen Broker miteinander kommunizieren und dabei grundlegende Konzepte wie Topics, QoS und Retained Messages praktisch angewendet werden. Dadurch entsteht ein flexibles System, das sich leicht erweitern lässt – etwa durch zusätzliche Sensoren, Aktoren oder Cloud-Dienste.
MQTT bildet damit die Grundlage für viele moderne Anwendungen in den Bereichen Smart Home, Industrie 4.0 und vernetzte Systeme. Wer dieses Prinzip verstanden hat, kann komplexe IoT-Architekturen entwickeln und reale Probleme effizient digital vernetzen. Ein schönes Beispiel ist die sprachgesteuerte Cocktailmaschine aus dem Makerspace am Campus.
Sie verlassen die offizielle Website der Hochschule Trier