Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar dispositivos RAKwireless LoRaWAN con Ubidots
Conectar dispositivos RAKwireless LoRaWAN con Ubidots

Aprende a configurar dispositivos RAKwireless y su gateway para enviar datos a la plataforma de desarrollo de aplicaciones IoT de Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 2 meses

RAK es un pionero en proporcionar soluciones de conectividad celular y LoRa innovadoras y diversas para dispositivos de borde IoT. En el siguiente tutorial aprenderás cómo integrar los datos provenientes de los dispositivos RAKwireless a Ubidots utilizando el servidor de The Thing Network. Convierte los datos de sensores en tiempo real en información valiosa para tus clientes.

Requisitos

Antes de comenzar, conecta las antenas (es decir, Wi-Fi, LPWAN, LTE y GPS) que se encuentran en tu puerta de enlace. Para RAK7258, conecta esas al conector SMA, y para RAK7249, atornilla las antenas a la puerta de enlace. Después de esto, ya puedes encender la puerta de enlace. Una vez encendida, puedes usar el puerto Ethernet o Wi-Fi para conectar la puerta de enlace. Ambas opciones te permiten acceder a la interfaz de gestión a través de un navegador web en el que puedes ver el EUI de la puerta de enlace.


1. Configuración de TTN

1.1 Registro de puerta de enlace y nodo TTN

Conecta la puerta de enlace a TTN y regístrate aquí. Asegúrate de seleccionar la opción “Estoy usando el reenvío de paquetes heredado” antes de ingresar el EUI de la puerta de enlace.

Selecciona tu plan de frecuencia dependiendo de tu ubicación y esto debería completar el campo del router.


Con tu misma cuenta de TTN, ve a “Aplicaciones” y completa la información necesaria como ID de la aplicación, Descripción, EUI de la aplicación y registro del manejador para agregar una aplicación. Registra tu dispositivo proporcionando también el ID del dispositivo del nodo y el EUI. Dependiendo del método de autenticación que desees usar, procede a la sección del modo OTAA o del modo ABP. Para más información sobre las instrucciones, puedes ver este documento de RAKwireless.


1.2 Decodificador

Mientras que las cargas útiles en hexadecimal son excelentes para dispositivos LoRaWan, la mayoría de las API web están diseñadas para entender cargas útiles JSON y Ubidots no es la excepción. Por esa razón, es necesario configurar un decodificador personalizado que transforme los datos recibidos por la puerta de enlace en un JSON compatible con Ubidots. Para hacer esto, sigue los siguientes pasos:

1. Ve a la "Consola" de tu cuenta de TTN.
2. Abre la "Aplicación" donde tu dispositivo ya está registrado.
3. Selecciona la opción "Formatos de Carga Útil". Luego, selecciona “Personalizado” como formato de carga útil, y asegúrate de que la opción "Decodificador" esté seleccionada.

Coloca el código a continuación en el campo de bloque de código disponible. Para guardar el formato de carga útil asignado, asegúrate de presionar el botón "Guardar":

