Decentlab proporciona una variedad de dispositivos de sensores inalámbricos para soluciones de monitoreo distribuidas y rentables en áreas de aplicación como monitoreo ambiental y de calidad del aire, mediciones hidrológicas, agricultura inteligente y ciudades inteligentes.
Los dispositivos de sensores se comunican de forma inalámbrica a través de LoRaWAN y están listos para ser desplegados en cualquier entorno interior o exterior hostil, además de poder operar con baterías durante varios años gracias a su diseño de consumo de energía ultra bajo.
A continuación, este artículo te guiará a través del proceso de integración de tu DL-LP8P (Sensor de CO₂, Temperatura, Humedad y Presión Barométrica) a Ubidots utilizando The Things Network (TTN) como servidor de red LoRaWAN para integrar todos los servicios.
NOTAS IMPORTANTES:
Los dispositivos de sensores son compatibles con el estándar LoRaWAN™ y están operando con éxito dentro de redes de varios proveedores. Aprende más.
Esta guía puede servir como referencia para la integración de cualquier dispositivo Decentlab (DL-PR36CTD, DL-IAM, DL-PR26, DL-PR21, DL-MBX), el único cambio requerido es el decodificador basado en el dispositivo utilizado. Para esto, consulta los decodificadores proporcionados por Decentlab y adáptalo según los Requisitos de la API de Ubidots.
Requisitos
1. Registro del dispositivo TTN
NOTA IMPORTANTE: Para comenzar a gestionar los datos de tus dispositivos Decentlab con TTN como proveedor de red LoRaWAN, por favor contacta a support@decentlab.com para establecer los requisitos.
Esta guía asume que tu dispositivo ya está conectado y transmitiendo datos a TTN con éxito. Sin embargo, a continuación puedes encontrar información breve sobre cómo registrar un nuevo dispositivo en TTN.
1. Ve a la consola de TTN y entra en la sección de aplicaciones para agregar una nueva aplicación. Para crear la aplicación, simplemente presiona “agregar aplicación”:
Luego, en la siguiente página, asigna los parámetros a continuación y presiona “Agregar aplicación” para continuar:
ID de la aplicación: El identificador único de tu aplicación en la red.
Descripción (opcional): una descripción legible por humanos.
Registro del manejador: manejador donde deseas registrar la aplicación.
Una vez que la aplicación esté creada, serás redirigido a la vista general de la aplicación.
2. Para registrar un dispositivo, ve a la pestaña de dispositivos. Luego presiona “Registrar dispositivo”
Luego, en la siguiente página, asigna los parámetros a continuación:
ID del dispositivo: el identificador único para el dispositivo en la aplicación. El ID del dispositivo será inmutable.
EUI del dispositivo: el identificador único para el dispositivo en la red.
El resto de los parámetros (App Key y App EUI) son asignados automáticamente por TTN. Una vez que se complete el registro del dispositivo, serás redirigido a la vista general del dispositivo. En este punto, el estado del dispositivo es “nunca visto” porque está esperando su primer mensaje.
Una vez que el dispositivo reciba el primer mensaje, verás cómo cambia el estado del dispositivo, así como el registro de los datos enviados por el dispositivo.
2. Gestión de mensajes de uplink
Para comenzar a enviar datos (mensajes de uplink) a Ubidots, necesitas establecer algunas configuraciones en el lado de TTN. Por favor, sigue los pasos a continuación cuidadosamente para establecer la comunicación adecuada entre tu dispositivo, TTN y Ubidots.
Carga útil personalizada
1. Ve a la vista general de la aplicación y consulta la pestaña “Formatos de carga útil”. Luego, asigna el siguiente código en la sección del decodificador para formatear la carga útil en objetos JSON, que es el permitido por Ubidots.
function Decoder(bytes, port) { return decentlab_decoder.decode(bytes);}/* https://www.decentlab.com/support */var decentlab_decoder = { PROTOCOL_VERSION: 2, SENSORS: [ {length: 2, values: [{name: 'Air-temperature', convert: function (x) { return 175.72 * x[0] / 65536 - 46.85; }, unit: '°C'}, {name: 'Air-humidity', convert: function (x) { return 125 * x[1] / 65536 - 6; }, unit: '%'}]}, {length: 2, values: [{name: 'Barometer-temperature', convert: function (x) { return (x[0] - 5000) / 100; }, unit: '°C'}, {name: 'Barometric-pressure', convert: function (x) { return x[1] * 2; }, unit: 'Pa'}]}, {length: 8, values: [{name: 'CO2-concentration', convert: function (x) { return x[0] - 32768; }, unit: 'ppm'}, {name: 'CO2-concentration-LPF', convert: function (x) { return x[1] - 32768; }, unit: 'ppm'}, {name: 'CC2-sensor-temperature', convert: function (x) { return (x[2] - 32768) / 100; }, unit: '°C'}, {name: 'Capacitor-voltage-1', convert: function (x) { return x[3] / 1000; }, unit: 'V'}, {name: 'Capacitor-voltage-2', convert: function (x) { return x[4] / 1000; }, unit: 'V'}, {name: 'CO2-sensor-status', convert: function (x) { return x[5]; }}, {name: 'Raw-IR-reading', convert: function (x) { return x[6]; }}, {name: 'Raw-IR-reading-LPF', convert: function (x) { return x[7]; }}]}, {length: 1, values: [{name: 'Battery-voltage', convert: function (x) { return x[0] / 1000; }, unit: 'V'}]} ], read_int: function (bytes) { return (bytes.shift() << 8) + bytes.shift(); }, decode: function (msg) { var bytes = msg; var i, j; if (typeof msg === 'string') { bytes = []; for (i = 0; i < msg.length; i += 2) { bytes.push(parseInt(msg.substring(i, i + 2), 16)); } } var version = bytes.shift(); if (version != this.PROTOCOL_VERSION) { return {error: "protocol version " + version + " doesn't match v2"}; } var deviceId = this.read_int(bytes); var flags = this.read_int(bytes); var result = {'Protocol-version': version, 'Device-ID': deviceId}; // decode payload for (i = 0; i < this.SENSORS.length; i++, flags >>= 1) { if ((flags & 1) !== 1) continue; var sensor = this.SENSORS[i]; var x = []; // convert data to 16-bit integer array for (j = 0; j < sensor.length; j++) { x.push(this.read_int(bytes)); } // decode sensor values for (j = 0; j < sensor.values.length; j++) { var value = sensor.values[j]; if ('convert' in value) { result[value.name] = {value: value.convert(x)}; } } } return result; }};
NOTA IMPORTANTE: Si estás utilizando un dispositivo diferente consulta los decodificadores proporcionados por Decentlab y adáptalo según los Requisitos de la API de Ubidots para comenzar a enviar datos.
2. [OPCIONAL] Una vez que tengas el código del decodificador definido en TTN, puedes probar la carga útil que se está enviando desde el dispositivo para verificar si el valor decodificado es correcto.
Digamos que el valor enviado desde el dispositivo es:
020578000F67BD618D1CEDBD10810D981F4895B0BD80BB500009598953900C25
Asigna la misma carga útil enviada y el resultado debería estar en un formato de carga útil JSON:
3. Para finalizar, presiona el botón “Guardar funciones de carga útil”. En este punto, si te refieres a la sección de datos notarás cómo los datos se están decodificando automáticamente después de guardar la función del decodificador.
Configuración de integración de Ubidots
Ve a la pestaña “Integración” para agregar una nueva integración. Para crear una nueva integración, simplemente presiona “agregar integración”.
Luego, selecciona Ubidots como integración:
En la siguiente ventana, asigna los siguientes parámetros:
ID de proceso: El identificador único deseado para el proceso de integración.
Clave de acceso: La clave de acceso de la aplicación.
Token: Tu token de cuenta de Ubidots. (consulta esta guía para saber dónde encontrarlo.)
Con todos los parámetros asignados, tu integración debería verse como la de abajo:
Para finalizar, presiona “Agregar integración”. Serás redirigido a la vista general de la integración:
En este punto, una vez que se reciba un nuevo valor en TTN desde el dispositivo, se creará automáticamente un nuevo dispositivo en tu cuenta de Ubidots.
Verificación de datos
1. Ve a la sección de dispositivos de tu cuenta de Ubidots (Dispositivos > Dispositivos) para verificar el nuevo dispositivo creado identificado con el EUI del dispositivo.
Selecciona el dispositivo creado para verificar todas las variables recibidas:
2. [ OPCIONAL - CONSEJO PROFESIONAL]: Si estás utilizando múltiples dispositivos para transmitir datos, te recomendamos editar el nombre del dispositivo, asignando un nombre amigable y legible para una identificación más fácil:
3. Visualización de datos
Ahora es el momento de construir tu propio panel para comenzar a monitorear los datos detectados por los dispositivos Decentlab.
1. Ve a la sección del Panel (Datos > Paneles) de tu cuenta de Ubidots.
2. Selecciona el ícono más (+) i que se encuentra en la parte superior derecha de la página. Luego selecciona los tipos de widgets deseados para mostrar tus datos. Aprende más sobre los paneles de Ubidots.
6. Resumen
Las aplicaciones LPWAN están teniendo un gran impacto en el ecosistema IoT, aún más si las integraciones requeridas tienen una configuración rápida, como acabamos de hacer con los dispositivos de sensores Decentlab y Ubidots. Nuestro objetivo es facilitar la gestión de “cosas” para la comunidad IoT, empoderando a más ingenieros de IoT para hacer crecer sus implementaciones de manera rápida y confiable.