Automatisation IoT

Aide-mémoire des commandes MQTT Tasmota : les topics cmnd, stat et tele expliqués

Une référence pratique des topics cmnd, stat et tele de Tasmota et des commandes que vous utiliserez vraiment, avec des exemples prêts à envoyer depuis n'importe quel client MQTT ou le client web ConnectMQ.

Fiche de référence listant les commandes MQTT Tasmota à côté d'une prise connectée et d'un terminal d'ordinateur portable
Essayez-le sur votre propre broker MQTTObtenez un broker MQTT privé et managé avec l’offre Free et partez d’exemples de code prêts à l’emploi.
Essayer gratuitement Exemples de code Aucune carte bancaire requise

Cet aide-mémoire des commandes MQTT Tasmota rassemble les topics et commandes que vous utiliserez au quotidien pour commander, interroger et régler des appareils Tasmota depuis n'importe quel client MQTT. Vous verrez comment s'articulent les préfixes cmnd, stat et tele, quels payloads attend chaque commande et comment les envoyer depuis un terminal, un script ou le client web ConnectMQ. C'est la base de toute maison connectée équipée en Tasmota ; Jeedom et Domoticz, comme Home Assistant, savent aussi communiquer en MQTT avec ces appareils.

Comment sont construits les topics MQTT de Tasmota

Chaque topic Tasmota suit le modèle Full Topic, qui vaut par défaut %prefix%/%topic%/. Le nom de la commande est ajouté à la fin. Avec un appareil dont le Topic est plug1 :

Préfixe Sens Exemple de topic Rôle
cmnd De vous vers l'appareil cmnd/plug1/POWER Envoyer une commande
stat De l'appareil vers vous stat/plug1/RESULT Réponse JSON à une commande
stat De l'appareil vers vous stat/plug1/POWER État d'alimentation brut après chaque changement
tele De l'appareil vers vous tele/plug1/STATE État périodique (uptime, Wi-Fi, alimentation)
tele De l'appareil vers vous tele/plug1/SENSOR Mesures périodiques des capteurs et de l'énergie
tele De l'appareil vers vous tele/plug1/LWT Online / Offline, Last Will retenu

Deux règles évitent la plupart des erreurs. D'abord, les commandes vont toujours sur cmnd ; publier sur stat ne fait rien. Ensuite, un payload vide sur un topic de commande interroge la valeur actuelle sans la modifier.

Si votre Full Topic ajoute un préfixe, par exemple home/%prefix%/%topic%/, chaque topic de cet aide-mémoire reçoit ce préfixe : home/cmnd/plug1/POWER. Si vous n'avez pas encore configuré MQTT sur l'appareil, commencez par le guide de configuration Tasmota MQTT.

Envoyer des commandes MQTT Tasmota

Vous pouvez envoyer chaque commande de cet aide-mémoire de trois façons.

Depuis un terminal, avec les clients mosquitto. Sur le serveur MQTT public gratuit, réservé aux tests et aux prototypes, utilisez un préfixe unique dans votre Full Topic, comme connectmq/demo/k4w9ra/%prefix%/%topic%/ :

mosquitto_pub -h broker.connectmq.com -p 1883 -i cli-k4w9ra \
  -t 'connectmq/demo/k4w9ra/cmnd/plug1/POWER' -m 'ON'

Depuis le client web ConnectMQ. Dans le portail, ouvrez le client MQTT intégré au navigateur, abonnez-vous à home/stat/plug1/#, puis publiez sur home/cmnd/plug1/POWER avec le payload TOGGLE. L'explorateur de topics en direct affiche la réponse RESULT à côté du topic d'état d'origine.

Depuis du code. N'importe quelle bibliothèque MQTT convient ; voici Python avec paho-mqtt 2.x :

import paho.mqtt.client as mqtt

PREFIX = "connectmq/demo/k4w9ra"

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="py-k4w9ra")
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_start()
info = client.publish(f"{PREFIX}/cmnd/plug1/POWER", "TOGGLE", qos=1)
info.wait_for_publish()
client.loop_stop()
client.disconnect()

