Siguiendo esta guía, podrás decodificar los datos del sensor UnaMotion para contar y detectar el movimiento humano dentro de su alcance de monitoreo.
La funcionalidad del UnaMotion depende de su configuración de Modo, puede ser:
Modo temporizador: Contar el número de movimientos humanos durante un período de tiempo.
Modo de evento: Detectar movimiento humano.
Requisitos
Una cuenta de Ubidots activa.
Una cuenta de Sigfox activa.
Sensor UnaMotion ya transmitiendo datos a Sigfox y Ubidots (Ver Plugins: Conectar Sigfox con Ubidots)
1. Entendiendo los datos
Así es como se están decodificando los datos según la documentación para contar el número de movimientos o detectar movimiento. Es importante tener en cuenta que la decodificación depende del modo en el que el sensor está configurado.
1.1. Datos del modo temporizador
La siguiente estructura de carga útil es un ejemplo de los datos enviados desde Sigfox a Ubidots específicamente para un sensor UnaMotion configurado para el Modo Temporizador.
{"device_id": "41DAD4""data": "018b05050707050605060102", }
Datos de muestra del sensor Sigfox: 018b05050707050605060102
0x01
- Modo Byte #00x8b
- Intervalo Byte #10x05
- Movimiento 1/10 Byte #20x05
- Movimiento 2/10 Byte #30x07
- Movimiento 3/10 Byte #40x07
- Movimiento 4/10 Byte #50x05
- Movimiento 5/10 Byte #60x06
- Movimiento 6/10 Byte #70x05
- Movimiento 7/10 Byte #80x06
- Movimiento 8/10 Byte #90x01
- Movimiento 9/10 Byte #100x02
- Movimiento 10/10 Byte #11
Bytes en total: 12
1.2. Datos del modo de evento
La siguiente estructura de carga útil es un ejemplo de los datos enviados desde Sigfox a Ubidots específicamente para un sensor UnaMotion configurado para el Modo de Evento.
{"device_id": "41DAD4""data": "0201", }
Datos de muestra del sensor Sigfox: 0201
0x02
- Modo Byte #00x01
- Estado Byte #1
Bytes en total: 2
NOTA: El byte de estado representa una forma de detectar movimiento, puede ser:
0x00
: No se detectó movimiento0x01
: Movimiento detectado
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 UnaMotion.
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 = {} status = hex_array[0] if status == 0 or status == 4: voltage = (int(hex_array[1:3].hex(), 16))/1000 payload["voltage"] = voltage elif status == 1: payload["motion_count"] = int(hex_array[2:12].hex(), 16) elif status == 2: payload["state"] = int(hex_array[1:2].hex(),16) return payload
Guarda el código haciendo clic en el botón "GUARDAR & HACER VIVO".