Tutoriels

Configurer MQTT sur Tasmota : topics, commandes et télémétrie

Configurez MQTT sur Tasmota : broker, FullTopic et Topic, structure cmnd/stat/tele, commandes POWER, télémétrie TelePeriod, LWT et tests avec le client en ligne.

Mis à jour · 9 min de lecture

Configurer MQTT sur Tasmota : topics, commandes et télémétrie

Tasmota transforme des prises connectées, relais et capteurs bon marché à base d'ESP8266 et d'ESP32 en appareils MQTT bien élevés. Indiquez-lui un broker, donnez-lui un nom de topic : il accepte alors les commandes sur cmnd/<topic>/…, publie les résultats sur stat/<topic>/… et envoie une télémétrie périodique sur tele/<topic>/…. Une fois ces trois préfixes compris, vous pouvez piloter n'importe quel appareil Tasmota depuis n'importe quel client MQTT.

Ce guide configure la connexion au broker, explique Topic et FullTopic, passe en revue les commandes et la télémétrie du quotidien, et teste tout depuis le navigateur avant de raccorder l'appareil à Home Assistant ou Node-RED.

Configurer le broker

Ouvrez l'interface web de l'appareil et allez dans Configuration → Configure MQTT :

ChampValeurRemarques
Hostbroker.connectmq.comNom d'hôte ou IP de votre broker
Port18838883 uniquement sur les builds avec TLS (voir plus bas)
Clienttasmota-plug1Doit être unique par appareil ; la valeur par défaut DVES_%06X utilise l'ID de la puce
User / Passwordles identifiants de votre brokerÀ laisser vides uniquement sur un broker sans authentification
Topictestmqtt-plug1Le nom court de l'appareil
Full Topictestmqtt/tasmota/%prefix%/%topic%/Le modèle de tous les topics

L'enregistrement redémarre l'appareil. Vous pouvez faire la même chose depuis la Console en une seule ligne avec Backlog, très pratique pour configurer de nombreux appareils :

Tasmota console
Backlog MqttHost broker.connectmq.com; MqttPort 1883; MqttUser username; MqttPassword password; MqttClient tasmota-plug1; Topic testmqtt-plug1; FullTopic testmqtt/tasmota/%prefix%/%topic%/

Vérifiez que MQTT est bien activé (Configuration → Configure Other → MQTT enable, ou SetOption3 1). Après le redémarrage, la console devrait afficher :

Console output
MQT: Attempting connection...
MQT: Connected

Si vous voyez à la place MQT: Connect failed to broker.connectmq.com:1883, rc -2. Retry in 10 sec, l'appareil n'a pas pu ouvrir de connexion TCP ; rc 4 ou rc 5 signifie que les identifiants ont été refusés. Le guide Tasmota ne se connecte pas couvre tous les cas.

Topic et FullTopic

Tasmota construit chaque topic MQTT à partir du modèle FullTopic. Trois jetons sont remplacés à l'exécution :

  • %prefix% devient cmnd, stat ou tele.
  • %topic% devient le Topic de l'appareil (testmqtt-plug1).
  • %hostname% et %id% sont aussi disponibles si vous préférez des noms dérivés de la puce.

Avec le FullTopic par défaut %prefix%/%topic%/, une prise nommée kitchen utilise cmnd/kitchen/POWER. Sur un broker de test partagé, c'est bien trop générique : votre cmnd/kitchen/POWER entrerait en collision avec celui de n'importe qui. Le FullTopic ci-dessus préfixe tout par testmqtt/tasmota/, ce qui vous donne un espace de noms à vous et simplifie les abonnements :

UsageTopic avec notre FullTopic
Envoyer une commandetestmqtt/tasmota/cmnd/testmqtt-plug1/POWER
Résultat de la commandetestmqtt/tasmota/stat/testmqtt-plug1/RESULT
État d'alimentation actueltestmqtt/tasmota/stat/testmqtt-plug1/POWER
État périodiquetestmqtt/tasmota/tele/testmqtt-plug1/STATE
Mesures des capteurstestmqtt/tasmota/tele/testmqtt-plug1/SENSOR
Online / Offline (LWT)testmqtt/tasmota/tele/testmqtt-plug1/LWT

Pour une installation plus importante, choisissez un schéma par lieu ou par fonction et tenez-vous-y ; la conception de topics pour la maison connectée propose des modèles qui passent à l'échelle.

Commandes : cmnd et stat

Toute commande de console peut être envoyée en MQTT. Le nom de la commande est le dernier niveau du topic et l'argument est le payload :

Control a relay with mosquitto_pub
# Allumer
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -m ON

# Basculer
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -m TOGGLE

# Interroger l'état : un payload vide demande sans rien changer
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -n

L'appareil répond sur deux topics : stat/testmqtt-plug1/RESULT avec un JSON comme {"POWER":"ON"}, et stat/testmqtt-plug1/POWER avec la valeur brute ON. Les appareils à plusieurs relais utilisent POWER1, POWER2, etc.

D'autres commandes que vous utiliserez souvent :

CommandePayloadEffet
Status0État complet, renvoyé sous forme de plusieurs messages stat/.../STATUS*
Status6Configuration MQTT seule, utile pour vérifier FullTopic et client ID
TelePeriod60Télémétrie toutes les 60 secondes (10–3600)
Dimmer0–100Luminosité des lampes variables
Restart1Redémarre l'appareil
Backlogcmd1 arg; cmd2 argExécute plusieurs commandes à la suite

Vous pouvez aussi envoyer Backlog en MQTT, ce qui ramène la reconfiguration à distance de nombreux appareils à un script d'une ligne. Pour d'autres usages en terminal, voir exemples mosquitto_pub et mosquitto_sub.

