Inicio
/
Blog
/
Telemetría ESP32
Ingeniería Backend para IoT
Pipeline de telemetría con ESP32: MQTT, Cloudflare Workers, Supabase, SQL y dashboards
Los proyectos con ESP32 se vuelven realmente interesantes cuando dejan de ser dispositivos aislados y pasan a ser sistemas observables. Un sensor de temperatura, vibración, relé, cámara o nodo con batería es solo el borde del sistema. La ingeniería empieza cuando cada lectura se convierte en dato confiable: validado, almacenado, graficado, monitoreado y reproducible.
Publicado el 1 de junio de 2026
12 min de lectura
Backend IoT
Por qué ESP32 también es una conversación backend
ESP32 suele presentarse como hardware maker, pero la arquitectura alrededor es un problema backend. Los dispositivos pierden Wi-Fi, los sensores generan ruido, los relojes se desvían, los mensajes se duplican, las baterías se agotan y los dashboards mienten cuando el pipeline no tiene un modelo de frescura. Un proyecto profesional necesita idempotencia, retries, validación de schema, observabilidad y buen diseño de almacenamiento.
Las placas más nuevas de Espressif hacen que el edge sea más capaz. Espressif describe el ESP32-C6 con soporte para Wi-Fi 6, Bluetooth 5 LE e IEEE 802.15.4, abriendo espacio para Matter, Thread, redes tipo Zigbee e IoT de bajo consumo. El chip es pequeño; el sistema alrededor no lo es.
Pipeline de telemetría
Nodo ESP32Lee sensores y agrega metadatos del dispositivo.
Broker MQTTRecibe eventos compactos y tolera conectividad inestable.
Worker APIValida payloads, firma ingestión y normaliza datos.
PostgresGuarda lecturas crudas, estado del device y agregados.
Vistas SQLModelan ventanas listas para dashboard.
AlertasDetectan límites, silencio de devices y anomalías.
El payload del dispositivo debe ser simple
Los mejores payloads de telemetría son previsibles: ID del dispositivo, timestamp, versión de firmware, tipo de sensor, valor, unidad, batería, fuerza de señal, número de secuencia e ID único de evento. Eso permite investigar duplicados, retrasos, relojes defectuosos, rollouts de firmware y salud del dispositivo.
Un error común es tratar el ESP32 como única fuente de verdad. El backend también debe agregar timestamp de servidor, ID de ingestión, resultado de validación y tópico de origen. El dispositivo informa lo que vio. El backend registra cuándo y cómo el sistema lo recibió.
24 devicesNodos activos vistos en los últimos 10 minutos.
2,1s p95Latencia entre sensor y base de datos.
98,7%Payloads válidos tras validar schema.
3 alertasDispositivos sin datos o fuera de umbral.
Ejemplo de gráfico: promedio horario del sensor
MQTT es ingestión, no base de datos
MQTT es excelente para dispositivos pequeños porque es liviano, orientado a tópicos y resistente a redes intermitentes. Pero el broker no debería ser el almacén analítico de largo plazo. Su trabajo es mover mensajes. El trabajo del backend es preservar historia, validar datos, calcular agregados y exponer dashboards.
Un patrón limpio es: ESP32 publica en MQTT, un worker de ingestión recibe el mensaje, valida el payload, escribe datos crudos en Postgres/Supabase y luego crea vistas para ventanas de dashboard. Así el sistema es reproducible: si un gráfico se ve mal, puedes inspeccionar los eventos crudos.
Lo que yo construiría
Empezaría con una versión pequeña, pero con forma de producción: dispositivos ESP32 publicando JSON por MQTT, endpoint de ingestión en Cloudflare Worker, tablas Supabase/Postgres para lecturas crudas y registro de devices, vistas SQL para agregados horarios y un dashboard simple con frescura, gráficos y alertas.
Para portafolio, el dashboard debe ser visual desde el inicio: cards de métricas, estado de dispositivos, sparklines, historial de alertas, distribución de versiones de firmware y log de eventos. Eso convierte la demo de sensor en una plataforma operacional de telemetría.
| Tabla | Propósito | Campos importantes |
iot_devices | Registro de nodos ESP32 conocidos. | device_id, location, firmware_version, last_seen_at, status |
sensor_readings_raw | Eventos crudos append-only. | event_id, device_id, sensor_type, value, unit, device_timestamp, received_at |
sensor_readings_hourly | Vista agregada lista para dashboard. | device_id, sensor_type, hour_bucket, avg_value, min_value, max_value |
iot_alerts | Alertas de umbral, frescura y anomalía. | alert_id, device_id, severity, reason, opened_at, resolved_at |
Fallos que vale la pena mostrar
Los buenos posts de IoT muestran fallos visualmente. Las alertas útiles no son solo "temperatura alta". También son "device dejó de reportar", "la batería cayó demasiado rápido", "el firmware está antiguo", "saltaron números de secuencia" y "cambió el schema del payload". Esas señales separan una demo funcional de un sistema mantenible.
La misma lógica sirve para vibración industrial, invernaderos inteligentes, medidores de energía, tanques de agua, tracking de equipos y laboratorios de telemetría vehicular. Cuando el sensor se vuelve pipeline backend, ESP32 deja de ser solo hardware y se convierte en un nodo edge dentro de un sistema distribuido.