Commandes d'alimentation et de relais

Commande Payload Effet
POWER ON, OFF, TOGGLE Commute le relais 1
POWER vide Interroge le relais 1
POWER2 ... POWER8 idem Appareils multicanaux, une commande par relais
POWER0 ON, OFF Commute tous les relais à la fois
POWER BLINK, BLINKOFF Démarre ou arrête le clignotement
PowerOnState 0-5 État du relais à la mise sous tension : 0 éteint, 1 allumé, 2 basculé, 3 dernier état enregistré (par défaut)
PulseTime1 0-64900 Minuterie d'extinction automatique : 1-111 par pas de 0,1 s, au-delà de 111 soustraire 100 pour obtenir des secondes
PowerRetain 0 / 1 Publie stat/.../POWER en retained

PulseTime est la manière sûre de créer un interrupteur « fonctionner pendant N minutes ». Par exemple, PulseTime1 400 éteint le relais 300 secondes après son allumage, même si le réseau tombe entre-temps.

PowerRetain 1 est utile pour les tableaux de bord qui démarrent après l'appareil, car le dernier état d'alimentation est délivré immédiatement à l'abonnement. Ne retenez pas les topics de commande : un cmnd/.../POWER ON retenu rallumerait le relais à chaque reconnexion.

Commandes de télémétrie et d'état

Commande Payload Effet
TelePeriod 10-3600 Secondes entre les messages tele/STATE et tele/SENSOR (300 par défaut)
TelePeriod vide Interroge l'intervalle, ou force un message de télémétrie immédiat
Status 0 Toutes les informations d'état en une seule réponse
Status 2 Version et build du firmware
Status 5 Réseau : IP, passerelle, MAC
Status 6 Hôte MQTT, port, client et utilisateur
Status 8 Mesures actuelles des capteurs
Status 11 État actuel, comme tele/STATE
SensorRetain 0 / 1 Publie tele/SENSOR en retained

Les réponses à Status arrivent sur stat/<topic>/STATUS, STATUS2 et ainsi de suite, selon le numéro. Des valeurs courtes de TelePeriod sont pratiques pendant les tests, mais quelques centaines d'appareils qui remontent toutes les 10 secondes, cela finit par peser. Choisissez l'intervalle le plus lent qui satisfait encore votre tableau de bord.

Commandes d'éclairage et de variateur

Commande Payload Effet
Dimmer 0-100 Luminosité en pourcentage
Color FF8800 ou 255,136,0 Couleur RVB
CT 153-500 Température de couleur en mireds (du froid au chaud)
HSBColor 30,100,80 Teinte, saturation, luminosité
Fade 0 / 1 Active ou désactive les transitions douces
Speed 1-40 Vitesse de transition

Commandes de configuration

Commande Exemple de payload Remarques
Topic plug1 Topic de l'appareil ; provoque un redémarrage
FullTopic home/%prefix%/%topic%/ Modèle de topic ; provoque un redémarrage
GroupTopic1 kitchen Topic supplémentaire sur lequel l'appareil écoute les commandes
MqttHost / MqttPort broker.connectmq.com / 8883 Adresse du broker
MqttUser / MqttPassword YOUR_USERNAME Utilisez 0 pour effacer
MqttClient YOUR_CLIENT_ID Doit être unique par broker
SetOption103 1 TLS sur les builds qui l'incluent
SetOption19 0 / 1 0 pour l'intégration Tasmota de Home Assistant, 1 pour l'ancienne découverte MQTT
Timezone 99 ou +02:00 99 applique les règles d'heure d'été

Les topics de groupe facilitent le pilotage en masse : chaque appareil avec GroupTopic1 kitchen réagit à cmnd/kitchen/POWER OFF. Le topic de groupe par défaut intégré est tasmotas. Si vos appareils partagent un broker avec d'autres personnes, remplacez-le par quelque chose d'unique, sinon un cmnd/tasmotas/... égaré pourrait atteindre vos appareils.

Les connexions chiffrées ont leurs propres exigences, détaillées dans le guide Tasmota MQTT TLS.

Commandes de maintenance

