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
Una cuenta activa de Ubidots
Una cuenta activa de Sigfox.
Sensor UnaSense ya transmitiendo datos a Sigfox y Ubidots (Ver Plugins: Conectar Sigfox con Ubidots)
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 #00x8b -
Intervalo Byte #10x0925 -
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".
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.