Saltar al contenido principal

Agregación IoT en el Edge & Telemetría

En entornos industriales, hogares inteligentes y escenarios de edge computing, los recursos de hardware son muy limitados. Ejecutar una Java Virtual Machine completa para Kafka, o el runtime de Erlang para RabbitMQ, en una Raspberry Pi o en un IPC industrial (PC Industrial) suele ser excesivo y desperdicia memoria valiosa.

Aquí es donde brilla el binario estático de 13MB de TinyMQ.

El Desafío

Tienes decenas de sensores locales (temperatura, humedad, movimiento, RFID) que publican datos de telemetría vía MQTT. Necesitas un broker local que:

  1. Agregue el tráfico local.
  2. Proporcione un buffer si la conexión a internet upstream se cae.
  3. Reenvíe los datos de forma segura a una aplicación cloud centralizada vía HTTP REST.

La Solución TinyMQ

Despliega TinyMQ en el dispositivo edge usando la imagen Docker scratch.

  1. Ingesta: El Gateway MQTT v3.1.1 integrado en TinyMQ escucha en el puerto 1883 y acepta conexiones de todos los sensores locales.
  2. Buffer: El Write-Ahead Log (WAL) persiste los mensajes en la tarjeta SD. Si el dispositivo edge pierde su conexión 4G/Wi-Fi, TinyMQ sigue ingiriendo mensajes hasta el límite de TINYMQ_MAX_MESSAGES.
  3. Reenvío: Usando las Webhook Subscriptions de TinyMQ, el broker se configura para hacer POST automáticamente de los mensajes a tu API de ingesta en la nube.

Ejemplo de Configuración en el Edge

Configura TinyMQ con límites de memoria agresivos para asegurarte de que el dispositivo edge nunca se quede sin RAM, confiando en el disco para la durabilidad:

services:
tinymq-edge:
image: ghcr.io/x-name15/tinymq:latest
restart: always
ports:
- "1883:1883"
environment:
# Enable strict disk sync for durability on power loss
- TINYMQ_FSYNC=true
# Protect RAM: Max 10,000 messages in memory per topic
- TINYMQ_MAX_MESSAGES=10000
# Drop oldest messages if the buffer fills up during a long network outage
- TINYMQ_DEFAULT_POLICY=drop-oldest
volumes:
- ./tinymq-data:/home/tinymq/data

Reenvío a la Nube (Webhook)

Usa la CLI de TinyMQ para registrar el webhook en la nube. El webhook cuenta con backoff exponencial integrado, lo que significa que gestionará con elegancia las caídas del cloud upstream.

tmq webhook add \
--topic "sensors.*" \
--url "https://api.mycloud.com/ingest" \
--secret "cloud_hmac_secret"

Por Qué Destaca Aquí

  • Sin Dependencias del SO: Puede ejecutarse directamente sobre una build mínima de Alpine Linux o Yocto.
  • Límites de Recursos: Los límites estrictos en el uso de memoria evitan que el broker cause panics del kernel por Out-Of-Memory (OOM) en el host.
  • Resiliencia: Descartar los mensajes más antiguos garantiza que el sistema se recupere con elegancia de cortes prolongados sin intervención del operador.