O suporte a MQTT do Tasmota transforma uma tomada inteligente barata com ESP8266 ou ESP32 em um dispositivo que você pode acionar e monitorar a partir de qualquer script, painel ou sistema de automação residencial. Neste tutorial você vai configurar o host MQTT, o client ID, o topic e o full topic e, em seguida, controlar uma tomada e ler sua telemetria de energia pelo servidor MQTT público em broker.connectmq.com.
Como o Tasmota usa o MQTT
O Tasmota é um firmware de código aberto para dispositivos baseados em ESP. De fábrica, ele oferece uma interface web, mas seu verdadeiro poder está no MQTT: todo comando que você pode digitar no console também pode ser enviado como mensagem MQTT, e toda mudança de estado e leitura de sensor é publicada de volta. Isso faz de uma tomada Tasmota um cidadão de primeira classe no Node-RED, no Home Assistant, no openHAB ou no seu próprio código.
O Tasmota monta cada tópico a partir de três partes:
- Prefixo -
cmndpara os comandos que você envia,statpara respostas e mudanças de estado,telepara telemetria periódica e disponibilidade. - Topic - um nome de dispositivo curto e único, como
plug1. - Full topic - um modelo que combina os dois, por padrão
%prefix%/%topic%/.
Com o full topic padrão, enviar um comando para cmnd/plug1/POWER faz o dispositivo responder em stat/plug1/RESULT e stat/plug1/POWER, enquanto a telemetria vai para tele/plug1/STATE e tele/plug1/SENSOR. O guia rápido de comandos MQTT do Tasmota lista em detalhes os comandos mais úteis.
O que você precisa
- Um dispositivo já rodando Tasmota (versão 13 ou mais recente recomendada) e conectado ao seu Wi-Fi.
- O endereço IP do dispositivo, para abrir sua interface web.
- Um computador com
mosquitto_pubemosquitto_sub, ou qualquer cliente MQTT, como o cliente web da ConnectMQ no portal.
Passo 1: Escolha nomes únicos
O servidor MQTT público (gratuito) em broker.connectmq.com serve para testes, é compartilhado por todos, e qualquer coisa publicada ali pode ser lida por qualquer pessoa. Antes de configurar o Tasmota, escolha:
- um ID aleatório, por exemplo
t7x2pk, - um client ID como
tasmota-t7x2pk, - um topic como
plug1, - um full topic que mantenha suas mensagens sob o seu próprio prefixo:
connectmq/demo/t7x2pk/%prefix%/%topic%/.
Os tópicos resultantes têm seis níveis (connectmq/demo/t7x2pk/cmnd/plug1/POWER), dentro do limite de oito níveis do servidor MQTT público.
Passo 2: Configure o MQTT do Tasmota pela interface web
Abra o endereço IP do dispositivo no navegador e vá em Configuration e depois Configure MQTT. Preencha:
| Campo | Valor para o teste público | Valor para produção |
|---|---|---|
| Host | broker.connectmq.com |
o host do seu broker |
| Port | 1883 |
1883 ou 8883 com uma build com TLS |
| Client | tasmota-t7x2pk |
YOUR_CLIENT_ID |
| User | deixe em branco | YOUR_USERNAME |
| Password | deixe em branco | YOUR_PASSWORD |
| Topic | plug1 |
plug1 |
| Full Topic | connectmq/demo/t7x2pk/%prefix%/%topic%/ |
home/%prefix%/%topic%/ |
Clique em Save. O Tasmota reinicia e se conecta. Se a página Other configuration mostrar a caixa MQTT desmarcada, ative-a; o MQTT vem ligado por padrão nas builds padrão, mas alguns templates o desativam.
Passo 3: Ou configure o MQTT do Tasmota pelo console
O console (Main Menu e depois Console) é mais rápido e permite scripts. O Backlog executa vários comandos de uma vez, e o dispositivo reinicia uma única vez no 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 e MqttPassword 0 apagam os valores padrão DVES_USER / DVES_PASS para que o dispositivo se conecte anonimamente. Após o reinício, o log do console deve mostrar uma linha como MQT: Connected, seguida da mensagem LWT Online.
Passo 4: Acompanhe o dispositivo
Assine tudo sob o seu prefixo:
mosquitto_sub -h broker.connectmq.com -p 1883 -i watch-t7x2pk \
-t 'connectmq/demo/t7x2pk/#' -v
Em poucos segundos você verá 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",...}
O tópico LWT é retido e também é o Last Will do dispositivo, então muda para Offline quando a tomada perde energia ou Wi-Fi. É esse o tópico a observar para saber a disponibilidade.
Passo 5: Controle a tomada inteligente via MQTT
Envie comandos para o prefixo cmnd:
# Ligar
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'ON'
# Alternar
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'TOGGLE'
# Consultar o estado atual (payload vazio)
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -n
Cada um gera stat/plug1/RESULT com {"POWER":"ON"} e stat/plug1/POWER com ON. Tomadas com medição de energia também publicam tele/plug1/SENSOR com tensão, corrente e potência, por padrão a cada 300 segundos. Para acelerar isso durante os testes:
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/TelePeriod' -m '30'
O TelePeriod aceita de 10 a 3600 segundos. Use valores moderados no servidor MQTT público; o limite ali é de 10 mensagens por segundo por cliente, e uma tomada a cada 30 segundos está muito longe disso.
Se uma tomada precisar voltar a um estado conhecido após uma queda de energia, defina também o PowerOnState: PowerOnState 0 a mantém desligada, 1 a liga, e o padrão 3 restaura o último estado salvo. Combinado com tópicos de estado retidos, isso torna o comportamento da tomada previsível para todos os painéis.
Lendo dados MQTT do Tasmota em código
Aqui está um pequeno ouvinte em Python (paho-mqtt 2.x) que imprime as leituras de potência e a disponibilidade:
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()
Do servidor MQTT público para a produção
O servidor MQTT público serve para experimentos. Qualquer pessoa poderia acionar sua tomada se adivinhasse o tópico, então uma tomada que alimenta um aquecedor ou um servidor nunca deve ficar ali. Para a instalação definitiva:
- Crie um broker privado no portal da ConnectMQ e copie o usuário, a senha e o client ID gerados.
- Defina-os com
Backlog MqttHost <host>; MqttUser YOUR_USERNAME; MqttPassword YOUR_PASSWORD; MqttClient YOUR_CLIENT_ID; FullTopic home/%prefix%/%topic%/. - Use TLS se a sua build suportar. As builds
tasmota32para ESP32 suportam; a maioria das builds para ESP8266 não. O guia de TLS no MQTT do Tasmota explica os detalhes. - Dê a cada dispositivo suas próprias credenciais e client ID, porque o broker aceita apenas uma sessão por client ID.
Um broker MQTT gerenciado elimina a necessidade de manter uma máquina com Mosquitto ligada em casa e permite acessar a tomada de fora sem redirecionamento de portas. Para mais blocos de construção de casa inteligente, veja o guia de tomada inteligente com MQTT e a visão geral de automação IoT.
Solução de problemas do MQTT no Tasmota
| Sintoma | Causa provável | Solução |
|---|---|---|
O console mostra MQT: Connect failed ... rc -2 |
Host inacessível ou porta errada | Verifique MqttHost, DNS e porta |
rc 5 (não autorizado) |
Usuário/senha ou client ID errados | Digite as credenciais de novo, verifique MqttClient |
| Conecta e cai a cada poucos segundos | Client ID duplicado | Dê um ID único a cada dispositivo e ferramenta |
| Nenhuma mensagem sob o seu prefixo | Erro de digitação no full topic | Execute FullTopic sozinho para ver o valor atual |
| Comandos ignorados | Enviados para stat ou tele em vez de cmnd |
Comandos sempre vão para o prefixo cmnd |
O projeto Tasmota documenta todos os comandos e configurações em seu site oficial, tasmota.github.io.
Controle dispositivos Tasmota com a ConnectMQ
Crie um broker Serverless gratuito em app.connectmq.com, sem cartão de crédito, cole as credenciais na página Configure MQTT e use o cliente no navegador e o explorador de tópicos ao vivo do portal para acionar suas tomadas. A ConnectMQ suporta MQTT 3.1.1 e 5.0, então o Tasmota se conecta sem nenhuma configuração especial.
Perguntas frequentes
Qual é a diferença entre Topic e Full Topic no Tasmota?
Topic é o nome curto do dispositivo, como plug1. Full Topic é o modelo que monta o tópico completo a partir do prefixo e do topic, por exemplo home/%prefix%/%topic%/.
Por que o Tasmota reinicia quando altero as configurações de MQTT?
O Tasmota aplica alterações de host, porta, credenciais e tópico do MQTT reiniciando. Usar o Backlog agrupa várias alterações em um único reinício.
Como consulto o estado de um dispositivo Tasmota sem alterá-lo?
Publique um payload vazio no tópico de comando, por exemplo cmnd/plug1/POWER. O dispositivo responde em stat/plug1/RESULT com seu estado atual.
Posso controlar vários dispositivos Tasmota com um único comando?
Sim. Todo dispositivo também escuta em um group topic, tasmotas por padrão, então uma mensagem para cmnd/tasmotas/POWER chega a todos eles. Altere-o com GroupTopic se você compartilha um broker.



