Ir al contenido principal
Todas las coleccionesGuías de desarrollador
Integrar tus datos de TTN con Ubidots – Configuración Manual de UbiFunction
Integrar tus datos de TTN con Ubidots – Configuración Manual de UbiFunction

Integra los datos de tu cuenta de The Things Network (TTN) con Ubidots utilizando UbiFunctions para transformar la carga útil y lanzar tu solución IoT.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana

¿Buscando la Guía de Desarrollo de Configuración Simple para Integrar datos de TTN con Ubidots? Haga clic aquí para la Guía de Configuración Simple de Integración.

The Things Network (TTN)
es una red de LoRaWAN diseñada específicamente para una comunicación más eficiente de dispositivos con internet, con requisitos mínimos de batería, y un protocolo de largo alcance y bajo ancho de banda. Puede aprender más sobre The Things Network en su página web oficial.

¿Dónde prospera el TTN?

  • Aplicaciones de Ciudad Inteligente (monitoreo de condiciones ambientales, estacionamiento inteligente, iluminación inteligente, gestión de residuos...)

  • Aplicaciones Industriales (monitoreo de tecnología de sensores, seguimiento de activos, detección de fugas...)

  • Aplicaciones de Hogar Inteligente (seguridad del hogar, automatización del hogar...)

  • Aplicación de Salud (tecnología de wearables, dispositivos de monitoreo de salud y gestión de datos...)

  • Agricultura (agricultura inteligente, sensores de nivel de agua, control de riego, gestión de ganado...)

Requisitos

Configuración

  1. Verificación del Estado del Gateway y Dispositivos

  2. Gestión de Aplicaciones TTN

  3. Formato de Carga Útil TTN

  4. Integración HTTP TTN con Ubidots

  5. Visualización de Datos en Ubidots - Resultado

1. Verificación del Estado del Gateway y Dispositivos

1. Inicie sesión en su cuenta de TTN.
NOTA: Esta guía asume que ya ha configurado su gateway LoRaWAN en TTN y que los nodos ya están transmitiendo datos.

2. Desde su cuenta de TTN, presione la pestaña "CONSOLE" ubicada en la esquina superior izquierda de la página.

En la CONSOLE, encontrará dos opciones.

  • Aplicaciones- requeridas para establecer comunicación de datos con todos los dispositivos.

  • Gateways- el puente de comunicación de datos entre dispositivos (también considerados como sensores de campo) y The Things Network.

Como se mencionó anteriormente, esta guía asume que ya ha configurado su gateway con TTN con los dispositivos registrados en sus aplicaciones específicas.

3. Verifique que su Gateway esté correctamente conectado a TTN. Para esto, seleccione "GATEWAYS" de la pestaña console y verifique el estado del gateway como "Conectado."

Al seleccionar cualquier GATEWAY activo, puede profundizar en su conectividad y en los detalles de transmisión de datos.

4. Si sus dispositivos están transmitiendo datos correctamente, todos los mensajes recibidos se verán en TTN. Para verificar los mensajes entrantes de los dispositivos, vaya a la pestaña "Tráfico" desde la consola del gateway:

2. Gestión de Aplicaciones TTN

Como ya sabrá, cada Aplicación dentro de su cuenta de TTN se aplicará utilizando una serie de sensores (o dispositivos). En este tutorial trabajaremos con sensores de temperatura y humedad, además de sensores de volumen y, por lo tanto, necesito crear dos aplicaciones:

  1. Aplicación de Temperatura y Humedad

  2. Aplicación de Lector de Volumen

Teniendo como resultado:

Para nuestra primera aplicación, Aplicación de Temperatura y Humedad, notará que 2 dispositivos están registrados con su respectivo Device EUI:

  • Feather_temp_hum_1: 00xxxxxxxxxxxx73

  • Feather_temp_hum_2: 00xxxxxxxxxxxx5E

