Tutoriales

Configurar MQTT en Tasmota: topics, comandos y telemetría

Configura MQTT en Tasmota: broker, FullTopic y Topic, la estructura cmnd/stat/tele, comandos POWER, telemetría con TelePeriod, LWT y pruebas con el cliente online.

Actualizado · 9 min de lectura

Configurar MQTT en Tasmota: topics, comandos y telemetría

Tasmota convierte enchufes inteligentes, relés y sensores baratos con ESP8266 y ESP32 en dispositivos MQTT bien educados. Apúntalo a un broker, dale un nombre de topic y aceptará comandos en cmnd/<topic>/…, informará resultados en stat/<topic>/… y enviará telemetría periódica en tele/<topic>/…. Una vez que entiendes esos tres prefijos, puedes controlar cualquier dispositivo Tasmota desde cualquier cliente MQTT.

Esta guía configura la conexión con el broker, explica Topic y FullTopic, repasa los comandos y la telemetría que usarás a diario y lo prueba todo desde el navegador antes de conectarlo a Home Assistant o Node-RED.

Configurar el broker

Abre la interfaz web del dispositivo y ve a Configuration → Configure MQTT:

CampoValorNotas
Hostbroker.connectmq.comHostname o IP de tu broker
Port18838883 solo en builds con TLS (ver más abajo)
Clienttasmota-plug1Debe ser único por dispositivo; el valor por defecto DVES_%06X usa el ID del chip
User / Passwordlas credenciales de tu brokerDéjalos vacíos solo en brokers sin autenticación
Topictestmqtt-plug1El nombre corto del dispositivo
Full Topictestmqtt/tasmota/%prefix%/%topic%/La plantilla de todos los topics

Al guardar, el dispositivo se reinicia. Puedes hacer lo mismo desde la Console en una sola línea con Backlog, algo muy práctico cuando configuras muchos dispositivos:

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

Asegúrate de que MQTT está activado (Configuration → Configure Other → MQTT enable, o SetOption3 1). Tras el reinicio la consola debería mostrar:

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

Si en su lugar ves MQT: Connect failed to broker.connectmq.com:1883, rc -2. Retry in 10 sec, el dispositivo no pudo abrir una conexión TCP; rc 4 o rc 5 significa que se rechazaron las credenciales. La guía de Tasmota que no conecta cubre todos los casos.

Topic y FullTopic

Tasmota construye cada topic MQTT a partir de la plantilla FullTopic. Se sustituyen tres tokens en tiempo de ejecución:

  • %prefix% se convierte en cmnd, stat o tele.
  • %topic% se convierte en el Topic del dispositivo (testmqtt-plug1).
  • %hostname% e %id% también están disponibles si prefieres nombres derivados del chip.

Con el FullTopic por defecto %prefix%/%topic%/, un enchufe llamado kitchen usa cmnd/kitchen/POWER. En un broker de pruebas compartido eso es demasiado genérico: tu cmnd/kitchen/POWER chocaría con el de cualquier otra persona. El FullTopic de arriba antepone testmqtt/tasmota/ a todo, lo que te da un espacio de nombres propio y facilita las suscripciones:

PropósitoTopic con nuestro FullTopic
Enviar un comandotestmqtt/tasmota/cmnd/testmqtt-plug1/POWER
Resultado del comandotestmqtt/tasmota/stat/testmqtt-plug1/RESULT
Estado actual de encendidotestmqtt/tasmota/stat/testmqtt-plug1/POWER
Estado periódicotestmqtt/tasmota/tele/testmqtt-plug1/STATE
Lecturas de sensorestestmqtt/tasmota/tele/testmqtt-plug1/SENSOR
Online / Offline (LWT)testmqtt/tasmota/tele/testmqtt-plug1/LWT

Para una instalación grande, elige un esquema por ubicación o función y mantenlo; el diseño de topics para hogar inteligente tiene patrones que escalan.

Comandos: cmnd y stat

Cualquier comando de consola puede enviarse por MQTT. El nombre del comando es el último nivel del topic y el argumento es el payload:

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

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

# Consultar el estado: un payload vacío pregunta sin cambiar nada
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -n

El dispositivo responde en dos topics: stat/testmqtt-plug1/RESULT con JSON como {"POWER":"ON"}, y stat/testmqtt-plug1/POWER con el valor simple ON. Los dispositivos con varios relés usan POWER1, POWER2, etc.

Otros comandos que usarás a menudo:

ComandoPayloadEfecto
Status0Volcado completo de estado, respondido con varios mensajes stat/.../STATUS*
Status6Solo la configuración MQTT, útil para comprobar FullTopic y client ID
TelePeriod60Envía telemetría cada 60 segundos (10–3600)
Dimmer0–100Brillo en luces regulables
Restart1Reinicia el dispositivo
Backlogcmd1 arg; cmd2 argEjecuta varios comandos en secuencia