Commande Payload Effet
Restart 1 Redémarre
Upgrade 1 Lance une mise à jour OTA depuis OtaUrl
OtaUrl URL Source du firmware pour les mises à jour
WebServer 0, 1, 2 Désactivé, mode utilisateur, mode administrateur
WebPassword texte Protège l'interface web
Reset 1 Réinitialisation d'usine, à utiliser avec prudence

Exécuter plusieurs commandes avec Backlog

Backlog exécute une liste de commandes séparées par des points-virgules, que vous pouvez aussi envoyer via MQTT :

mosquitto_pub -h broker.connectmq.com -p 1883 -i cli-k4w9ra \
  -t 'connectmq/demo/k4w9ra/cmnd/plug1/Backlog' \
  -m 'Power ON; Delay 50; Power OFF'

Delay utilise des unités de 0,1 seconde ; Delay 50 attend donc cinq secondes. Backlog est la façon la plus propre de pousser une configuration complète vers un parc d'appareils sans passer par l'interface web de chacun.

Les règles : des commandes déclenchées sur l'appareil

Les règles permettent à un appareil de réagir sans aucun serveur. Un exemple classique publie un message personnalisé lorsque le relais change d'état :

Rule1 ON Power1#State DO Publish home/events/plug1 {"power":"%value%"} ENDON
Rule1 1

Publish depuis une règle envoie vers le topic de votre choix, ce qui est pratique lorsqu'un autre système attend un format précis.

Liste de contrôle rapide

  1. Envoyez les commandes sur cmnd/<topic>/<Command> ; lisez les réponses sur stat/<topic>/RESULT.
  2. Un payload vide signifie « interroger », pas « éteindre ».
  3. Surveillez tele/<topic>/LWT pour la disponibilité.
  4. Retenez les topics d'état si les tableaux de bord en ont besoin ; ne retenez jamais les commandes.
  5. Utilisez des client IDs, topics et topics de groupe uniques sur les brokers partagés.

Faites tourner vos appareils Tasmota sur ConnectMQ

Tester sur le serveur MQTT public gratuit est très bien, mais un broker privé tient les inconnus à l'écart de vos relais. Un broker MQTT managé de ConnectMQ donne à chaque appareil ses propres identifiants, un explorateur de topics en direct pour vérifier les réponses et TLS sur le port 8883 pour les builds ESP32. Créez un broker Serverless (Free) sur app.connectmq.com sans carte bancaire, et consultez le guide de l'automatisation IoT pour des idées de projets.

Questions fréquentes

Quelle est la différence entre cmnd, stat et tele dans Tasmota ?

cmnd est l'endroit où vous envoyez les commandes, stat transporte les réponses et les changements d'état, et tele transporte la télémétrie périodique et le message de disponibilité Online/Offline.

Comment vérifier l'état d'un appareil Tasmota sans le commuter ?

Publiez un payload vide sur le topic de commande, par exemple cmnd/plug1/POWER. L'appareil répond sur stat/plug1/RESULT.

Comment envoyer plusieurs commandes Tasmota dans un seul message MQTT ?

Publiez sur cmnd/<topic>/Backlog avec des commandes séparées par des points-virgules, par exemple Power ON; Delay 50; Power OFF.

Pourquoi mes commandes Tasmota sont-elles ignorées ?

Le plus souvent, le topic est erroné : les commandes doivent utiliser le préfixe cmnd et correspondre exactement au Full Topic de l'appareil, y compris un éventuel préfixe supplémentaire et la casse des lettres.

Articles liés

Guide d'installation de Zigbee2MQTT : du coordinateur au tableau de bord

Installez Zigbee2MQTT avec Docker, configurez le coordinateur et la connexion MQTT, appairez et renommez les appareils, pilotez-les via MQTT et affichez leurs états sur un tableau de bord, en testant d'abord sur le serveur MQTT public gratuit.

8 min de lecture

Tous les articles →

Votre broker MQTT privé, à quelques clics

Créez un compte, récupérez les identifiants de votre broker et connectez votre premier appareil — aucun serveur à installer, mettre à jour ou dimensionner.