Automatización IoT

Chuleta de comandos MQTT de Tasmota: los topics cmnd, stat y tele explicados

Una referencia práctica de los topics cmnd, stat y tele de Tasmota y de los comandos que realmente usarás, con ejemplos listos para enviar desde cualquier cliente MQTT o el cliente web de ConnectMQ.

Tarjeta de referencia con comandos MQTT de Tasmota junto a un enchufe inteligente y un terminal en un portátil
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

Esta chuleta de comandos MQTT de Tasmota reúne los topics y comandos que usarás a diario para conmutar, consultar y ajustar dispositivos Tasmota desde cualquier cliente MQTT. Aprenderás cómo encajan los prefijos cmnd, stat y tele, qué payloads espera cada comando y cómo enviarlos desde un terminal, un script o el cliente web de ConnectMQ.

Cómo se construyen los topics MQTT de Tasmota

Cada topic de Tasmota sigue la plantilla Full Topic, que por defecto es %prefix%/%topic%/. El nombre del comando se añade al final. Con un dispositivo cuyo Topic es plug1:

Prefijo Dirección Topic de ejemplo Finalidad
cmnd De ti al dispositivo cmnd/plug1/POWER Enviar un comando
stat Del dispositivo a ti stat/plug1/RESULT Respuesta JSON a un comando
stat Del dispositivo a ti stat/plug1/POWER Estado de encendido simple tras cualquier cambio
tele Del dispositivo a ti tele/plug1/STATE Estado periódico (tiempo de actividad, Wi-Fi, encendido)
tele Del dispositivo a ti tele/plug1/SENSOR Lecturas periódicas de sensores y energía
tele Del dispositivo a ti tele/plug1/LWT Online / Offline, Last Will retenido

Dos reglas cubren la mayoría de los errores. Primero, los comandos siempre van a cmnd; publicar en stat no hace nada. Segundo, un payload vacío en un topic de comando consulta el valor actual sin cambiarlo.

Si tu Full Topic añade un prefijo, por ejemplo home/%prefix%/%topic%/, todos los topics de esta chuleta llevan ese prefijo: home/cmnd/plug1/POWER. Si aún no has configurado MQTT en el dispositivo, empieza por la guía para configurar Tasmota MQTT.

Envío de comandos MQTT a Tasmota

Puedes enviar cada comando de esta chuleta de tres maneras.

Desde un terminal con los clientes de mosquitto. En el servidor MQTT público gratuito (solo para pruebas, nunca para datos de producción), usa un prefijo único en tu Full Topic, como 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'

Desde el cliente web de ConnectMQ. En el portal, abre el cliente MQTT en el navegador, suscríbete a home/stat/plug1/# y publica en home/cmnd/plug1/POWER con el payload TOGGLE. El explorador de topics en directo muestra la respuesta RESULT junto al topic de estado original.

Desde código. Sirve cualquier biblioteca MQTT; este es un ejemplo en Python con 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()

Comandos de encendido y relés

Comando Payload Efecto
POWER ON, OFF, TOGGLE Conmuta el relé 1
POWER vacío Consulta el relé 1
POWER2 ... POWER8 igual Dispositivos multicanal, uno por relé
POWER0 ON, OFF Conmuta todos los relés a la vez
POWER BLINK, BLINKOFF Inicia o detiene el parpadeo
PowerOnState 0-5 Estado del relé tras el arranque: 0 apagado, 1 encendido, 2 conmutar, 3 último guardado (por defecto)
PulseTime1 0-64900 Temporizador de apagado automático: de 1 a 111 en pasos de 0,1 s; por encima de 111, resta 100 para obtener segundos
PowerRetain 0 / 1 Publica stat/.../POWER como retenido

PulseTime es la forma segura de construir un interruptor de "funcionar durante N minutos". Por ejemplo, PulseTime1 400 apaga el relé 300 segundos después de encenderse, aunque la red se caiga entretanto.

PowerRetain 1 es útil para los paneles que arrancan después del dispositivo, porque el último estado de encendido se entrega inmediatamente al suscribirse. No retengas los topics de comando; un cmnd/.../POWER ON retenido volvería a encender el relé tras cada reconexión.

Comandos de telemetría y estado

Comando Payload Efecto
TelePeriod 10-3600 Segundos entre mensajes tele/STATE y tele/SENSOR (por defecto 300)
TelePeriod vacío Consulta el intervalo o fuerza un mensaje de telemetría inmediato
Status 0 Toda la información de estado en una sola respuesta
Status 2 Versión y compilación del firmware
Status 5 Red: IP, gateway, MAC
Status 6 Host, puerto, cliente y usuario MQTT
Status 8 Lecturas actuales de los sensores
Status 11 Estado actual, como tele/STATE
SensorRetain 0 / 1 Publica tele/SENSOR como retenido

Las respuestas a Status llegan a stat/<topic>/STATUS, STATUS2, etc., según el número. Los valores cortos de TelePeriod son prácticos durante las pruebas, pero unos cientos de dispositivos informando cada 10 segundos suman mucho. Elige el intervalo más lento que siga sirviendo a tu panel.

Comandos de luz y regulación