NOTA IMPORTANTE: El Device EUI servirá como el identificador único para cada dispositivo y este mismo identificador único actuará como la Etiqueta del Dispositivo en Ubidots (el identificador único del dispositivo en Ubidots y también explicado en el paso #5).

Ahora comencemos con las configuraciones de Formatos de Carga Útil & Integraciones .

3. Formatos de Carga Útil TTN

Con los dispositivos (sensores) debidamente registrados y transmitiendo datos, es hora de configurar el Formato de Carga Útil para decodificar los datos entrantes antes de que se publiquen en Ubidots para visualización y utilización.

1. La carga útil se recibe del dispositivo como "bytes," que se encuentra en el "Datos." Esta carga útil es difícil de interpretar y necesita ser decodificada.

2. Para decodificar los datos entrantes, vaya a la pestaña "Formato de carga útil" y seleccione "Personalizado" como formato de carga útil. Luego, según la estructura que maneja los datos entrantes, asigne el código de decodificador correcto en el editor de código proporcionado en la consola.
2a. Guarde los cambios presionando el botón verde "guardar funciones de carga útil"

Como encontrará a continuación, las lecturas del sensor se toman utilizando la biblioteca DHT y los valores se multiplican por 100 para enviar menos bytes.

Codificar (Arduino):

uint32_t temperature = dht.readTemperature(true)  * 100; // Leer temperaturauint32_t humidity = dht.readHumidity() * 100; // Leer humedad  byte payload[4];  payload[0] = highByte(temperature);payload[1] = lowByte(temperature);payload[2] = highByte(humidity);payload[3] = lowByte(humidity);

Luego, en las funciones de carga útil tenemos que decodificar los datos enviados y estructurar la carga útil JSON deseada para ser publicada más tarde en Ubidots.

Decodificar (Funciones de carga útil):

function Decoder(bytes, port) {  var temperature = (bytes[0] << 8) | bytes[1];  var humidity = (bytes[2] << 8) | bytes[3];    return {    temperature: temperature / 100,     humidity: humidity / 100  }}

En este caso, la función de carga útil devolverá el siguiente JSON con el respectivo valor para cada variable:

{  "humidity": 60.3,  "temperature": 57.19}

La gestión de datos como bytes, más las configuraciones de codificación y decodificación pueden ser un poco confusas al principio, pero esta guía útil le ayudará a trabajar con bytes. Se recomienda encarecidamente que revise esta guía y el video a continuación:

3. Para verificar que la decodificación esté completa, vaya a la pestaña "Datos" desde la consola de la aplicación y encuentre que la carga útil se está recibiendo en bytes, pero también se muestra como la decodificación a la derecha:

4. Integración HTTP TTN con Ubidots

Para enviar datos de TTN a Ubidots para desarrollar y desplegar aplicaciones IoT, utilizaremos la función de TTN llamada “Integraciones HTTP”, que simplemente reenvía cualquier dato entrante recibido a Ubidots utilizando una UbiFunction. Para más información sobre el reenvío de datos en bruto de TTN a una plataforma de terceros, consulte este enlace.

Configuración de UbiFunctions

Nota: una UbiFunction es una función en la nube de Node.js que se ejecuta cuando se realiza una solicitud GET, POST o HTTPS con la URL de la función. Un diagrama simple de esta actividad se puede encontrar a continuación:

Crear una UbiFunction para Analizar Datos

  1. Vaya a su cuenta de Ubidots => Dispositivos => Funciones

NOTA: Las UbiFunctions están incluidas en planes profesionales y superiores.

2. Haga clic en el ícono azul "+" en la esquina superior derecha para crear una nueva función:

3. Asigne un nombre a la función, por ejemplo, "Integración TTN". Luego, asigne el POST como el método HTTP.

4. Para finalizar la función, presione el botón azul "Hacerlo en vivo". Como verá, se genera la URL del endpoint (como se muestra a continuación). Esta URL de Endpoint HTTPS ahora necesita ser asignada en la configuración de la Integración HTTP TTN, por ahora solo copie la URL y guárdela para más tarde.

5. Copie y pegue el código a continuación en el editor de UbiFunction. Una vez pegado, asigne su Token de Ubidots donde se indica.

var request = require('request-promise');// Asigne su TOKEN de Ubidotsvar token = "xxxxxxxxxxxxxxxxxxx";// Esta función construye la solicitud HTTP POST a Ubidotsasync function ubidotsPost(deviceLabel, data) {    var options = {        method: 'POST',        url: 'https://industrial.api.ubidots.com/api/v1.6/devices/' + deviceLabel,        body: data,        json: true,        headers: {            'Content-Type': 'application/json',            'X-Auth-Token': token        }    };    return await request.post(options);}async function main(args) {    var deviceLabel = args['hardware_serial'];    var payload = args['payload_fields'];    // Envía los datos entrantes a Ubidots    console.log(deviceLabel);    console.log(payload);    await ubidotsPost(deviceLabel, payload);    return {parser_status: "OK"};}

Guarde los cambios presionando "Hacerlo en vivo"

5. Solo como referencia, la carga útil a continuación es la que devuelve la función de Integración TTN :

{   hardware_serial: '00xxxxxxxxxxxx73',   payload_fields: {       temperature: 75.19,       humidity: 42.1   },   dev_id: 'feather_temp_hum_1',   port: 1,   payload_raw: 'HV8Qcg==',   downlink_url: 'https://integrations.thethingsnetwork.org/ttn-us-west/api/v2/down/temp_hum_sensors/ubidots-parser?key=ttn-account-v2.XxxxXxxxXv7yLaMvr_y_XXxxxxX-0LeOA-MlsXxxXxAv',   metadata:{       modulation: 'LORA',       data_rate: 'SF7BW125',       coding_rate: '4/5',       frequency: 903.9,       time: '2018-03-22T19:25:50.257655583Z',       gateways: [ [Object] ]   },   counter: 103,   app_id: 'temp_hum_sensors'}

Así que cada vez que se recibe un valor en la Aplicación, la Integración HTTP configurada publicará la carga útil anterior. Pero, como verá en la carga útil devuelta, solo se utilizan los parámetros payload_raw y payload_fields. Donde el raw es el dato codificado, y el fields es el dato JSON de la carga útil configurada en la sección “Formatos de Carga Útil”. Además, el hardware_serial que es el Device EUI utilizado para identificar fácilmente y de manera única los dispositivos en Ubidots.

4. Integración HTTP TTN

Para completar la integración entre TTN y Ubidots, regresaremos a la Consola TTN y aplicaremos la Función de Ubidots a la Integración HTTP.

1. Desde la Consola TTN, seleccione Integración > agregar integración > Integración HTTP para encontrar la siguiente página:

2. Complete los campos vacíos con los siguientes parámetros:

  • ID de Proceso: ubidots-parser

  • Clave de Acceso: clave predeterminada

  • URL: URL generada previamente por UbiFunctions

  • Método: POST

  • Autorización: vacío

  • Nombre de Encabezado Personalizado: vacío

  • Valor de Encabezado Personalizado: vacío

Presione el botón "agregar integración" . Una vez que la Integración esté correctamente añadida, confirme que la visión general de la Integración tiene un estado de "Ejecutándose".

5. Desarrollo de Aplicaciones Ubidots - Resultado

En este punto, todo está configurado y los datos se están transmitiendo de manera segura desde TTN a Ubidots para ser mejorados y desplegados a los usuarios finales.

1. Como se mencionó anteriormente, el Device EUI de los dispositivos registrados en mi aplicación "temp_hum_sensors" son:

  • Feather_temp_hum_1: 00xxxxxxxxxxxx73

  • Feather_temp_hum_2: 00xxxxxxxxxxxx5E

Ahora, con la Integración TTN y los datos analizados funcionando como se esperaba, los datos de su dispositivo se están creando automáticamente y se envían y actualizan los dispositivos (creados automáticamente) en la sección de Dispositivos de su cuenta de Ubidots:

Al abrir el dispositivo encontrará los detalles de temperatura y humedad:

NOTA IMPORTANTE: Tenga en cuenta que cada aplicación debe ser configurada (formato de carga útil y integración HTTP) para poder comunicarse con la función creada en Ubidots.

2. [OPCIONAL] ¿No le gusta el Device EUI como el nombre de su dispositivo en la visualización de Ubidots? ¡No se preocupe! Puede cambiar el nombre a uno más amigable, pero la etiqueta del dispositivo permanecerá como el Device EUI para nunca confundirse qué dispositivo es cuál. Consulte este artículo del centro de ayuda para entender mejor Etiquetas de Dispositivos y Nombres de Dispositivos en Ubidots.

3. Ahora cree Tableros de Ubidots para visualizar y entender sus datos para tomar mejores decisiones de manera simple e inteligente.

¿Ha quedado contestada tu pregunta?