El soporte MQTT de Tasmota convierte un enchufe inteligente barato con ESP8266 o ESP32 en un dispositivo que puedes conmutar y supervisar desde cualquier script, panel o sistema domótico. En este tutorial configurarás el host MQTT, el client ID, el topic y el full topic, y después controlarás un enchufe y leerás su telemetría de energía a través del servidor MQTT público gratuito en broker.connectmq.com.
Cómo usa Tasmota MQTT
Tasmota es un firmware de código abierto para dispositivos basados en ESP. De serie ofrece una interfaz web, pero su verdadera potencia es MQTT: cada comando que puedes escribir en la consola también puede enviarse como mensaje MQTT, y cada cambio de estado y lectura de sensor se publica de vuelta. Eso convierte a un enchufe Tasmota en un ciudadano de primera clase en Node-RED, Home Assistant, openHAB o tu propio código.
Tasmota construye cada topic a partir de tres partes:
- Prefijo -
cmndpara los comandos que envías,statpara respuestas y cambios de estado,telepara la telemetría periódica y la disponibilidad. - Topic - un nombre de dispositivo corto y único, como
plug1. - Full topic - una plantilla que los combina, por defecto
%prefix%/%topic%/.
Con el full topic por defecto, enviar un comando a cmnd/plug1/POWER hace que el dispositivo responda en stat/plug1/RESULT y stat/plug1/POWER, mientras que la telemetría va a tele/plug1/STATE y tele/plug1/SENSOR. La chuleta de comandos MQTT de Tasmota recoge en detalle los comandos más útiles.
Qué necesitas
- Un dispositivo que ya ejecute Tasmota (se recomienda la versión 13 o posterior) y esté conectado a tu Wi-Fi.
- La dirección IP del dispositivo, para poder abrir su interfaz web.
- Un ordenador con
mosquitto_pubymosquitto_sub, o cualquier cliente MQTT, como el cliente web de ConnectMQ en el portal.
Paso 1: elegir nombres únicos
El servidor público en broker.connectmq.com lo comparte todo el mundo, y cualquiera puede leer lo que se publica en él. Antes de configurar Tasmota, elige:
- un ID aleatorio, por ejemplo
t7x2pk, - un client ID como
tasmota-t7x2pk, - un topic como
plug1, - un full topic que mantenga tus mensajes bajo tu propio prefijo:
connectmq/demo/t7x2pk/%prefix%/%topic%/.
Los topics resultantes tienen seis niveles (connectmq/demo/t7x2pk/cmnd/plug1/POWER), dentro del límite de ocho niveles del broker público.
Paso 2: configurar Tasmota MQTT en la interfaz web
Abre la dirección IP del dispositivo en un navegador y ve a Configuration y luego a Configure MQTT. Rellena:
| Campo | Valor para la prueba pública | Valor para producción |
|---|---|---|
| Host | broker.connectmq.com |
el host de tu broker |
| Port | 1883 |
1883 o 8883 con una compilación TLS |
| Client | tasmota-t7x2pk |
YOUR_CLIENT_ID |
| User | dejar vacío | YOUR_USERNAME |
| Password | dejar vacío | YOUR_PASSWORD |
| Topic | plug1 |
plug1 |
| Full Topic | connectmq/demo/t7x2pk/%prefix%/%topic%/ |
home/%prefix%/%topic%/ |
Haz clic en Save. Tasmota se reinicia y se conecta. Si la página Other configuration muestra la casilla MQTT sin marcar, actívala; MQTT está activado por defecto en las compilaciones estándar, pero algunas plantillas lo desactivan.
Paso 3: o configurar Tasmota MQTT desde la consola
La consola (menú principal y luego Console) es más rápida y se puede automatizar. Backlog ejecuta varios comandos de una vez y el dispositivo se reinicia una sola vez al final:
Backlog MqttHost broker.connectmq.com; MqttPort 1883; MqttClient tasmota-t7x2pk; MqttUser 0; MqttPassword 0; Topic plug1; FullTopic connectmq/demo/t7x2pk/%prefix%/%topic%/
MqttUser 0 y MqttPassword 0 borran los valores por defecto DVES_USER / DVES_PASS para que el dispositivo se conecte de forma anónima. Tras el reinicio, el log de la consola debería mostrar una línea como MQT: Connected seguida del mensaje LWT Online.
Paso 4: observar el dispositivo
Suscríbete a todo lo que hay bajo tu prefijo:
mosquitto_sub -h broker.connectmq.com -p 1883 -i watch-t7x2pk \
-t 'connectmq/demo/t7x2pk/#' -v
En pocos segundos verás algo como:
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",...}
El topic LWT se retiene y es también el Last Will del dispositivo, así que cambia a Offline cuando el enchufe pierde la alimentación o el Wi-Fi. Ese es el topic que debes vigilar para conocer la disponibilidad.
Paso 5: controlar el enchufe inteligente por MQTT
Envía comandos al prefijo cmnd:
# Encender
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'ON'
# Conmutar
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'TOGGLE'
# Consultar el estado actual (payload vacío)
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -n
Cada uno genera stat/plug1/RESULT con {"POWER":"ON"} y stat/plug1/POWER con ON. Los enchufes con medición de energía también publican tele/plug1/SENSOR con tensión, corriente y potencia, por defecto cada 300 segundos. Para acelerarlo durante las pruebas:
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/TelePeriod' -m '30'
TelePeriod acepta de 10 a 3600 segundos. Mantenlo moderado en el broker público; allí el límite es de 10 mensajes por segundo por cliente, y un enchufe cada 30 segundos no se acerca ni de lejos.
Si un enchufe debe volver a un estado conocido tras un corte de luz, configura también PowerOnState: PowerOnState 0 lo mantiene apagado, 1 lo enciende y el valor por defecto 3 restaura el último estado guardado. Junto con los topics de estado retenidos, eso hace que el comportamiento del enchufe sea predecible para todos los paneles.
Leer datos de Tasmota MQTT desde código
Este es un pequeño oyente en Python (paho-mqtt 2.x) que muestra las lecturas de potencia y la disponibilidad:
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()
Del broker público a producción
El broker público es para experimentos. Cualquiera podría conmutar tu enchufe si adivinara el topic, así que un enchufe que alimenta una estufa o un servidor nunca debe quedarse allí. Para la instalación permanente:
- Crea un broker privado en el portal de ConnectMQ y copia el usuario, la contraseña y el client ID generados.
- Configúralos con
Backlog MqttHost <host>; MqttUser YOUR_USERNAME; MqttPassword YOUR_PASSWORD; MqttClient YOUR_CLIENT_ID; FullTopic home/%prefix%/%topic%/. - Usa TLS si tu compilación lo admite. Las compilaciones ESP32
tasmota32lo admiten; la mayoría de las ESP8266, no. La guía de Tasmota MQTT con TLS explica los detalles. - Da a cada dispositivo sus propias credenciales y su propio client ID, porque el broker solo acepta una sesión por client ID.
Un broker MQTT gestionado elimina la necesidad de mantener un equipo con Mosquitto funcionando en casa y te permite llegar al enchufe desde fuera sin redirección de puertos. Para más piezas del hogar inteligente, consulta la guía de enchufes inteligentes MQTT y la visión general de la automatización IoT.
Solución de problemas de Tasmota MQTT
| Síntoma | Causa probable | Solución |
|---|---|---|
La consola muestra MQT: Connect failed ... rc -2 |
Host inaccesible o puerto incorrecto | Comprueba MqttHost, el DNS y el puerto |
rc 5 (no autorizado) |
Usuario/contraseña o client ID incorrectos | Vuelve a introducir las credenciales, comprueba MqttClient |
| Se conecta y se desconecta cada pocos segundos | Client ID duplicado | Da a cada dispositivo y herramienta un ID único |
| No hay mensajes bajo tu prefijo | Errata en el full topic | Ejecuta FullTopic sin argumentos para ver el valor actual |
| Se ignoran los comandos | Enviados a stat o tele en lugar de cmnd |
Los comandos siempre van al prefijo cmnd |
El proyecto Tasmota documenta todos los comandos y ajustes en su sitio oficial, tasmota.github.io.
Controla tus dispositivos Tasmota con ConnectMQ
Crea un broker Serverless gratuito en app.connectmq.com sin tarjeta de crédito, pega las credenciales en la página Configure MQTT y usa el cliente en el navegador y el explorador de topics en directo del portal para conmutar tus enchufes. ConnectMQ admite MQTT 3.1.1 y 5.0, así que Tasmota se conecta sin ajustes especiales.
Preguntas frecuentes
¿Qué diferencia hay entre Topic y Full Topic en Tasmota?
Topic es el nombre corto del dispositivo, como plug1. Full Topic es la plantilla que construye el topic completo a partir del prefijo y el topic, por ejemplo home/%prefix%/%topic%/.
¿Por qué se reinicia Tasmota después de cambiar los ajustes MQTT?
Tasmota aplica los cambios de host, puerto, credenciales y topic MQTT reiniciándose. Usar Backlog agrupa varios cambios en un solo reinicio.
¿Cómo consulto el estado de un dispositivo Tasmota sin cambiarlo?
Publica un payload vacío en el topic de comando, por ejemplo cmnd/plug1/POWER. El dispositivo responde en stat/plug1/RESULT con su estado actual.
¿Puedo controlar muchos dispositivos Tasmota con un solo comando?
Sí. Cada dispositivo escucha también en un topic de grupo, tasmotas por defecto, así que un mensaje a cmnd/tasmotas/POWER llega a todos. Cámbialo con GroupTopic si compartes un broker.



