🎓 ArcadeMakerBR Academy
Academia ESP32 • Aula 03 de 30
Tema: MQTT para iniciantes
Nível: 🟢 Iniciante
Tempo de leitura: 18 a 25 minutos
Ideal para: ESP32, automação residencial, sensores, dashboards e IoT.
Resumo rápido: MQTT é como uma central de mensagens. Dispositivos publicam informações em tópicos, outros dispositivos assinam esses tópicos e um servidor chamado broker organiza essa troca de mensagens.
O que você vai aprender
- O que é MQTT em linguagem simples.
- Como funcionam broker, cliente, publish e subscribe.
- O que são tópicos MQTT.
- Diferença entre QoS 0, QoS 1 e QoS 2.
- Como usar MQTT com ESP32.
- Como MQTT se conecta com Home Assistant e Node-RED.
- Quando usar MQTT e quando escolher outra tecnologia.
- Erros comuns que iniciantes cometem.
Índice
- O que é MQTT?
- Como funciona o MQTT?
- O que são tópicos MQTT?
- QoS: qualidade da entrega
- Retained Message e Last Will
- MQTT, HTTP, WebSocket e ESP-NOW
- MQTT com ESP32
- Projeto real: monitor de temperatura
- Erros comuns
- FAQ
O que é MQTT?
Imagine que você tem vários dispositivos espalhados pela casa: um ESP32 medindo temperatura, uma tomada inteligente medindo consumo, um sensor de porta, uma lâmpada Wi-Fi e um painel no Home Assistant. Agora imagine que todos esses equipamentos precisam conversar entre si sem criar uma confusão de conexões diretas.
É aí que entra o MQTT. Ele é um protocolo de comunicação leve, muito usado em projetos de IoT, ou seja, Internet das Coisas. Em vez de cada dispositivo falar diretamente com todos os outros, todos conversam através de um ponto central chamado broker MQTT.
O broker funciona como uma espécie de correio. Um dispositivo envia uma mensagem para um tópico, e todos os dispositivos interessados naquele tópico recebem a mensagem. Simples, rápido e muito eficiente.
💡 Dica do ArcadeMakerBR: Se você pretende criar projetos com ESP32, sensores, dashboards ou automação residencial, MQTT é praticamente obrigatório no seu kit de conhecimentos.
Como funciona o MQTT?
O MQTT trabalha com três ideias principais:
- Broker: o servidor que recebe e distribui mensagens.
- Cliente: qualquer dispositivo ou aplicação conectada ao broker.
- Tópico: o endereço lógico onde as mensagens são publicadas.
Um ESP32 pode publicar a temperatura no tópico casa/sala/temperatura. O Home Assistant, Node-RED ou outro ESP32 pode assinar esse tópico e receber os dados automaticamente.
Broker MQTT: o coração do sistema
O broker é o servidor MQTT. Ele recebe mensagens dos clientes e entrega para quem está inscrito nos tópicos correspondentes. Sem broker, não existe comunicação MQTT tradicional.
Alguns brokers conhecidos:
- Mosquitto: muito usado em Raspberry Pi, servidores Linux e Home Assistant.
- EMQX: poderoso, usado em ambientes maiores.
- HiveMQ: muito utilizado em soluções profissionais.
- Broker integrado ao Home Assistant: prático para automação residencial.
Para quem está começando, o Mosquitto costuma ser a escolha mais simples. Ele é leve, estável e funciona muito bem com ESP32.
Cliente MQTT
Cliente MQTT é qualquer dispositivo ou programa conectado ao broker. Pode ser:
- ESP32.
- ESP8266.
- Home Assistant.
- Node-RED.
- Aplicativo mobile.
- Servidor em Python, C#, Node.js ou outra linguagem.
Um cliente pode publicar mensagens, assinar tópicos ou fazer as duas coisas ao mesmo tempo.
Publish e Subscribe
O modelo do MQTT é conhecido como publish/subscribe. Isso significa que um cliente publica uma mensagem em um tópico, e outros clientes assinam esse tópico para receber as mensagens.
Exemplo prático:
- O ESP32 publica
23.7emcasa/sala/temperatura. - O Home Assistant assina
casa/sala/temperatura. - O painel mostra a temperatura atual.
O que são tópicos MQTT?
Os tópicos são como caminhos. Eles organizam as mensagens dentro do broker. Um bom padrão de tópicos deixa o projeto mais fácil de manter.
Exemplos:
casa/sala/temperatura
casa/sala/umidade
casa/cozinha/luz/status
casa/cozinha/luz/comando
oficina/impressora3d/temperatura
oficina/energia/consumo
Uma boa prática é usar uma estrutura lógica:
local/ambiente/dispositivo/medida
Por exemplo:
casa/quarto/sensor01/temperatura
⚠️ Atenção: evite tópicos confusos como
temp1,testeousensor. Eles funcionam no início, mas viram uma bagunça quando o projeto cresce.
QoS: qualidade da entrega
QoS significa Quality of Service, ou qualidade de serviço. No MQTT, ele define o nível de garantia de entrega de uma mensagem.
| QoS | Nome simples | Como funciona | Quando usar |
|---|---|---|---|
| QoS 0 | Entrega uma vez, sem confirmação | A mensagem é enviada e pronto. | Leituras frequentes de sensores. |
| QoS 1 | Entrega pelo menos uma vez | O broker confirma o recebimento. | Comandos importantes. |
| QoS 2 | Entrega exatamente uma vez | Usa troca extra de confirmação. | Sistemas críticos, com menor frequência. |
Para projetos makers, sensores e automação residencial, normalmente QoS 0 e QoS 1 já resolvem a maioria dos casos.
Retained Message e Last Will
Retained Message
Uma mensagem retida fica guardada no broker como o último valor daquele tópico. Quando um novo cliente assina o tópico, ele recebe imediatamente a última mensagem.
Exemplo: se uma lâmpada publicou ON em casa/sala/luz/status com retained, quando o Home Assistant reiniciar ele já saberá que a luz estava ligada.
Last Will and Testament
O Last Will, ou LWT, é uma mensagem configurada pelo cliente para ser publicada automaticamente pelo broker caso esse cliente desconecte de forma inesperada.
Exemplo: um ESP32 pode configurar um LWT para publicar offline no tópico:
casa/sala/esp32/status
Se o ESP32 perder energia ou cair da rede, o broker publica esse status automaticamente.
MQTT, HTTP, WebSocket e ESP-NOW
MQTT não é a única forma de comunicação. Em projetos com ESP32, também encontramos HTTP, WebSocket e ESP-NOW. Cada tecnologia tem o seu lugar.
| Tecnologia | Melhor uso | Vantagem | Limitação |
|---|---|---|---|
| MQTT | IoT, sensores, automação | Leve, organizado e escalável | Precisa de broker |
| HTTP | APIs e páginas web | Simples e universal | Mais pesado para sensores frequentes |
| WebSocket | Tempo real em interfaces web | Comunicação bidirecional rápida | Mais complexo para redes grandes |
| ESP-NOW | ESP32 para ESP32 sem roteador | Baixa latência e sem Wi-Fi tradicional | Mais limitado para integração com internet |
Regra simples:
- Quer conectar ESP32 ao Home Assistant? Use MQTT.
- Quer fazer uma API? Use HTTP.
- Quer painel web em tempo real? WebSocket pode ser interessante.
- Quer ESP32 falando com ESP32 sem roteador? ESP-NOW é excelente.
MQTT com ESP32
O ESP32 combina muito bem com MQTT porque tem Wi-Fi integrado, bom desempenho e suporte amplo na comunidade Arduino.
Fluxo básico:
- ESP32 conecta ao Wi-Fi.
- ESP32 conecta ao broker MQTT.
- ESP32 publica dados em um tópico.
- Home Assistant, Node-RED ou outro cliente recebe esses dados.
Exemplo de código ESP32 + MQTT
O exemplo abaixo mostra um ESP32 publicando uma temperatura simulada em um broker MQTT. Para usar em um projeto real, você pode substituir o valor simulado pela leitura de um sensor DHT22, BME280, DS18B20 ou outro.
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "NOME_DA_REDE";
const char* password = "SENHA_DA_REDE";
const char* mqttServer = "192.168.1.100";
const int mqttPort = 1883;
WiFiClient espClient;
PubSubClient client(espClient);
void conectarWiFi() {
Serial.print("Conectando ao Wi-Fi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi conectado!");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
}
void conectarMQTT() {
while (!client.connected()) {
Serial.print("Conectando ao broker MQTT...");
if (client.connect("ESP32SensorSala")) {
Serial.println(" conectado!");
client.publish("casa/sala/esp32/status", "online", true);
} else {
Serial.print(" falhou, rc=");
Serial.print(client.state());
Serial.println(" tentando novamente em 5 segundos");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
conectarWiFi();
client.setServer(mqttServer, mqttPort);
}
void loop() {
if (!client.connected()) {
conectarMQTT();
}
client.loop();
float temperatura = 23.5; // substitua pela leitura real do sensor
char payload[16];
dtostrf(temperatura, 4, 1, payload);
client.publish("casa/sala/temperatura", payload);
Serial.print("Temperatura enviada: ");
Serial.println(payload);
delay(10000);
}
🔧 Na bancada do Maker: durante testes, envie mensagens a cada 5 ou 10 segundos. Em produção, ajuste o intervalo conforme a necessidade. Nem todo sensor precisa publicar dados a cada segundo.
Projeto real: monitor de temperatura com ESP32
Um ótimo primeiro projeto com MQTT é criar um monitor de temperatura para casa, oficina ou impressora 3D.
Componentes
- 1 ESP32.
- 1 sensor BME280, DHT22 ou DS18B20.
- Broker Mosquitto em Raspberry Pi, mini PC ou Home Assistant.
- Dashboard no Home Assistant ou Node-RED.
Funcionamento
- O ESP32 lê a temperatura.
- Publica o valor em
oficina/temperatura. - O Home Assistant assina esse tópico.
- O dashboard mostra o valor em tempo real.
- Uma automação pode ligar uma ventoinha se a temperatura passar de um limite.
Boas práticas com MQTT
- Use nomes de tópicos organizados.
- Separe tópicos de comando e status.
- Use retained apenas quando fizer sentido.
- Configure LWT para identificar dispositivos offline.
- Evite publicar dados em intervalos desnecessariamente curtos.
- Use autenticação no broker.
- Se expor para internet, use TLS ou VPN.
- Documente seus tópicos em uma tabela.
Erros comuns de iniciantes
1. Usar tópicos sem padrão
No início parece simples usar temp, led e sensor1. Depois de alguns dispositivos, ninguém entende mais nada. Crie um padrão desde o começo.
2. Publicar dados demais
Um sensor de temperatura não precisa enviar dados 20 vezes por segundo. Isso só aumenta tráfego e processamento.
3. Não tratar reconexão
Wi-Fi cai. Broker reinicia. O ESP32 precisa saber reconectar automaticamente.
4. Não usar autenticação
Mesmo em rede local, use usuário e senha no broker. Segurança básica evita dor de cabeça.
5. Expor o broker diretamente para a internet
Essa é uma das piores práticas. Se precisar acessar de fora, prefira VPN, túnel seguro ou configuração com TLS e autenticação forte.
Quando usar MQTT?
Use MQTT quando você tiver:
- Vários sensores enviando dados.
- Projetos com ESP32 conectados à rede Wi-Fi.
- Integração com Home Assistant.
- Dashboard em Node-RED.
- Automação residencial.
- Monitoramento remoto.
- Projetos que precisam crescer com organização.
Quando NÃO usar MQTT?
MQTT não é a melhor opção para tudo. Talvez você deva escolher outra tecnologia quando:
- Você precisa apenas carregar uma página web simples.
- O projeto é ESP32 para ESP32 sem roteador: ESP-NOW pode ser melhor.
- Você precisa transferir arquivos grandes.
- Você quer uma API pública tradicional: HTTP/REST pode fazer mais sentido.
FAQ sobre MQTT
MQTT funciona sem internet?
Sim. MQTT pode funcionar apenas na rede local. Um broker Mosquitto dentro da sua casa já permite ESP32, Home Assistant e Node-RED conversarem sem internet.
MQTT precisa de Wi-Fi?
Não obrigatoriamente. MQTT funciona sobre TCP/IP, então pode usar Wi-Fi, Ethernet, rede celular ou outra conexão IP. No ESP32, o uso mais comum é via Wi-Fi.
MQTT é seguro?
MQTT pode ser seguro, mas depende da configuração. Use usuário, senha e, quando necessário, TLS. Não exponha brokers sem proteção.
Qual broker usar para começar?
Para iniciantes, Mosquitto é uma excelente escolha. É leve, popular e muito usado em projetos com ESP32 e Home Assistant.
MQTT substitui ESP-NOW?
Não exatamente. MQTT é melhor para integração com rede, dashboards e automação. ESP-NOW é excelente para comunicação direta entre ESP32 sem depender de roteador.
Posso usar MQTT com Arduino?
Sim. Placas com conexão de rede, como ESP8266, ESP32 ou Arduino com módulo Ethernet/Wi-Fi, podem usar MQTT.
Resumo final
MQTT é uma das tecnologias mais importantes para quem quer criar projetos de IoT com ESP32. Ele permite que sensores, atuadores, dashboards e plataformas de automação conversem de forma organizada, leve e eficiente.
Se você está começando no mundo maker, aprender MQTT abre muitas portas: automação residencial, monitoramento de energia, estações meteorológicas, dashboards, robótica e integração com Home Assistant.
Conclusão: se o ESP32 é o cérebro de muitos projetos makers, o MQTT é uma das melhores formas de fazer esses cérebros conversarem com o resto do sistema.
📚 Continue aprendendo
- Tudo sobre ESP32
- Tudo sobre ESP-NOW
- Tudo sobre Bluetooth BLE no ESP32
- Tudo sobre OTA no ESP32
- Tudo sobre Home Assistant
Kit de publicação SEO
Título SEO: Tudo sobre MQTT: Guia Completo para Iniciantes e Makers
Slug recomendado: tudo-sobre-mqtt-guia-completo-esp32-iot
Meta description: Aprenda tudo sobre MQTT: o que é, como funciona, broker, cliente, tópicos, QoS, ESP32, Home Assistant, Node-RED e aplicações reais em IoT.
Etiquetas: MQTT, ESP32, IoT, Arduino, Home Assistant, Node-RED, Mosquitto, Automação, Maker, Internet das Coisas
Categoria sugerida: IoT / ESP32 Academy