Mit der MQTT-Unterstützung von Tasmota wird aus einem günstigen ESP8266- oder ESP32-Zwischenstecker ein Gerät, das Sie aus jedem Skript, Dashboard oder Hausautomationssystem schalten und überwachen können. In diesem Tutorial konfigurieren Sie MQTT-Host, Client ID, Topic und Full Topic und steuern dann einen Zwischenstecker und lesen seine Energietelemetrie über den öffentlichen MQTT-Broker unter broker.connectmq.com.
Wie Tasmota MQTT nutzt
Tasmota ist eine Open-Source-Firmware für ESP-basierte Geräte. Ab Werk bietet sie eine Weboberfläche, ihre eigentliche Stärke ist aber MQTT: Jeder Befehl, den Sie in die Konsole tippen können, lässt sich auch als MQTT-Nachricht senden, und jede Zustandsänderung und jeder Sensorwert wird zurückveröffentlicht. Dadurch ist ein Tasmota-Stecker ein vollwertiger Teilnehmer in Node-RED, Home Assistant, openHAB oder Ihrem eigenen Code.
Tasmota baut jedes Topic aus drei Teilen auf:
- Prefix -
cmndfür Befehle, die Sie senden,statfür Antworten und Zustandsänderungen,telefür periodische Telemetrie und Verfügbarkeit. - Topic - ein kurzer, eindeutiger Gerätename wie
plug1. - Full Topic - eine Vorlage, die beides kombiniert, standardmäßig
%prefix%/%topic%/.
Mit dem Standard-Full-Topic führt ein Befehl an cmnd/plug1/POWER dazu, dass das Gerät auf stat/plug1/RESULT und stat/plug1/POWER antwortet, während Telemetrie an tele/plug1/STATE und tele/plug1/SENSOR geht. Der Spickzettel zu Tasmota-MQTT-Befehlen listet die nützlichsten Befehle im Detail auf.
Was Sie brauchen
- Ein Gerät, auf dem bereits Tasmota läuft (Version 13 oder neuer empfohlen) und das mit Ihrem WLAN verbunden ist.
- Die IP-Adresse des Geräts, um seine Weboberfläche zu öffnen.
- Einen Computer mit
mosquitto_pubundmosquitto_suboder einen beliebigen MQTT-Client wie den ConnectMQ-Webclient im Portal.
Schritt 1: Eindeutige Namen wählen
Der kostenlose öffentliche MQTT-Broker unter broker.connectmq.com wird von allen gemeinsam genutzt, und alles, was dort veröffentlicht wird, kann jeder lesen. Legen Sie vor der Konfiguration von Tasmota fest:
- eine zufällige ID, zum Beispiel
t7x2pk, - eine Client ID wie
tasmota-t7x2pk, - ein Topic wie
plug1, - ein Full Topic, das Ihre Nachrichten unter Ihrem eigenen Präfix hält:
connectmq/demo/t7x2pk/%prefix%/%topic%/.
Die resultierenden Topics sind sechs Ebenen tief (connectmq/demo/t7x2pk/cmnd/plug1/POWER) und liegen damit innerhalb des Limits von acht Ebenen des öffentlichen MQTT-Brokers.
Schritt 2: Tasmota MQTT in der Weboberfläche konfigurieren
Öffnen Sie die IP-Adresse des Geräts im Browser und gehen Sie zu Configuration und dann Configure MQTT. Tragen Sie ein:
| Feld | Wert für den öffentlichen Test | Wert für den Produktivbetrieb |
|---|---|---|
| Host | broker.connectmq.com |
Ihr Broker-Host |
| Port | 1883 |
1883 oder 8883 mit einem TLS-Build |
| Client | tasmota-t7x2pk |
YOUR_CLIENT_ID |
| User | leer lassen | YOUR_USERNAME |
| Password | leer lassen | YOUR_PASSWORD |
| Topic | plug1 |
plug1 |
| Full Topic | connectmq/demo/t7x2pk/%prefix%/%topic%/ |
home/%prefix%/%topic%/ |
Klicken Sie auf Save. Tasmota startet neu und verbindet sich. Wenn auf der Seite Other configuration das MQTT-Kontrollkästchen nicht angehakt ist, aktivieren Sie es; in Standard-Builds ist MQTT standardmäßig an, manche Templates deaktivieren es aber.
Schritt 3: Oder Tasmota MQTT über die Konsole konfigurieren
Die Konsole (Hauptmenü, dann Console) ist schneller und skriptfähig. Backlog führt mehrere Befehle in einem Durchgang aus, und das Gerät startet am Ende nur einmal neu:
Backlog MqttHost broker.connectmq.com; MqttPort 1883; MqttClient tasmota-t7x2pk; MqttUser 0; MqttPassword 0; Topic plug1; FullTopic connectmq/demo/t7x2pk/%prefix%/%topic%/
MqttUser 0 und MqttPassword 0 löschen die Standardwerte DVES_USER / DVES_PASS, sodass sich das Gerät anonym verbindet. Nach dem Neustart sollte das Konsolenlog eine Zeile wie MQT: Connected zeigen, gefolgt von der LWT-Nachricht Online.
Schritt 4: Das Gerät beobachten
Abonnieren Sie alles unter Ihrem Präfix:
mosquitto_sub -h broker.connectmq.com -p 1883 -i watch-t7x2pk \
-t 'connectmq/demo/t7x2pk/#' -v
Innerhalb weniger Sekunden sehen Sie etwa Folgendes:
connectmq/demo/t7x2pk/tele/plug1/LWT Online
connectmq/demo/t7x2pk/cmnd/plug1/POWER (null)
connectmq/demo/t7x2pk/tele/plug1/INFO1 {"Info1":{"Module":"Generic","Version":"14.2.0(release-tasmota)",...}}
connectmq/demo/t7x2pk/tele/plug1/STATE {"Time":"2026-10-16T10:12:03","Uptime":"0T00:00:15","POWER":"OFF",...}
Das Topic LWT ist retained und zugleich der Last Will des Geräts; es wechselt also auf Offline, wenn der Stecker Strom oder WLAN verliert. Dieses Topic sollten Sie für die Verfügbarkeit beobachten.
Schritt 5: Den Zwischenstecker per MQTT steuern
Senden Sie Befehle an das Präfix cmnd:
# Einschalten
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'ON'
# Umschalten
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'TOGGLE'
# Aktuellen Zustand abfragen (leerer Payload)
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -n
Jeder Befehl erzeugt stat/plug1/RESULT mit {"POWER":"ON"} und stat/plug1/POWER mit ON. Stecker mit Energiemessung veröffentlichen außerdem tele/plug1/SENSOR mit Spannung, Strom und Leistung, standardmäßig alle 300 Sekunden. Um das beim Testen zu beschleunigen:
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/TelePeriod' -m '30'
TelePeriod akzeptiert 10 bis 3600 Sekunden. Bleiben Sie auf dem öffentlichen MQTT-Broker zurückhaltend; dort liegt das Limit bei 10 Nachrichten pro Sekunde und Client, und ein Stecker alle 30 Sekunden ist weit davon entfernt.
Soll ein Stecker nach einem Stromausfall in einem definierten Zustand zurückkommen, setzen Sie zusätzlich PowerOnState: PowerOnState 0 lässt ihn aus, 1 schaltet ihn ein, und der Standard 3 stellt den zuletzt gespeicherten Zustand wieder her. Zusammen mit retained Zustands-Topics macht das das Verhalten des Steckers für jedes Dashboard vorhersehbar.
Tasmota-MQTT-Daten im Code lesen
Hier ein kleiner Python-Listener (paho-mqtt 2.x), der Leistungswerte und Verfügbarkeit ausgibt:
import json
import paho.mqtt.client as mqtt
PREFIX = "connectmq/demo/t7x2pk"
def on_connect(client, userdata, flags, reason_code, properties):
client.subscribe(f"{PREFIX}/tele/plug1/SENSOR")
client.subscribe(f"{PREFIX}/tele/plug1/LWT")
client.subscribe(f"{PREFIX}/stat/plug1/POWER")
def on_message(client, userdata, msg):
text = msg.payload.decode()
if msg.topic.endswith("/SENSOR"):
energy = json.loads(text).get("ENERGY", {})
print("power W:", energy.get("Power"), "today kWh:", energy.get("Today"))
else:
print(msg.topic, text)
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="py-t7x2pk")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_forever()
Vom öffentlichen MQTT-Broker in den Produktivbetrieb
Der öffentliche MQTT-Broker ist für Tests und Prototypen gedacht, nicht für echte Produktivdaten. Jeder, der das Topic errät, könnte Ihren Stecker schalten; ein Stecker, der eine Heizung oder einen Server versorgt, darf dort also niemals bleiben. Für das dauerhafte Setup:
- Legen Sie im ConnectMQ-Portal einen privaten Broker an und kopieren Sie den generierten Benutzernamen, das Passwort und die Client ID.
- Setzen Sie sie mit
Backlog MqttHost <host>; MqttUser YOUR_USERNAME; MqttPassword YOUR_PASSWORD; MqttClient YOUR_CLIENT_ID; FullTopic home/%prefix%/%topic%/. - Verwenden Sie TLS, wenn Ihr Build es unterstützt. ESP32-Builds
tasmota32tun das, die meisten ESP8266-Builds nicht. Die Anleitung zu Tasmota MQTT mit TLS erklärt die Details. - Geben Sie jedem Gerät eigene Zugangsdaten und eine eigene Client ID, denn der Broker akzeptiert nur eine Session pro Client ID.
Ein verwalteter MQTT-Broker erspart Ihnen eine Mosquitto-Kiste zu Hause und macht den Stecker ohne Portweiterleitung von außen erreichbar. Dasselbe Muster nutzen kleinere Betriebe, um mit Zwischensteckern mit Energiemessung den Verbrauch einzelner Maschinen oder Geräte zu erfassen, als einfachen Einstieg ins Energiemonitoring. Weitere Smart-Home-Bausteine finden Sie in der Anleitung zu Smart-Plugs mit MQTT und im Überblick zur IoT-Automatisierung.
Fehlersuche bei Tasmota MQTT
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
Konsole zeigt MQT: Connect failed ... rc -2 |
Host nicht erreichbar oder falscher Port | MqttHost, DNS und Port prüfen |
rc 5 (nicht autorisiert) |
Falscher Benutzer/falsches Passwort oder falsche Client ID | Zugangsdaten neu eingeben, MqttClient prüfen |
| Verbindet sich und bricht alle paar Sekunden ab | Doppelte Client ID | Jedem Gerät und Tool eine eindeutige ID geben |
| Keine Nachrichten unter Ihrem Präfix | Tippfehler im Full Topic | FullTopic ohne Wert ausführen, um den aktuellen Wert auszugeben |
| Befehle werden ignoriert | An stat oder tele statt an cmnd gesendet |
Befehle gehen immer an das Präfix cmnd |
Das Tasmota-Projekt dokumentiert jeden Befehl und jede Einstellung auf seiner offiziellen Website unter tasmota.github.io.
Tasmota-Geräte mit ConnectMQ steuern
Erstellen Sie einen kostenlosen Serverless-Broker unter app.connectmq.com ohne Kreditkarte, fügen Sie die Zugangsdaten auf der Seite Configure MQTT ein und schalten Sie Ihre Stecker mit dem Browser-Client und dem Live-Topic-Explorer des Portals. ConnectMQ unterstützt MQTT 3.1.1 und 5.0, sodass sich Tasmota ohne besondere Einstellungen verbindet.
Häufig gestellte Fragen
Was ist der Unterschied zwischen Topic und Full Topic in Tasmota?
Topic ist der kurze Gerätename, etwa plug1. Full Topic ist die Vorlage, die aus Präfix und Topic das vollständige Topic bildet, zum Beispiel home/%prefix%/%topic%/.
Warum startet Tasmota neu, nachdem ich MQTT-Einstellungen geändert habe?
Tasmota übernimmt Änderungen an MQTT-Host, Port, Zugangsdaten und Topic durch einen Neustart. Mit Backlog fassen Sie mehrere Änderungen zu einem einzigen Neustart zusammen.
Wie frage ich den Zustand eines Tasmota-Geräts ab, ohne ihn zu ändern?
Veröffentlichen Sie einen leeren Payload auf dem Befehls-Topic, zum Beispiel cmnd/plug1/POWER. Das Gerät antwortet auf stat/plug1/RESULT mit seinem aktuellen Zustand.
Kann ich viele Tasmota-Geräte mit einem Befehl steuern?
Ja. Jedes Gerät hört zusätzlich auf ein Gruppen-Topic, standardmäßig tasmotas, sodass eine Nachricht an cmnd/tasmotas/POWER alle erreicht. Ändern Sie es mit GroupTopic, wenn Sie einen Broker gemeinsam nutzen.



