La prise en charge de MQTT par Tasmota transforme une prise connectée ESP8266 ou ESP32 bon marché en un appareil que vous pouvez commander et surveiller depuis n'importe quel script, tableau de bord ou système domotique. Dans ce tutoriel, vous allez configurer l'hôte MQTT, le client ID, le Topic et le Full Topic, puis piloter une prise et lire sa télémétrie énergétique via le serveur MQTT public gratuit broker.connectmq.com.
Comment Tasmota utilise MQTT
Tasmota est un firmware open source pour les appareils à base d'ESP. Il propose d'emblée une interface web, mais sa vraie force est MQTT : chaque commande que vous pouvez taper dans la console peut aussi être envoyée sous forme de message MQTT, et chaque changement d'état et chaque mesure de capteur est publié en retour. Une prise Tasmota devient ainsi un citoyen de première classe dans Node-RED, Home Assistant, openHAB ou votre propre code ; Jeedom et Domoticz savent aussi communiquer en MQTT.
Tasmota construit chaque topic à partir de trois éléments :
- Préfixe -
cmndpour les commandes que vous envoyez,statpour les réponses et changements d'état,telepour la télémétrie périodique et la disponibilité. - Topic - un nom d'appareil court et unique, comme
plug1. - Full Topic - un modèle qui les combine, par défaut
%prefix%/%topic%/.
Avec le Full Topic par défaut, envoyer une commande sur cmnd/plug1/POWER fait répondre l'appareil sur stat/plug1/RESULT et stat/plug1/POWER, tandis que la télémétrie part sur tele/plug1/STATE et tele/plug1/SENSOR. L'aide-mémoire des commandes MQTT de Tasmota détaille les commandes les plus utiles.
Ce dont vous avez besoin
- Un appareil déjà sous Tasmota (version 13 ou supérieure recommandée) et connecté à votre Wi-Fi.
- L'adresse IP de l'appareil, pour ouvrir son interface web.
- Un ordinateur avec
mosquitto_pubetmosquitto_sub, ou n'importe quel client MQTT comme le client web ConnectMQ du portail.
Étape 1 : choisir des noms uniques
Le serveur MQTT public gratuit broker.connectmq.com est partagé par tous, et tout ce qui y est publié peut être lu par n'importe qui. Avant de configurer Tasmota, choisissez :
- un identifiant aléatoire, par exemple
t7x2pk, - un client ID comme
tasmota-t7x2pk, - un Topic comme
plug1, - un Full Topic qui garde vos messages sous votre propre préfixe :
connectmq/demo/t7x2pk/%prefix%/%topic%/.
Les topics obtenus comptent six niveaux (connectmq/demo/t7x2pk/cmnd/plug1/POWER), sous la limite de huit niveaux du broker public.
Étape 2 : configurer Tasmota MQTT dans l'interface web
Ouvrez l'adresse IP de l'appareil dans un navigateur et allez dans Configuration puis Configure MQTT. Renseignez :
| Champ | Valeur pour le test public | Valeur pour la production |
|---|---|---|
| Host | broker.connectmq.com |
l'hôte de votre broker |
| Port | 1883 |
1883, ou 8883 avec un build TLS |
| Client | tasmota-t7x2pk |
YOUR_CLIENT_ID |
| User | laisser vide | YOUR_USERNAME |
| Password | laisser vide | YOUR_PASSWORD |
| Topic | plug1 |
plug1 |
| Full Topic | connectmq/demo/t7x2pk/%prefix%/%topic%/ |
home/%prefix%/%topic%/ |
Cliquez sur Save. Tasmota redémarre et se connecte. Si la page Other configuration affiche la case MQTT décochée, cochez-la ; MQTT est activé par défaut dans les builds standard, mais certains templates le désactivent.
Étape 3 : ou configurer Tasmota MQTT depuis la console
La console (menu principal puis Console) est plus rapide et scriptable. Backlog exécute plusieurs commandes d'un coup, et l'appareil ne redémarre qu'une fois à la fin :
Backlog MqttHost broker.connectmq.com; MqttPort 1883; MqttClient tasmota-t7x2pk; MqttUser 0; MqttPassword 0; Topic plug1; FullTopic connectmq/demo/t7x2pk/%prefix%/%topic%/
MqttUser 0 et MqttPassword 0 effacent les valeurs par défaut DVES_USER / DVES_PASS pour que l'appareil se connecte anonymement. Après le redémarrage, le journal de la console doit afficher une ligne comme MQT: Connected, suivie du message LWT Online.
Étape 4 : observer l'appareil
Abonnez-vous à tout ce qui se trouve sous votre préfixe :
mosquitto_sub -h broker.connectmq.com -p 1883 -i watch-t7x2pk \
-t 'connectmq/demo/t7x2pk/#' -v
En quelques secondes, vous verrez quelque chose comme :
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",...}
Le topic LWT est retenu et sert aussi de Last Will à l'appareil ; il passe donc à Offline lorsque la prise perd l'alimentation ou le Wi-Fi. C'est le topic à surveiller pour la disponibilité.
Étape 5 : piloter la prise connectée via MQTT
Envoyez les commandes sur le préfixe cmnd :
# Allumer
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'ON'
# Basculer
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'TOGGLE'
# Interroger l'état actuel (payload vide)
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -n
Chacune produit stat/plug1/RESULT avec {"POWER":"ON"} et stat/plug1/POWER avec ON. Les prises avec mesure d'énergie publient aussi tele/plug1/SENSOR avec la tension, le courant et la puissance, par défaut toutes les 300 secondes. Pour accélérer pendant les tests :
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/TelePeriod' -m '30'
TelePeriod accepte de 10 à 3600 secondes. Restez raisonnable sur le broker public ; la limite y est de 10 messages par seconde et par client, et une prise toutes les 30 secondes en est très loin.
Si une prise doit revenir dans un état connu après une coupure de courant, réglez aussi PowerOnState : PowerOnState 0 la laisse éteinte, 1 l'allume, et la valeur par défaut 3 restaure le dernier état enregistré. Combiné aux topics d'état retenus, cela rend le comportement de la prise prévisible pour tous les tableaux de bord.
Lire les données Tasmota MQTT dans du code
Voici un petit écouteur Python (paho-mqtt 2.x) qui affiche les mesures de puissance et la disponibilité :
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()
Passer du broker public à la production
Le broker public sert aux expériences. N'importe qui pourrait commander votre prise en devinant le topic ; une prise qui alimente un radiateur ou un serveur ne doit donc jamais y rester. Pour l'installation permanente :
- Créez un broker privé dans le portail ConnectMQ et copiez le nom d'utilisateur, le mot de passe et le client ID générés.
- Appliquez-les avec
Backlog MqttHost <host>; MqttUser YOUR_USERNAME; MqttPassword YOUR_PASSWORD; MqttClient YOUR_CLIENT_ID; FullTopic home/%prefix%/%topic%/. - Utilisez TLS si votre build le prend en charge. Les builds ESP32
tasmota32le font ; la plupart des builds ESP8266 non. Le guide Tasmota MQTT TLS détaille la marche à suivre. - Donnez à chaque appareil ses propres identifiants et son propre client ID, car le broker n'accepte qu'une session par client ID.
Un broker MQTT managé vous évite de garder un serveur Mosquitto allumé à la maison et vous permet d'atteindre la prise depuis l'extérieur sans redirection de ports. Pour d'autres briques de la maison connectée, consultez le guide MQTT des prises connectées et la présentation de l'automatisation IoT.
Dépannage de Tasmota MQTT
| Symptôme | Cause probable | Solution |
|---|---|---|
La console affiche MQT: Connect failed ... rc -2 |
Hôte injoignable ou mauvais port | Vérifiez MqttHost, le DNS et le port |
rc 5 (non autorisé) |
Mauvais utilisateur/mot de passe ou client ID | Ressaisissez les identifiants, vérifiez MqttClient |
| Se connecte puis décroche toutes les quelques secondes | Client ID en double | Donnez un identifiant unique à chaque appareil et outil |
| Aucun message sous votre préfixe | Faute de frappe dans le Full Topic | Exécutez FullTopic seul pour afficher la valeur actuelle |
| Commandes ignorées | Envoyées sur stat ou tele au lieu de cmnd |
Les commandes vont toujours sur le préfixe cmnd |
Le projet Tasmota documente chaque commande et chaque réglage sur son site officiel, tasmota.github.io.
Pilotez vos appareils Tasmota avec ConnectMQ
Créez un broker Serverless gratuit sur app.connectmq.com sans carte bancaire, collez les identifiants dans la page Configure MQTT, et utilisez le client intégré au navigateur et l'explorateur de topics en direct du portail pour commander vos prises. ConnectMQ prend en charge MQTT 3.1.1 et 5.0 ; Tasmota se connecte donc sans réglage particulier.
Questions fréquentes
Quelle est la différence entre Topic et Full Topic dans Tasmota ?
Le Topic est le nom court de l'appareil, comme plug1. Le Full Topic est le modèle qui construit le topic complet à partir du préfixe et du Topic, par exemple home/%prefix%/%topic%/.
Pourquoi Tasmota redémarre-t-il après la modification des réglages MQTT ?
Tasmota applique les changements d'hôte, de port, d'identifiants et de topics MQTT en redémarrant. Backlog regroupe plusieurs changements en un seul redémarrage.
Comment interroger l'état d'un appareil Tasmota sans le modifier ?
Publiez un payload vide sur le topic de commande, par exemple cmnd/plug1/POWER. L'appareil répond sur stat/plug1/RESULT avec son état actuel.
Puis-je piloter plusieurs appareils Tasmota avec une seule commande ?
Oui. Chaque appareil écoute aussi un topic de groupe, tasmotas par défaut ; un message sur cmnd/tasmotas/POWER les atteint donc tous. Modifiez-le avec GroupTopic si vous partagez un broker.