Télémétrie : tele

Toutes les TelePeriod secondes (300 par défaut), Tasmota publie deux messages :

tele/testmqtt-plug1/STATE
{"Time":"2026-10-17T10:15:00","Uptime":"0T02:14:31","Heap":25,"POWER":"ON","Wifi":{"SSId":"home","RSSI":72,"Signal":-64}}
tele/testmqtt-plug1/SENSOR (plug with energy monitoring)
{"Time":"2026-10-17T10:15:00","ENERGY":{"Total":3.214,"Yesterday":0.412,"Today":0.183,"Power":46,"Voltage":231,"Current":0.214}}

Les champs exacts dépendent du template de l'appareil et des capteurs connectés. tele/.../LWT est particulier : Tasmota publie Online en retained après la connexion et enregistre Offline comme Last Will, si bien que les abonnés savent toujours si l'appareil est joignable.

Si vous avez besoin de valeurs plus rapidement que ne le permet TelePeriod, utilisez une règle pour publier à chaque changement. Les règles s'exécutent sur l'appareil lui-même :

Publish power changes immediately
Rule1 ON Power1#State DO Publish testmqtt/tasmota/events/testmqtt-plug1 {"power":%value%} ENDON
Rule1 1

Tout tester depuis le navigateur

  1. Ouvrez le client MQTT en ligne et connectez-vous à broker.connectmq.com sur le port 8084 avec le chemin /mqtt.
  2. Abonnez-vous à testmqtt/tasmota/#. Vous devriez recevoir immédiatement le retained tele/testmqtt-plug1/LWT = Online.
  3. Publiez TOGGLE sur testmqtt/tasmota/cmnd/testmqtt-plug1/POWER. Le relais claque et stat/.../RESULT ainsi que stat/.../POWER arrivent en une fraction de seconde.
  4. Publiez 10 sur testmqtt/tasmota/cmnd/testmqtt-plug1/TelePeriod et regardez tele/.../STATE arriver toutes les dix secondes. Remettez ensuite une valeur raisonnable.
  5. Débranchez l'appareil. Après le délai du keep alive, le broker publie LWT = Offline.

Observer votre appareil Tasmota dans le client en ligne

Quand un abonnement n'affiche rien, comparez le filtre à un topic réel avec le topic matcher. Un segment final manquant ou un mauvais ordre des préfixes dans le FullTopic est le coupable habituel.

Messages retained et état d'alimentation

Par défaut, Tasmota ne publie pas ses messages stat en retained. Si un dashboard a besoin de l'état actuel dès l'abonnement, interrogez-le (payload vide sur cmnd/.../POWER) ou activez PowerRetain 1 pour que stat/.../POWER soit retained.

Ne publiez jamais de commandes avec le flag retain. Un ON retained sur cmnd/.../POWER est redélivré à chaque reconnexion de l'appareil, et le relais s'allume tout seul après chaque coupure de courant ou de Wi-Fi. Si cela arrive, effacez-le en publiant un message retained vide sur le même topic :

Clear a retained command
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -r -n

Pour en savoir plus sur la rétention, voir les messages retenus MQTT.

TLS et Home Assistant

TLS dépend du build du firmware. De nombreux builds ESP32 incluent la prise en charge de MQTT TLS, tandis que la plupart des builds ESP8266 nécessitent une compilation personnalisée avec USE_MQTT_TLS. Sur un build compatible TLS, réglez MqttPort 8883 et SetOption103 1, puis consultez la documentation TLS de Tasmota pour savoir comment votre build valide le certificat du broker. Sur les builds sans TLS, restez sur le port 1883 au sein d'un réseau local de confiance.

Home Assistant utilise l'intégration Tasmota, qui lit les messages de discovery propres à Tasmota (activés par défaut avec SetOption19 0). Pointez l'intégration MQTT de Home Assistant vers le même broker et les appareils apparaissent automatiquement. Le côté Home Assistant est traité dans Home Assistant MQTT.

Le modèle MQTT de Tasmota est simple une fois les préfixes assimilés : les commandes entrent par cmnd, les réponses sortent par stat, et la télémétrie arrive par tele à chaque TelePeriod. Donnez à chaque appareil un client ID unique et un FullTopic qui garde vos appareils dans leur propre espace de noms, vérifiez commandes, télémétrie et LWT depuis le client en ligne, et chaque automatisation construite par-dessus se comportera de façon prévisible.

Questions fréquentes

Quelle est la différence entre Topic et FullTopic dans Tasmota ?

Topic est le nom court de l'appareil, par exemple kitchen-plug. FullTopic est le modèle qui construit chaque topic MQTT à partir de lui, par défaut %prefix%/%topic%/, où %prefix% devient cmnd, stat ou tele. Modifiez Topic pour renommer un appareil ; modifiez FullTopic pour placer tous les appareils sous un espace de noms commun.

À quelle fréquence Tasmota envoie-t-il sa télémétrie ?

Toutes les TelePeriod secondes, 300 par défaut. Réglez-la avec la commande TelePeriod, par exemple TelePeriod 60. Les valeurs des capteurs vont sur tele/<topic>/SENSOR et l'état de l'appareil sur tele/<topic>/STATE.

Pourquoi mon relais Tasmota s'allume-t-il tout seul après un redémarrage ?

Généralement à cause d'un message retained sur un topic cmnd : le broker le redélivre à chaque reconnexion de l'appareil. Effacez-le en publiant un message retained vide sur ce topic, et ne publiez jamais de commandes avec le flag retain.