Comando Payload Efecto
Dimmer 0-100 Brillo en porcentaje
Color FF8800 o 255,136,0 Color RGB
CT 153-500 Temperatura de color en mireds (de fría a cálida)
HSBColor 30,100,80 Tono, saturación, brillo
Fade 0 / 1 Activa o desactiva las transiciones suaves
Speed 1-40 Velocidad del fundido

Comandos de configuración

Comando Payload de ejemplo Notas
Topic plug1 Topic del dispositivo; provoca un reinicio
FullTopic home/%prefix%/%topic%/ Plantilla de topic; provoca un reinicio
GroupTopic1 kitchen Topic adicional en el que el dispositivo escucha comandos
MqttHost / MqttPort broker.connectmq.com / 8883 Dirección del broker
MqttUser / MqttPassword YOUR_USERNAME Usa 0 para borrarlos
MqttClient YOUR_CLIENT_ID Debe ser único en cada broker
SetOption103 1 TLS en las compilaciones que lo incluyen
SetOption19 0 / 1 0 para la integración Tasmota de Home Assistant, 1 para el descubrimiento MQTT heredado
Timezone 99 o +02:00 99 usa las reglas del horario de verano

Los topics de grupo facilitan el control en bloque: cada dispositivo con GroupTopic1 kitchen reacciona a cmnd/kitchen/POWER OFF. El topic de grupo integrado por defecto es tasmotas. Si tus dispositivos comparten broker con otras personas, cámbialo por algo único; de lo contrario, un cmnd/tasmotas/... perdido podría llegar a tus dispositivos.

Las conexiones cifradas tienen sus propios requisitos, que se tratan en la guía de Tasmota MQTT con TLS.

Comandos de mantenimiento

Comando Payload Efecto
Restart 1 Reinicia
Upgrade 1 Inicia una actualización OTA desde OtaUrl
OtaUrl URL Origen del firmware para las actualizaciones
WebServer 0, 1, 2 Desactivado, modo usuario, modo administrador
WebPassword texto Protege la interfaz web
Reset 1 Restablecimiento de fábrica, úsalo con cuidado

Ejecutar varios comandos con Backlog

Backlog ejecuta una lista de comandos separados por punto y coma, que también puedes enviar por 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 usa unidades de 0,1 segundos, así que Delay 50 espera cinco segundos. Backlog es la forma más limpia de enviar una configuración completa a una flota de dispositivos sin visitar la interfaz web de cada uno.

Reglas: comandos que se ejecutan en el propio dispositivo

Las reglas permiten que un dispositivo reaccione sin ningún servidor. Un ejemplo clásico publica un mensaje personalizado cuando cambia el relé:

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

Publish desde una regla envía a cualquier topic que quieras, algo práctico cuando otro sistema espera un formato concreto.

Lista de comprobación rápida

  1. Envía los comandos a cmnd/<topic>/<Command>; lee las respuestas en stat/<topic>/RESULT.
  2. Un payload vacío significa "consultar", no "apagar".
  3. Vigila tele/<topic>/LWT para conocer la disponibilidad.
  4. Retén los topics de estado si los paneles lo necesitan; nunca retengas comandos.
  5. Usa client ID, topics y topics de grupo únicos en brokers compartidos.

Ejecuta tus dispositivos Tasmota en ConnectMQ

Probar en el broker público está bien, pero un broker privado mantiene a los desconocidos lejos de tus relés. Un broker MQTT gestionado de ConnectMQ da a cada dispositivo sus propias credenciales, un explorador de topics en directo para comprobar las respuestas y TLS en el puerto 8883 para las compilaciones ESP32. Crea un broker Serverless gratuito en app.connectmq.com sin tarjeta de crédito, y consulta la guía de automatización IoT para encontrar ideas de proyectos.

Preguntas frecuentes

¿Qué diferencia hay entre cmnd, stat y tele en Tasmota?

cmnd es donde envías los comandos, stat transporta las respuestas y los cambios de estado, y tele transporta la telemetría periódica y el mensaje de disponibilidad Online/Offline.

¿Cómo compruebo el estado de un dispositivo Tasmota sin conmutarlo?

Publica un payload vacío en el topic de comando, por ejemplo cmnd/plug1/POWER. El dispositivo responde en stat/plug1/RESULT.

¿Cómo envío varios comandos de Tasmota en un solo mensaje MQTT?

Publica en cmnd/<topic>/Backlog con los comandos separados por punto y coma, por ejemplo Power ON; Delay 50; Power OFF.

¿Por qué se ignoran mis comandos de Tasmota?

Normalmente el topic es incorrecto: los comandos deben usar el prefijo cmnd y coincidir exactamente con el Full Topic del dispositivo, incluido cualquier prefijo adicional y las mayúsculas y minúsculas.

Artículos relacionados

Guía para configurar Zigbee2MQTT: del coordinador al panel

Instala Zigbee2MQTT con Docker, configura el coordinador y la conexión MQTT, empareja y renombra dispositivos, contrólalos por MQTT y consulta sus estados en un panel, probando primero en un servidor MQTT público gratuito.

8 min de lectura

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.