// TTN application function to decode uplink data.// Decode decodes an array of bytes into an object.// - port contains the LoRaWAN fPort number// - bytes is an array of bytes, e.g. [225, 230, 255, 0]// The function must return an object, e.g. {"temperature": 22.5}function Decoder(bytes, port) {var decoded = {};var hexString=bin2HexStr(bytes);return rakSensorDataDecode(hexString);}// convert array of bytes to hex string.function bin2HexStr(bytesArr) {var str = "";for(var i=0; i<bytesArr.length; i++) {var tmp = (bytesArr[i] & 0xff).toString(16);if(tmp.length == 1) {tmp = "0" + tmp;}str += tmp;}return str;}// convert string to short integerfunction parseShort(str, base) {var n = parseInt(str, base);return (n << 16) >> 16;}// convert string to Quadruple bytes integerfunction parseQuadruple(str, base) {var n = parseInt(str, base);return (n << 32) >> 32;}// decode Hex sensor string data to objectfunction rakSensorDataDecode(hexStr) {var str = hexStr;var myObj = {};while (str.length > 4) {var flag = parseInt(str.substring(0, 4), 16);switch (flag) {case 0x0768:// HumiditymyObj.humidity = parseFloat(((parseShort(str.substring(4, 6), 16) * 0.01 / 2) * 100).toFixed(1));str = str.substring(6);break;case 0x0673:// Atmospheric pressuremyObj.barometer = parseFloat((parseShort(str.substring(4, 8), 16) * 0.1).toFixed(2));str = str.substring(8);break;case 0x0267:// TemperaturemyObj.temperature = parseFloat((parseShort(str.substring(4, 8), 16) * 0.1).toFixed(2));str = str.substring(8);break;case 0x0188:// GPSlat = parseFloat((parseQuadruple(str.substring(4, 12), 16) * 0.000001).toFixed(6));lng = parseFloat((parseQuadruple(str.substring(12, 20), 16) * 0.000001).toFixed(6));myObj.position = {"value":1, "context":{"lat":lat,"lng":lng}};myObj.altitude = parseFloat((parseQuadruple(str.substring(20, 28), 16) * 0.01).toFixed(1)) ;str = str.substring(28);break;case 0x0371:// Triaxial accelerationmyObj.acceleration_x = parseFloat((parseShort(str.substring(4, 8), 16) * 0.001).toFixed(3));myObj.acceleration_y = parseFloat((parseShort(str.substring(8, 12), 16) * 0.001).toFixed(3));myObj.acceleration_z = parseFloat((parseShort(str.substring(12, 16), 16) * 0.001).toFixed(3));str = str.substring(16);break;case 0x0402:// air resistancemyObj.gasResistance = parseFloat((parseShort(str.substring(4, 8), 16) * 0.01).toFixed(2));str = str.substring(8);break;case 0x0802:// Battery VoltagemyObj.battery = parseFloat((parseShort(str.substring(4, 8), 16) * 0.01).toFixed(2));str = str.substring(8);break;case 0x0586:// gyroscopemyObj.gyroscope_x = parseFloat((parseShort(str.substring(4, 8), 16) * 0.01).toFixed(2));myObj.gyroscope_y = parseFloat((parseShort(str.substring(8, 12), 16) * 0.01).toFixed(2));myObj.gyroscope_z = parseFloat((parseShort(str.substring(12, 16), 16) * 0.01).toFixed(2));str = str.substring(16);break;case 0x0902:// magnetometer xmyObj.magnetometer_x = parseFloat((parseShort(str.substring(4, 8), 16) * 0.01).toFixed(2));str = str.substring(8);break;case 0x0a02:// magnetometer ymyObj.magnetometer_y = parseFloat((parseShort(str.substring(4, 8), 16) * 0.01).toFixed(2));str = str.substring(8);break;case 0x0b02:// magnetometer zmyObj.magnetometer_z = parseFloat((parseShort(str.substring(4, 8), 16) * 0.01).toFixed(2));str = str.substring(8);break;default:str = str.substring(7);break;}}return myObj;}

Nota importante: Este código es una adaptación del decodificador realizado por el equipo de RAKWireless.

2. Configuración de integración de Ubidots

Primero que todo, si eres nuevo en Ubidots, por favor crea una cuenta aquí para completar los siguientes pasos.

Para establecer la comunicación con Ubidots, debes configurar una nueva integración en la misma aplicación utilizada en el paso anterior.


A continuación, dale un nombre personalizado a tu nueva integración y selecciona "clave predeterminada" en el menú desplegable de Clave de Acceso. La clave predeterminada representa una "contraseña" que se utiliza para autenticar tu aplicación en TTN. Finalmente, ingresa tu TOKEN de Ubidots donde se indica en la interfaz de usuario de TTN.


Una vez que toda la información esté proporcionada, ahora puedes presionar el botón “Agregar integración”.

3. Visualización de datos / Creación de Dashboard

Una vez que la integración de TTN esté configurada, puedes ver que el dispositivo de Ubidots se crea automáticamente en la pestaña “Dispositivos” en tu cuenta de Ubidots. Por defecto, el dispositivo se nombrará con el EUI del dispositivo, pero puedes cambiar su nombre por uno más amigable (Cómo ajustar el Nombre del Dispositivo y el Nombre de la Variable).


Ahora es el momento de construir tu propio dashboard para comenzar a monitorear los datos detectados por los dispositivos RAKwireless.

1. Ve a la sección Dashboard (Datos -> Dashboard) de tu cuenta de Ubidots.
2. Selecciona el icono más (+) ubicado en la parte superior derecha de la página. Luego selecciona los tipos de widget deseados para mostrar tus datos. Aprende más sobre los Dashboards de Ubidots.


Con Ubidots puedes visualizar y comprender fácilmente los datos, haciendo que la información sea accesible para los usuarios y permitiéndoles tomar decisiones informadas en los negocios.

Otros usuarios también encontraron útil:

¿Ha quedado contestada tu pregunta?