The Things Network (TTN) es uno de los servidores de red LoRaWAN más usados del mundo, basado en The Things Stack v3. Se encarga del registro de dispositivos, la comunicación LoRaWAN en la capa MAC y el enrutamiento del payload. TTN destaca en la capa de red, pero no es una plataforma de aplicaciones. No almacena tus datos a largo plazo, no construye dashboards ni dispara alertas según los valores de los sensores.
TagoIO es la plataforma de aplicaciones que completa el stack. Almacena datos de series temporales, impulsa dashboards interactivos, dispara alertas, ejecuta scripts de análisis serverless y expone una API REST completa.
Conectar TTN con TagoIO es una integración limpia y bien soportada. TagoIO tiene un conector nativo de TTN v3 que gestiona el webhook de forma automática.
Lo que necesitas antes de empezar
- Una cuenta de TagoIO (plan gratuito disponible)
- Una cuenta de TTN en console.cloud.thethings.network
- Al menos un dispositivo final registrado en una aplicación de TTN
- Un gateway LoRaWAN en funcionamiento con cobertura de TTN
Visión general de la arquitectura
[sensores LoRaWAN] → [gateway LoRaWAN] → [TTN v3 LNS] → (webhook HTTPS) → [TagoIO]
Cada uplink pasa por el servidor de red de TTN, que lo autentica y entrega el payload de la aplicación al webhook que configures. TagoIO recibe ese payload, ejecuta tu parser y almacena las variables resultantes.
Paso 1: crear un dispositivo en TagoIO con el conector de TTN
- Inicia sesión en admin.tago.io.
- Haz clic en Devices → Add Device.
- Busca The Things Network v3 en el catálogo de conectores.
- Nombra el dispositivo para que coincida con tu dispositivo final de TTN.
- Haz clic en Create Device.
TagoIO muestra una Webhook URL y un Authorization Token. Copia ambos.
Documentación de dispositivos: docs.tago.io/docs/tagoio/devices
Paso 2: configurar el webhook de TagoIO en TTN
- En tu aplicación de TTN, ve a Integrations → Webhooks.
- Haz clic en + Add webhook → Custom webhook.
- Configura la Base URL con la Webhook URL de TagoIO.
- En Headers, añade:
Authorization: YOUR_TAGOIO_TOKEN - Activa los eventos de Uplink message.
- Guarda.
Paso 3: escribir un Payload Parser
TTN envía un objeto JSON en cada uplink. TagoIO espera las variables en su formato estándar:
[{"variable": "temperature", "value": 22.5, "unit": "C"}]
Opción A: usar el payload formatter de TTN (decoded_payload)
Si TTN está decodificando tu payload, mapea los campos decodificados:
const decoded = payload.uplink_message.decoded_payload;
if (!decoded) { payload = []; return; }
payload = Object.entries(decoded).map(([key, value]) => ({
variable: key, value: value
}));
Opción B: decodificar los bytes crudos en TagoIO
Para payloads crudos en base64 (ejemplo con Cayenne LPP):
const raw = Buffer.from(payload.uplink_message.frm_payload, "base64");
const temperature = raw.readInt16BE(2) / 10;
const humidity = raw.readUInt8(5) / 2;
payload = [
{ variable: "temperature", value: temperature, unit: "C" },
{ variable: "humidity", value: humidity, unit: "%" }
];
Añadir metadatos de RF:
const rxMeta = payload.uplink_message.rx_metadata?.[0] || {};
payload.push({ variable: "rssi", value: rxMeta.rssi });
payload.push({ variable: "snr", value: rxMeta.snr });
Documentación del Payload Parser: docs.tago.io/docs/tagoio/devices/payload-parser
Paso 4: verificar en el Live Inspector
Abre el Live Inspector en la página de tu dispositivo y confirma que las variables decodificadas llegan en el siguiente uplink.
Documentación del Live Inspector: docs.tago.io/docs/tagoio/devices/live-inspector
Paso 5: escalar a una flota
Para flotas grandes, crea un dispositivo de TagoIO por cada dispositivo final de TTN, o usa una única integración comodín en TagoIO con un script de Analysis que enrute los datos entrantes según el dev_eui.
Para dashboards con varios dispositivos, los Blueprint Dashboards aplican un solo diseño a todos los dispositivos mediante tags de forma automática.
Documentación de Analysis: docs.tago.io/docs/tagoio/analysis
Enviar downlinks desde TagoIO a TTN
Usa un script de Analysis de TagoIO para hacer POST de downlinks a través de la API de TTN v3:
const axios = require("axios");
await axios.post(
`https://eu1.cloud.thethings.network/api/v3/as/applications/${APP_ID}/devices/${DEVICE_ID}/down/push`,
{ downlinks: [{ f_port: 1, frm_payload: Buffer.from([0x01]).toString("base64"), priority: "NORMAL" }] },
{ headers: { Authorization: `Bearer ${TTN_API_KEY}` } }
);
Esto te permite enviar comandos a los dispositivos: cambiar el intervalo de reporte, activar un relé o solicitar lecturas bajo demanda.
Ir más allá con IA
El servidor MCP de TagoIO conecta asistentes de IA como Claude con los datos de tus dispositivos. Pregunta: “¿Qué dispositivos no han reportado en 6 horas?” o “¿Cuál es la temperatura media de todos los nodos del Edificio B?”
Documentación de MCP: docs.tago.io/docs/tagoio/getting-started/tagoio-mcp-ai-powered-iot-data-integration
Resumen
La integración entre TTN y TagoIO usa el conector nativo de TTN v3 de TagoIO. Registra el dispositivo en TagoIO, añade el webhook en TTN, escribe un payload parser y tus datos LoRaWAN fluirán hacia el almacenamiento a largo plazo con todas las capacidades de dashboards y alertas.
- Devices: docs.tago.io/docs/tagoio/devices
- Payload Parser: docs.tago.io/docs/tagoio/devices/payload-parser
- Analysis Scripts: docs.tago.io/docs/tagoio/analysis
- Actions: docs.tago.io/docs/tagoio/actions
- MCP: docs.tago.io/docs/tagoio/getting-started/tagoio-mcp-ai-powered-iot-data-integration


