Inicio / Blog / ESP32 y MQTT
Observabilidad embebida e IoT

ESP32 + MQTT: un pipeline de observabilidad que sí funciona

Una demostración de IoT no termina cuando un valor aparece en una consola. Un pipeline sostenible identifica cada dispositivo, transporta mediciones por redes inestables, revela datos obsoletos o ausentes y separa la confirmación del broker del almacenamiento duradero de la aplicación. Mantén pequeño el primer diseño, pero haz visibles sus fallos.

El recorrido mínimo de extremo a extremo

La telemetría atraviesa etapas observables por separado
1 / DispositivoMide, valida y añade ID, secuencia y versión.
2 / TransporteConecta con TLS y limita la cola sin red.
3 / BrokerAutoriza al dispositivo solo en su propio espacio.
4 / IngestaValida esquema, deduplica y persiste la lectura.
5 / ObservaciónRepresenta vigencia, huecos, errores y salud.

El componente ESP-MQTT de ESP-IDF implementa un cliente MQTT; el broker distribuye publicaciones a suscriptores. Ninguno completa por sí solo un pipeline de datos. El servicio de ingesta debe validar el contenido y confirmar la escritura en la base antes de que los paneles consideren duradera la observación.

Define identidad y límites de los temas

Asigna a cada dispositivo un client ID estable y único y credenciales limitadas a ese nodo. Una familia sencilla puede ser site/{siteId}/device/{deviceId}/telemetry, .../state y .../command. Separa permisos de publicación y suscripción: el sensor suele publicar telemetría y suscribirse solo a sus propios comandos. No incluyas secretos ni datos personales en los temas.

Elige un contenido compacto y versionado con hora de medición, secuencia monotónica, firmware, unidades e indicadores de calidad. La versión del esquema permite evolucionar la ingesta sin adivinar. Guarda por separado la hora de recepción del servidor; el reloj del dispositivo puede estar desajustado, derivar o reiniciarse.

QoS define la entrega de un tramo

MQTT QoS 0 entrega como máximo una vez; QoS 1, al menos una vez y puede duplicar; QoS 2 añade un intercambio para entrega exactamente una vez entre pares MQTT. QoS no garantiza una única inserción en la base ni un único procesamiento del panel. Para muchas cargas de telemetría, QoS 1 con una clave idempotente como deviceId + sequence equilibra fiabilidad y costo. Mide si el intercambio adicional de otro nivel compensa.

Un evento de publicación exitosa o una confirmación del broker indica que el intercambio alcanzó su etapa MQTT, no que se confirmó una transacción SQL. Si importa el procesamiento duradero, confirma desde el consumidor después de persistir o emite un recibo de ingesta. Al reconectar, reenvía las lecturas con sus IDs originales para deduplicar.

Usa estado retenido y Last Will con cuidado

Un mensaje retenido guarda en el broker el último valor de un tema y se entrega a futuros suscriptores. Sirve para un estado actual compacto o disponibilidad, no para conservar un historial sin límite. Last Will puede publicar estado offline tras una desconexión inesperada; combínalo con el anuncio online y una política de hora/expiración para no presentar estado viejo como actual. En MQTT 5, la expiración de sesión y mensaje es distinta del ciclo de vida del mensaje retenido.

Limita las colas y las reconexiones

Perder Wi-Fi es normal. Limita la cola del dispositivo por bytes y antigüedad, decide qué mediciones se pueden agregar y define qué ocurre al llenarse. Separa alarmas críticas de muestras habituales si su latencia es distinta. Usa backoff exponencial con jitter y demora máxima para evitar que toda la flota se reconecte a la vez tras una caída del broker. Persiste solo lo que requiera el presupuesto de pérdida: flash y almacenamiento son finitos.

SeñalQué revelaAlerta útil
Edad de la última muestraSi el nodo envía datos recientesSupera el contrato de reporte
Huecos de secuenciaPérdida entre generación e ingestaLa tasa sube sobre la línea base
Reconexiones al brokerInestabilidad de red o autenticaciónRáfagas o fallos repetidos de acceso
Cola y antigüedad del dato más viejoAcumulación y capacidad de recuperaciónSe acerca al límite establecido
Rechazos de ingestaErrores de esquema, permiso o calidadAumento por versión de firmware

Asegura la conexión y la operación

Usa TLS con validación de certificados; cifrar sin autenticar el broker aún permite conectar el dispositivo al destino equivocado. Protege credenciales almacenadas, aprovisiona identidades únicas, permite rotación y revocación, y no registres tokens. Las ACL del broker deben denegar por defecto. Los comandos requieren autorización, frescura y validación segura en el dispositivo; el acceso al panel no protege por sí solo el canal.

Diseña paneles para responder preguntas

Empieza con inventario de flota, último contacto, firmware, batería o señal si están disponibles, huecos de secuencia y errores de ingesta. Los gráficos deben indicar unidades y mostrar intervalos faltantes, no dibujar una continuidad engañosa. Añade una traza por dispositivo desde el ID de muestra hasta su recepción y fila en base de datos. Así se distingue entre sensor inactivo, red degradada y backend que descarta mensajes válidos.

En resumen

El pipeline MQTT mínimo útil combina identidad, evento versionado, transporte cifrado, comportamiento offline acotado, temas autorizados, ingesta idempotente y paneles centrados en vigencia. Elige QoS para el tramo MQTT y demuestra almacenamiento y procesamiento aparte. Esa distinción convierte una demo en un sistema operable.

Referencias