Introducción para ingenieros IoT, ingenieros de datos y cualquier persona que quiera transformar uplinks crudos de dispositivos en JSON listo para analítica. En este tutorial aprenderá a crear un script en Node.js que se suscribe a mensajes MQTT, detecta automáticamente codificaciones comunes de payload como JSON, Base64 y un ejemplo de Hex TLV, y las normaliza en un único esquema para almacenamiento, alertas o streaming. Este contenido ha sido preparado por Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud aws y azure.
Requisitos y configuración previa: Node.js 18 instalado. Un broker MQTT accesible localmente o en la nube. Instalar dependencias con los comandos npm init -y y npm install mqtt dotenv yargs. Crear un archivo .env con variables como MQTT_URL=mqtts://broker.example.com:8883 MQTT_USERNAME=tu-usuario MQTT_PASSWORD=tu-password MQTT_TOPIC=devices/+/up El topic devices/+/up suscribe a todos los dispositivos usando el comodín de un nivel. Ajuste según su esquema de topics.
Ejemplos de topics y payloads: Ejemplo de payload JSON típico con campos deviceId ELK-123456 ts 2025-09-08T06:01:22Z gnss con lat 22.543096 lon 114.057865 speedKph 48.3 heading 180 batteryPct 87 status con valores IGN_ON y MOVING. Ejemplo de payload Hex TLV de demostración donde cada campo sigue Tag 1 byte Len 1 byte Value N bytes con contenidos como 01 07 454C4B2D313233343536 para deviceId ASCII ELK-123456, 02 04 66A29C16 para timestamp epoch uint32 big endian, 03 04 0135E0F0 para lat en i32 dividido entre 1e6, 04 04 044DA4A1 para lon i32 /1e6, 05 02 01E5 para velocidad en 0.1 kph y 06 01 57 para nivel de batería en porcentaje. Reemplace el ejemplo TLV por la especificación oficial de su dispositivo en producción.
Estrategia de parseo y normalización: El script detecta el formato entrante y convierte a un esquema consistente. Detecciones principales: JSON cuando el payload comienza con llave izquierda o corchete izquierdo. Base64 cuando una cadena decodificada desde base64 produce JSON válido o un TLV válido. Hex TLV cuando la carga es una cadena hex pura de longitud par y los tags coinciden con su mapeo. Si no se detecta ninguno de estos formatos se guarda el contenido en un campo _raw para auditoría. El objeto normalizado incluye campos como sourceTopic rawFormat deviceId ts lat lon speedKph heading batteryPct statusFlags con subcampos ignOn moving tamper y opcionalmente _raw.
Resumen del script: el script en Node.js usa los paquetes mqtt dotenv y yargs. Se conecta al broker, se suscribe al topic configurado y para cada mensaje aplica la lógica de detección y decodificación. Las entradas se validan y se limpian antes de serializarse como una línea JSON por mensaje. Opcionalmente se guardan en un fichero NDJSON para ingestión por pipelines. Recomendaciones de implementación: no use validación de certificados deshabilitada en producción. Para alto rendimiento, evite escrituras síncronas en el handler de mensajes y prefiera colas o batch writes. Para evitar duplicados en una base de datos deduplique por deviceId y ts.
Comandos de ejemplo para ejecutar: node parse-eelink-mqtt.js --save out.ndjson o pasando opciones completas por línea de comandos como node parse-eelink-mqtt.js --broker mqtts://broker.example.com:8883 --username alice --password secret --topic devices/+/up --save out.ndjson --insecure Use la opción insecure solo en pruebas.
Salida de ejemplo y uso: por cada mensaje el script emite una línea JSON normalizada que puede consumirse directamente por motores de analítica, brokers o bases de datos. Un registro típico contiene sourceTopic devices/ELK-123456/up rawFormat json deviceId ELK-123456 ts en formato ISO lat lon speedKph heading batteryPct y statusFlags con ignOn y moving cuando proceda. Para payloads TLV el rawFormat será hex|tlv y los campos numéricos se convertirán a unidades legibles como kph o grados.
Limitaciones y siguientes pasos: reemplace el decodificador TLV de ejemplo con la especificación oficial de sus dispositivos. Aumente el rendimiento usando colas, batch writes y mecanismos asíncronos. Implemente métricas y trazas para detectar errores de decodificación. Considere integrar las salidas normalizadas con soluciones de inteligencia de negocio y dashboards como Power BI para visualizar rutas, telemetría y alertas en tiempo real.
Sobre Q2BSTUDIO: somos una empresa de desarrollo de software a medida y aplicaciones a medida especializada en soluciones a medida para empresas. Ofrecemos servicios de inteligencia artificial y ia para empresas, agentes IA, ciberseguridad y pentesting, y servicios cloud aws y azure. Si necesita una solución de software a medida para integrar ingestión y normalización de datos IoT o construir pipelines de analítica, podemos ayudarle con desarrollo, seguridad y despliegue en la nube. Conozca nuestras capacidades en desarrollo de aplicaciones y software a medida en servicios de software a medida y descubra nuestras propuestas de inteligencia artificial en soluciones de inteligencia artificial para empresas.
Palabras clave incorporadas naturalmente para SEO: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Contacte con Q2BSTUDIO para diseñar e implementar una solución completa que lleve sus uplinks IoT desde el dispositivo hasta sus cuadros de mando y sistemas de negocio.