Ir al contenido principal

Conectar sensores IoT UnaSense a Ubidots

Aprende a conectar el sensor inalámbrico de Temperatura y Humedad de UnaBiz a Ubidots.

Escrito por Santiago Pachon Robayo

Siguiendo esta guía, podrás decodificar y monitorear los datos de temperatura y humedad del sensor UnaSense cuando esté configurado en Modo Temporizador, lo que significa que envía la temperatura y el nivel de humedad a la tasa designada.
​

Requisitos

1. Entendiendo los datos

La siguiente estructura de carga útil es un ejemplo de los datos que se envían de Sigfox a Ubidots específicamente para un sensor UnaSense.
​

{"device_id": "21O561D""data": "018b0925092f2035202c", }

Ahora, aquí está cómo se está decodificando el data de acuerdo con la documentación para obtener los valores de temperatura y humedad. Es importante tener en cuenta el modo en el que está configurado el sensor, en este caso, dado que el modo es Temporizador, la decodificación es la siguiente:
​
​Datos de muestra del sensor Sigfox: 018b0925092f2035202c
​

  • 0x01 - Modo Byte #0

  • 0x8b - Intervalo Byte #1

  • 0x0925 - Temperatura 1/2 Bytes #(2 - 3)

  • 0x092f - Temperatura 2/2 Bytes #(4 - 5)

  • 0x2035 - Humedad 1/2 Bytes #(6 - 7)

  • 0x202c - Humedad 2/2 Bytes #(8 - 9)

Bytes en Total: 10
​
​NOTA: Como puedes notar, la temperatura y la humedad tienen dos partes de 2 bytes cada una. Esto significa que en total, la temperatura tiene 4 bytes (lo mismo con la humedad) y estos datos necesitan ser procesados de la siguiente manera:
​
Temperatura = (Temperatura 1/2 + Temperatura 2/2) / 2
Humedad = (Humedad 1/2 + Humedad 2/2) / 2
​
Después de calcular el promedio, tanto la Temperatura como la Humedad deben ser multiplicadas por 0.1, lo que se puede traducir en dividir el valor por 100.


​

2. Función de decodificación en el Plugin de Sigfox

Paso 1: Ve al plugin de Sigfox y abre la opción de Decodificador.

Paso 2: Encuentra la sección de función de decodificación. Aquí es donde comenzaremos a decodificar los datos que provienen del UnaSense.
​

Paso 3: Copia y pega el código a continuación en el editor de código reemplazando la función decode_data():
​

def decode_data(hex_array):payload = {}temperature = (int(hex_array[2:4].hex(), 16) + int(hex_array[4:6].hex(), 16))/2humidity = (int(hex_array[6:8].hex(), 16) + int(hex_array[8:10].hex(), 16))/2payload["temperature"] = temperature/100payload["humidity"] = humidity/100return payload

Guarda el código haciendo clic en el botón "GUARDAR & HACER VIVO".
​
​

3. Prueba de la función

Después de seguir los pasos anteriores, tu decodificador debería verse como la imagen a continuación, y para probar la función, por favor ingresa la carga útil de prueba JSON dentro de las llaves y haz clic en "EJECUCIÓN DE PRUEBA".

image.png

El resultado de la EJECUCIÓN DE PRUEBA se puede ver en la consola y debería devolver como salida un código HTTP 201 indicando que los datos fueron decodificados con éxito. Además, en la sección de registro debería devolver los valores de temperatura y humedad.

image.png

Otros usuarios también encontraron útil...

¿Ha quedado contestada tu pregunta?