Ir al contenido principal
Todas las coleccionesGuías de usuario
Plugins: Conectar Sigfox con Ubidots
Plugins: Conectar Sigfox con Ubidots

Integrar tus dispositivos Sigfox a Ubidots

Santiago Pachon Robayo avatar
Escrito por Santiago Pachon Robayo
Actualizado hace más de 2 meses

Sigfox es una solución económica, confiable y de bajo consumo para conectar sensores y actuadores con una red dedicada basada en radio, comprometida con la integración de dispositivos en IoT. Siguiendo los pasos proporcionados en este tutorial, podrás recuperar, decodificar y mostrar datos de Sigfox en tu cuenta de Ubidots sin tener que preocuparte por programar solicitudes de API. Concéntrate en decodificar tus datos y deja el resto a Ubidots utilizando este plugin.

Requisitos

1. Instalación del plugin de Sigfox en tu cuenta de Ubidots

  • Paso 1: Inicia sesión en tu cuenta de Ubidots, luego ve a dispositivos -> plugins

  • Paso 2: Haz clic en Crear Plugin de Datos

  • Paso 3: Instala el plugin, busca el plugin de Sigfox como se ve a continuación y haz clic en él

    verás una descripción del plugin y su versión actual, luego haz clic en continuar.

  • Paso 4: Configura el plugin ingresando la etiqueta del Tipo de Dispositivo que deseas asignar, luego selecciona el token de la cuenta que deseas usar de la lista desplegable.

NOTA: Se creará un Tipo de Dispositivo utilizando una etiqueta de Tipo, tu dispositivo Sigfox se creará bajo ese tipo.

  • Paso 5: Ingresa un nombre y una descripción para tu plugin, luego haz clic en continuar.

  • Paso 6: Ve a Decodificador. Ten en cuenta que se te proporcionará una URL de endpoint utilizada para codificar la función de decodificación, debes ingresar esa URL más adelante en configuración de callback de Sigfox.

Volver a la tabla de contenido

2. Programa tu función de decodificación.

Se te proporcionará un entorno de desarrollo donde podrás programar y decodificar datos de Sigfox utilizando Python 3.7 y devolver un JSON compatible con Ubidots.

Este entorno de programación se divide en 2 secciones

  1. Prueba de Payload: Allí ingresas un payload de muestra que simula los datos entrantes de Sigfox en formato JSON, al hacer clic en "Ejecutar prueba", la función de decodificación se ejecutará utilizando el Payload de prueba como entrada. La salida se mostrará en la consola.

  2. Editor de Código: Allí ingresas el cuerpo de tu función de Python donde se indica, una vez que estés satisfecho con el código, haz clic en el botón "GUARDAR&HACER VIVO" para guardarlo.

Volver a la tabla de contenido

3. Ejemplo de decodificación

Es importante aclarar que los dispositivos Sigfox transmiten datos en diferentes estructuras de payload dependiendo del fabricante del dispositivo. Se sugiere revisar la hoja de datos proporcionada por el fabricante para entender el payload codificado, su estructura y cómo debe ser decodificado antes de ser publicado en Ubidots. Para fines de prueba, supongamos que tu callback de Sigfox está configurado para enviar los datos utilizando la siguiente estructura JSON a Ubidots:

{"device_id": "adff55d1","data": "4fc1b6c81cc23c5514"}

Datos de muestra del dispositivo Sigfox: 4fc1b6c81cc23c5514

¿Cómo hacemos sentido de este payload codificado en big-endian?

Bueno, así es como se distribuyen los bytes:

  • 0x4F - Temperatura - Byte #0 (1 byte)

  • 0xC1B6C81C - Latitud - Bytes (1 - 4) (4 bytes)

  • 0xC23C5514 - Longitud - Bytes (5 - 8) (4 bytes)

Bytes en Total: 9

3.1 Programa el cuerpo de la función de decodificación de la siguiente manera.

Aquí está la función completa decode_data() si deseas copiar y pegarla:

def decode_data(hex_array):  payload = {}  temp = int(hex_array[0])  lat = round(struct.unpack('>f', hex_array[1:5])[0],2)  ln = round(struct.unpack('>f', hex_array[5:10])[0],2)  payload['temperature'] = {'value': temp, 'context':{'lat':lat, 'lng':ln}}  return payload


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

3.2 Prueba el payload

Ingresa el payload de prueba JSON dentro de las llaves y haz clic en "EJECUTAR PRUEBA".

Como resultado, la salida que se ve en la consola debería devolver un código HTTP 201, indicando que los datos fueron decodificados y representados exitosamente como un punto dentro de tu cuenta de Ubidots.

3.3 Verifica los datos subidos en Ubidots

En tu cuenta, ve a dispositivos->Tipos, luego a tu Tipo en este caso, "sigfox-devices" y finalmente al dispositivo: "ad:ff:55:d1", allí verás la variable creada.

Haz clic en la variable "temperatura" para verificar los datos decodificados de Sigfox.

Volver a la tabla de contenido

4. Configuración del Callback de Sigfox a Ubidots

La transferencia de datos entre Sigfox y Ubidots requiere un "Callback". El hardware de Sigfox leerá los sensores y enviará los datos recopilados (mensajes) a una estación base de Sigfox para ser reenviados a su backend. En este punto, tus datos ya están en la nube (en internet). Ahora, es hora de hacer que este mensaje sea valioso utilizando una plataforma IoT como Ubidots al implementar un Callback de Sigfox.

Los Callbacks de Sigfox utilizan solicitudes HTTP para transmitir datos de manera bidireccional con cualquier servicio en la nube. En este caso, vamos a configurar el Callback de Sigfox para reenviar datos a Ubidots siguiendo estos pasos:

  • Paso 2: Selecciona cualquier dispositivo de tu lista de dispositivos, para este ejemplo, utilizaremos uno llamado "Oyster_Tracker".

  • Paso 3: Haz clic en "CALLBACKS" en el menú del lado izquierdo

  • Paso 4: Crea un Callback "Nuevo" como puedes ver a continuación en la esquina superior derecha de la imagen.

  • Paso 5: Selecciona "Callback personalizado".

Los callbacks de Sigfox te permiten transferir datos a un sistema externo como Ubidots.

  • Paso 6: Configura un callback a la API de Ubidots, utilizando los siguientes parámetros:

Tipo: DATA - UPLINK

Canal: URL

Configuración de payload personalizado: Déjalo en blanco

Patrón de URL: Ahí va la URL generada por el plugin, consulta sección 1, paso 6

Usar método HTTP: POST

Encabezado: Déjalo en blanco

Content-Type: application/json

Cuerpo:

{  "device_id": "{device}",  "data":"{data}"}
  • Una vez configurado, el callback debería verse así.

NOTA IMPORTANTE: Para evitar problemas de autenticación entre el callback de Sigfox y Ubidots, asegúrate de marcar la opción “ENVIAR SNI”.

Una vez que hayas verificado el callback, presiona "OK".

En este punto, los datos se decodificarán según el código ya configurado en tu función de decodificación, luego se publicarán los datos decodificados en tu cuenta de Ubidots.

NOTA IMPORTANTE DE DESPLIEGUE: Ubidots y Sigfox se comunican a través de URL o Batch URL (utilizado para grandes despliegues). Este artículo cubre el canal estándar de URL. Si tienes una red de sensores a gran escala, por favor contacta a sales@ubidots.com para recibir información adicional sobre integraciones de Batch URL.

Volver a la tabla de contenido


¿Ha quedado contestada tu pregunta?