Início / Blog / ESP32 e MQTT
Observabilidade embarcada e IoT

ESP32 + MQTT: um pipeline de observabilidade que funciona

Uma demonstração útil de IoT não termina quando um valor aparece no terminal. Um pipeline sustentável identifica cada dispositivo, transporta medições por redes instáveis, revela dados antigos ou ausentes e separa a confirmação do broker do armazenamento durável da aplicação. Mantenha a primeira versão pequena, mas torne as falhas visíveis.

O menor fluxo ponta a ponta que ainda é útil

A telemetria percorre etapas que podem ser observadas separadamente
1 / DispositivoAmostra, valida e inclui ID, sequência e firmware.
2 / TransporteConecta com TLS e mantém fila limitada sem rede.
3 / BrokerAutoriza cada dispositivo apenas no próprio namespace.
4 / IngestãoValida o esquema, elimina duplicatas e persiste a leitura.
5 / ObservaçãoExibe atualidade, lacunas, erros e saúde da frota.

O componente ESP-MQTT do ESP-IDF implementa um cliente MQTT; o broker distribui publicações aos assinantes. Nenhum deles fornece sozinho um pipeline completo de dados. O serviço de ingestão deve validar o payload e confirmar a gravação no banco antes que dashboards tratem aquela observação como durável.

Defina identidade e fronteiras dos tópicos

Use um client ID estável e exclusivo e credenciais limitadas a cada dispositivo. Uma família simples pode ser site/{siteId}/device/{deviceId}/telemetry, .../state e .../command. Separe permissões de publicação e assinatura: em geral, o sensor publica telemetria e assina apenas o próprio canal de comandos. Não coloque segredos ou dados pessoais nos nomes dos tópicos.

Escolha um payload compacto e versionado com horário da medição, sequência monotônica, versão do firmware, unidades e indicadores de qualidade. O campo de versão do esquema permite evoluir a ingestão sem adivinhação. Guarde também o horário de recebimento do servidor: o relógio do dispositivo pode estar errado, derivar ou reiniciar.

QoS define entrega em um trecho da comunicação

MQTT QoS 0 é entrega no máximo uma vez; QoS 1 é pelo menos uma vez e pode gerar duplicatas; QoS 2 acrescenta uma troca de protocolo para entrega exatamente uma vez entre pares MQTT. QoS não garante inserção única no banco nem processamento único no dashboard. Para muita telemetria, QoS 1 com chave idempotente de ingestão, como deviceId + sequence, equilibra bem custo e confiabilidade. Meça antes de adotar a troca adicional de outro nível.

Um evento de publicação bem-sucedida ou confirmação do broker indica que a troca MQTT chegou à etapa definida, não que a transação SQL foi concluída. Se o processamento durável importa, confirme a mensagem no consumidor depois de persistir ou emita um recibo de ingestão. Ao reconectar, reenvie leituras com os IDs originais para permitir deduplicação.

Use estado retido e Last Will com critério

Uma mensagem retida representa o valor mais recente de um tópico no broker e é entregue a novos assinantes. É útil para um documento compacto de estado atual ou disponibilidade, não para manter histórico ilimitado. O Last Will pode publicar estado offline após uma desconexão inesperada; combine-o com anúncio online e política de horário/expiração para que um estado antigo não pareça atual. No MQTT 5, expiração de sessão e de mensagem são diferentes do ciclo de vida de mensagens retidas.

Limite as filas e o trabalho de reconexão

Perder o Wi-Fi é normal. Limite a fila do dispositivo por bytes e idade, decida quais medições podem ser agregadas e defina o comportamento ao atingir a capacidade. Mantenha alarmes críticos separados de amostras rotineiras se a latência exigida for diferente. Use backoff exponencial com jitter e atraso máximo para não reconectar a frota inteira ao mesmo tempo após uma falha do broker. Persista apenas o que o orçamento de perda do produto exigir: flash e armazenamento são finitos.

SinalO que revelaAlerta útil
Idade da última amostraSe o nó entrega dados recentesIdade supera o contrato de coleta
Lacunas de sequênciaPerdas entre geração e ingestãoTaxa de lacunas aumenta
Reconexões ao brokerInstabilidade de rede ou autenticaçãoPicos ou falhas repetidas de autenticação
Fila e idade do item mais antigoAcúmulo e capacidade de recuperaçãoFila perto do limite configurado
Rejeições na ingestãoErros de esquema, acesso ou qualidadeAumento inesperado por versão de firmware

Proteja conexão e operação

Use TLS com validação de certificado; criptografar sem autenticar o broker ainda permite conectar o dispositivo ao destino errado. Proteja credenciais armazenadas, provisione identidades únicas, permita rotação e revogação e evite registrar tokens em logs. ACLs do broker devem negar por padrão. Comandos exigem autorização, verificação de atualidade e validação segura no próprio dispositivo; login no painel não protege sozinho o canal.

Monte painéis a partir de perguntas

Comece por inventário da frota, último contato, versão de firmware, bateria ou sinal quando disponíveis, lacunas de sequência e erros de ingestão. Gráficos precisam mostrar unidades e intervalos sem dados, sem desenhar uma linha contínua enganosa. Crie rastreamento por dispositivo desde o ID da amostra até o recebimento pelo broker e a linha no banco. Assim fica mais fácil distinguir sensor parado, rede degradada e backend descartando mensagens válidas.

Em resumo

O menor pipeline MQTT útil reúne identidade, evento versionado, transporte criptografado, comportamento offline limitado, tópicos autorizados, ingestão idempotente e painéis focados em atualidade. Escolha QoS para o trecho MQTT e prove armazenamento e processamento à parte. Essa distinção transforma uma demonstração de sensor em sistema operável.

Referências