Início
/
Blog
/
Telemetria ESP32
Engenharia Backend para IoT
Pipeline de telemetria com ESP32: MQTT, Cloudflare Workers, Supabase, SQL e dashboards
Projetos com ESP32 ficam realmente interessantes quando deixam de ser dispositivos isolados e viram sistemas observáveis. Um sensor de temperatura, vibração, relé, câmera ou nó com bateria é só a borda do sistema. A engenharia começa quando cada leitura vira dado confiável: validado, armazenado, exibido em gráficos, monitorado e reproduzível.
Publicado em 1 de junho de 2026
12 min de leitura
Backend IoT
Por que ESP32 também é conversa de backend
ESP32 costuma aparecer como hardware maker, mas a arquitetura ao redor dele é problema de backend. Dispositivos perdem Wi-Fi, sensores geram ruído, relógios atrasam, mensagens duplicam, baterias acabam e dashboards mentem quando o pipeline não tem modelo de frescor. Um projeto profissional com ESP32 precisa de idempotência, retries, validação de schema, observabilidade e bom desenho de armazenamento.
Placas mais novas da Espressif deixam a borda ainda mais capaz. A Espressif descreve o ESP32-C6 com suporte a Wi-Fi 6, Bluetooth 5 LE e IEEE 802.15.4, abrindo espaço para Matter, Thread, redes no estilo Zigbee e IoT de baixo consumo. O chip é pequeno; o sistema em volta dele não é.
Pipeline de telemetria
Nó ESP32Lê sensores e adiciona metadados do dispositivo.
Broker MQTTRecebe eventos compactos e lida com conexão instável.
Worker APIValida payloads, assina ingestão e normaliza dados.
PostgresGuarda leituras brutas, estado do device e agregados.
Views SQLModelam janelas prontas para dashboard.
AlertasDetectam limites, silêncio de devices e anomalias.
O payload do dispositivo deve ser simples
Os melhores payloads de telemetria são previsíveis: ID do dispositivo, timestamp, versão de firmware, tipo de sensor, valor, unidade, bateria, força do sinal, número de sequência e ID único do evento. Isso já permite investigar duplicatas, atrasos, relógios ruins, rollouts de firmware e saúde dos dispositivos.
Um erro comum é tratar o ESP32 como única fonte de verdade. O backend também deve adicionar timestamp de servidor, ID de ingestão, resultado de validação e tópico de origem. O dispositivo relata o que viu. O backend registra quando e como o sistema recebeu aquilo.
24 devicesNós ativos vistos nos últimos 10 minutos.
2,1s p95Latência entre sensor e banco de dados.
98,7%Payloads válidos após validação de schema.
3 alertasDispositivos sem dados ou acima do limite.
Exemplo de gráfico: média horária do sensor
MQTT é ingestão, não banco de dados
MQTT é ótimo para dispositivos pequenos porque é leve, orientado a tópicos e tolera redes intermitentes. Mas o broker não deve ser a base analítica de longo prazo. O trabalho dele é mover mensagens. O trabalho do backend é preservar histórico, validar dados, calcular agregados e expor dashboards.
Um padrão limpo é: ESP32 publica no MQTT, um worker de ingestão recebe a mensagem, valida o payload, grava dados brutos em Postgres/Supabase e depois cria views para janelas de dashboard. Assim o sistema fica reproduzível: se um gráfico parece errado, você inspeciona os eventos brutos.
O que eu construiria
Eu começaria com uma versão pequena, mas com formato de produção: dispositivos ESP32 publicando JSON via MQTT, endpoint de ingestão em Cloudflare Worker, tabelas Supabase/Postgres para leituras brutas e registro de devices, views SQL para agregados horários e um dashboard simples com frescor, gráficos e alertas.
Para portfólio, o dashboard precisa ser visual desde o início: cards de métricas, status dos dispositivos, sparklines, histórico de alertas, distribuição de versões de firmware e log de eventos. Isso transforma o projeto de demo de sensor em plataforma operacional de telemetria.
| Tabela | Propósito | Campos importantes |
iot_devices | Registro dos nós ESP32 conhecidos. | device_id, location, firmware_version, last_seen_at, status |
sensor_readings_raw | Eventos brutos em modo append-only. | event_id, device_id, sensor_type, value, unit, device_timestamp, received_at |
sensor_readings_hourly | View agregada pronta para dashboard. | device_id, sensor_type, hour_bucket, avg_value, min_value, max_value |
iot_alerts | Alertas de limite, frescor e anomalia. | alert_id, device_id, severity, reason, opened_at, resolved_at |
Falhas que valem aparecer no artigo
Bons posts de IoT mostram falhas visualmente. Os alertas úteis não são só "temperatura alta". Também são "device parou de reportar", "bateria caiu rápido demais", "firmware está antigo", "números de sequência pularam" e "schema do payload mudou". Esses sinais separam uma demo funcional de um sistema que dá para manter.
A mesma lógica vale para vibração industrial, estufas inteligentes, medidores de energia, caixas d'água, rastreamento de equipamentos e laboratórios de telemetria veicular. Quando sensor vira pipeline backend, ESP32 deixa de ser só hardware e vira um nó de borda em um sistema distribuído.