También puedes enviar Backlog por MQTT, lo que convierte la reconfiguración remota de muchos dispositivos en un script de una línea. Para más patrones de terminal, consulta ejemplos de mosquitto_pub y mosquitto_sub.

Telemetría: tele

Cada TelePeriod segundos (300 por defecto) Tasmota publica dos mensajes:

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}}

Los campos exactos dependen de la plantilla del dispositivo y de los sensores conectados. tele/.../LWT es especial: Tasmota publica Online retained tras conectarse y registra Offline como su Last Will, de modo que los suscriptores siempre saben si el dispositivo está accesible.

Si necesitas valores más rápido de lo que permite TelePeriod, usa una regla para publicar al cambiar. Las reglas se ejecutan en el propio dispositivo:

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

Pruébalo todo desde el navegador

  1. Abre el cliente MQTT online y conéctate a broker.connectmq.com en el puerto 8084 con la ruta /mqtt.
  2. Suscríbete a testmqtt/tasmota/#. Deberías recibir de inmediato el retained tele/testmqtt-plug1/LWT = Online.
  3. Publica TOGGLE en testmqtt/tasmota/cmnd/testmqtt-plug1/POWER. El relé hace clic y stat/.../RESULT y stat/.../POWER llegan en una fracción de segundo.
  4. Publica 10 en testmqtt/tasmota/cmnd/testmqtt-plug1/TelePeriod y observa cómo llega tele/.../STATE cada diez segundos. Vuelve después a un valor razonable.
  5. Desenchufa el dispositivo. Tras el timeout del keep alive, el broker publica LWT = Offline.

Observa tu dispositivo Tasmota en el cliente online

Cuando una suscripción no muestra nada, compara el filtro con un topic real usando el topic matcher. Un segmento final que falta o un orden de prefijos equivocado en el FullTopic suele ser el culpable.

Mensajes retained y estado de encendido

Tasmota no marca como retained sus mensajes stat por defecto. Si un dashboard necesita el estado actual nada más suscribirse, consúltalo (payload vacío a cmnd/.../POWER) o activa PowerRetain 1 para que stat/.../POWER sea retained.

Nunca publiques comandos con el flag retain. Un ON retained en cmnd/.../POWER se vuelve a entregar cada vez que el dispositivo se reconecta, y el relé se enciende solo tras cada corte de luz o caída del Wi-Fi. Si te pasa, bórralo publicando un mensaje retained vacío en el mismo 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

Más sobre cómo funciona la retención en mensajes retenidos en MQTT.

TLS y Home Assistant

TLS depende del build del firmware. Muchos builds para ESP32 incluyen soporte de MQTT TLS, mientras que la mayoría de builds para ESP8266 requieren compilar con USE_MQTT_TLS. En un build con TLS, configura MqttPort 8883 y SetOption103 1, y revisa la documentación de TLS de Tasmota para ver cómo valida tu build el certificado del broker. En builds sin TLS, quédate en el puerto 1883 y usa una red local de confianza.

Home Assistant usa la integración Tasmota, que lee los mensajes de discovery propios de Tasmota (activados por defecto con SetOption19 0). Apunta la integración MQTT de Home Assistant al mismo broker y los dispositivos aparecerán automáticamente. La parte de Home Assistant se explica en Home Assistant MQTT.

El modelo MQTT de Tasmota es sencillo una vez que encajan los prefijos: los comandos entran por cmnd, las respuestas salen por stat y la telemetría llega por tele cada TelePeriod. Da a cada dispositivo un client ID único y un FullTopic que mantenga tus dispositivos en su propio espacio de nombres, verifica comandos, telemetría y LWT desde el cliente online, y cada automatización que construyas encima se comportará de forma predecible.

Preguntas frecuentes

¿Qué diferencia hay entre Topic y FullTopic en Tasmota?

Topic es el nombre corto del dispositivo, por ejemplo kitchen-plug. FullTopic es la plantilla que construye cada topic MQTT a partir de él, por defecto %prefix%/%topic%/, donde %prefix% se convierte en cmnd, stat o tele. Cambia Topic para renombrar un dispositivo; cambia FullTopic para mover todos los dispositivos bajo un espacio de nombres común.

¿Con qué frecuencia envía telemetría Tasmota?

Cada TelePeriod segundos, 300 por defecto. Ajústalo con el comando TelePeriod, por ejemplo TelePeriod 60. Los valores de sensores van a tele/<topic>/SENSOR y el estado del dispositivo a tele/<topic>/STATE.

¿Por qué mi relé Tasmota se enciende solo tras un reinicio?

Normalmente por un mensaje retained en un topic cmnd: el broker lo vuelve a entregar cada vez que el dispositivo se reconecta. Bórralo publicando un mensaje retained vacío en ese topic, y no publiques comandos con el flag retain.