Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar un Pycom Pytrack a Ubidots usando Sigfox sobre HTTP
Conectar un Pycom Pytrack a Ubidots usando Sigfox sobre HTTP

Configura un rastreador GPS a través de Sigfox utilizando un escudo Pytrack y Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana

El Pytrack es un escudo habilitado para ubicación del módulo Pycom Expansion board y está diseñado específicamente para aplicaciones GPS como el seguimiento y monitoreo de activos. Este escudo se puede usar con cualquiera de sus módulos multi-red de Pycom, lo que le permite expandir sus módulos para incorporar el seguimiento GPS a través de Sigfox, LoRa, Wi-Fi, Bluetooth y LTE-M dual.

En esta guía, presentamos el escudo Pycom Pytrack conectado a un dispositivo Pycom SiPy. El SiPy es una placa de desarrollo multi-red (Sigfox, WiFi y BLE). Para más detalles, consulte la ficha técnica del SiPy. o consulte mis otros artículos sobre conectar su Pycom SiPy a Ubidots a través de Sigfox.

Requisitos

Paso a Paso

  1. Configuración del Hardware

  2. Configuración de un Callback para enviar datos a Ubidots

  3. Programando su Pytrack con Pymakr

1. Configuración del Hardware

Antes de comenzar, asegúrese de que su placa esté programada y actualizada completamente y correctamente:

Si esta es su primera vez trabajando con una placa Pycom, le recomendamos que consulte esta documentación de inicio para familiarizarse con las capacidades y especificaciones de su nueva placa.

Registro del SiPy con Sigfox

Para enviar un mensaje de Sigfox, necesita registrar su SiPy con el backend de Sigfox. Navegue a https://backend.sigfox.com/activate y luego seleccione Sigfox. Luego seleccione Pycom para continuar.

A continuación, deberá elegir el operador de Sigfox correcto para el país en el que activará su SiPy. Encuentre su país y seleccione el operador para continuar.

Luego ingrese su ID de Dispositivo y número PAC que se encuentran en el Dispositivo Pycom

Una vez que su dispositivo esté registrado en el backend de Sigfox, puede verificar su existencia en la sección Dispositivo. Captura de pantalla a continuación para referencia:

NOTA: No olvide conectar la antena a la placa. Si no lo hace, ¡Sigfox no podrá recibir mensajes de su dispositivo!

2. Configuración de un Callback para enviar datos a Ubidots

La gestión de los datos entre Sigfox y Ubidots utiliza un "Callback". El dispositivo Sigfox leerá los sensores y luego enviará los valores a Sigfox. Aquí, los datos se decodificarán utilizando la configuración de carga útil personalizada y luego los datos se retransmiten a Ubidots para visualización, almacenamiento y cálculo.

Ahora es el momento de configurar el callback. Vaya a la sección Dispositivo y haga clic en su dispositivo registrado:

A continuación, verifique la información de su dispositivo y seleccione "CALLBACKS" en el menú de la izquierda de la página, como se muestra a continuación:

Los callbacks de Sigfox le permiten informar datos a un sistema externo como Ubidots. Use los parámetros a continuación para enviar sus datos a la API de Ubidots.

  • Tipo: DATA - UPLINK

  • Canal: URL

  • Configuración de carga útil personalizada: lat::float:32:little-endian lng::float:32:little-endian

  • Patrón de URL: https://industrial.api.ubidots.com/api/v1.6/devices/{device}

  • Usar método HTTP: POST

  • Enviar SNI: Deshabilitar

  • Encabezados: x-auth-token - {your_ubidots_token}

  • Tipo de Contenido: application/json

  • Cuerpo:

{  "snr" : "{snr}",  "avgSnr" : "{avgSnr}",  "rssi" : "{rssi}",  "position":{"value":1,"context":{"lat":"{customData#lat}","lng":"{customData#lng}"}}}

NOTA IMPORTANTE: El campo "configuración de carga útil personalizada" le permite especificar cómo le gustaría que Sigfox decodificara la carga útil de su dispositivo. Podría, por ejemplo, desear decodificar un byte entrante como un entero sin signo. Un ejemplo de esto es la primera línea del ejemplo a continuación. Como desarrolladores, por favor codifiquen esta sección como lo consideren adecuado.

int1::uint:8 // Entero sin signo de 8 bits con nombre int1str::char:6 // Cadena de caracteres de 6 letras con nombre strb1::bool:7 // Booleano basado en el valor del bit en la posición 7 con nombre b1

Arriba, donde "int1" es el nombre del valor, "uint:8" especifica el tipo de dato y el número de bits, respectivamente. Para saber más sobre cómo construir la configuración de carga útil personalizada, consulte la documentación de Sigfox presionando el ícono de pregunta en la parte superior derecha de la página mostrada.

NOTA IMPORTANTE DE DESPLIEGUE: Ubidots y Sigfox se comunican a través de URL o Batch URL (utilizado para grandes despliegues). Este tutorial explica el canal estándar de URL. Si tiene una red de sensores a gran escala, comuníquese con support@ubidots.com para recibir información adicional sobre integraciones de Batch URL.

Para verificar si el mensaje se recibe en Sigfox, vaya a la sección Dispositivo, luego seleccione el ID del dispositivo:

A continuación, en el menú de la izquierda seleccione "mensaje" para visualizar los mensajes recibidos:

Tenga en cuenta que el "customData#..." del campo cuerpo contendrá la información real del sensor, en el ejemplo mostrado como "lat" y "lng". Si desea enviar más valores, debe asignarlos en la configuración de carga útil personalizada, luego asignarlos en el cuerpo siguiendo la misma estructura.

Siguiendo esta guía, configuramos dos variables "lat" y "lng" como float; puede usar cualquier formato deseado, pero asegúrese de que el dispositivo esté enviando valores a Sigfox utilizando el mismo formato asignado por usted en la configuración de carga útil personalizada.

Después de configurar el callback, su configuración del backend de Sigfox debería verse así:

Una vez que pueda verificar el callback, presione "OK".

3. Programando su Pytrack con Pymakr

Configurar el Pytrack con el Plugin Pymakr - (Atom)

Pycom desarrolló una serie de herramientas conocidas como Plugins Pymakr que le permiten conectar cualquier programa con su dispositivo Pycom. Si esta es su primera vez con Pymakr, consulte la documentación oficial de Pycom y siga todos los pasos proporcionados. Una vez que haya terminado con la "Configuración Inicial", podrá comunicarse con su Pycom SiPy utilizando el Plugin Pymakr.

1. Abra el editor Atom y active el plugin Pymakr.

2. Conecte la placa con el Pymakr (editor Atom). Una vez que la placa esté conectada, verá el mensaje "conectado" en el estado. Los dispositivos Pycom también se pueden acceder utilizando su consola, como se muestra a continuación.

NOTA IMPORTANTE: Este plugin nos permite conectar la placa a través de Serial USB REPL (UART) y a través de Telnet REPL. Basado en nuestra experiencia durante la integración, recomendamos usar Telnet.

Preguntas Frecuentes y Solución de Problemas: Si la placa está conectada a través de Serial USB y no puede acceder a la placa a través de la consola, conéctela al Pymakr por Telnet; consulte esta guía para obtener detalles adicionales sobre cómo establecer una conexión adecuada.

3. Cree un nuevo directorio llamado "ubidots" para gestionar los códigos y bibliotecas. Una vez creado el directorio, en el editor Atom seleccione Abrir un Proyecto, busque el directorio "ubidots," y ábralo.

4. En el archivo "ubidots" vamos a gestionar las bibliotecas y los códigos main/boot. Por favor, consulte y siga la estructura a continuación para construir su proyecto correctamente:

> ubidots  - boot.py  - main.py  > lib    - L76GNSS.py    - LIS2HH12.py    - pytrack.py

Primero, vamos a agregar la carpeta para las bibliotecas. Haga clic derecho en la carpeta "ubidots" y seleccione "Nueva carpeta", y asigne "lib" como nombre.

Ahora, vamos a agregar los archivos main y boot:

  • Haga clic derecho en la carpeta "ubidots" y seleccione "Nuevo Archivo", asigne "boot.py" como el nombre

  • Repita los pasos anteriores para crear el main llamado "main.py":

Una vez que ambos archivos estén creados, la estructura de su proyecto se verá como sigue:

5. Por último, debemos agregar los archivos de bibliotecas de Pytrack en la carpeta "lib". Usando el Repositorio de Pycom, descargue las Bibliotecas de Pytrack y guárdelas en la carpeta "lib". La estructura final de su proyecto se verá como sigue si se ejecuta correctamente:

Ahora es el momento de codificar su Pytrack

1. Copie y pegue el código a continuación en el archivo "boot.py":

from machine import UARTimport machineimport osuart = UART(0, baudrate=115200)os.dupterm(uart)machine.main('main.py')

Suba y guarde su código en el "boot.py" file.

2. A continuación, copie/pegue y suba y guarde el código a continuación en el archivo "main.py":

from network import Sigfoximport socketimport structimport timefrom L76GNSS import L76GNSSfrom pytrack import Pytrackinit_timer = time.time()# Constructorpy = Pytrack()l76 = L76GNSS(py, timeout=60)# init Sigfox Zone for RCZ1sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=Sigfox.RCZ4)# create a Sigfox sockets = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW)# make the socket blockings.setblocking(True)# configure it as DOWNLINK specified by 'True's.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, False)while(True):    # time-counter configurations    final_timer = time.time()    diff = final_timer - init_timer    # save the coordinates in a new variable    coord = l76.coordinates()    # verify the coordinates received    if coord == (None,  None):        print("Getting Location...")        continue    # time established to send the next Sigfox message    # diff <= 900 takes 15 min approximately to send the next message    if diff <= 900 and coord != (None, None):        print("Waiting for send the next Sigfox message")        continue    # send the Coordinates to Sigfox    s.send(struct.pack("<f",  float(coord[0]))+struct.pack("<f",  float(coord[1])))    print("Coordinates sent -> lat: " + str(coord[0]) + ", lng: " + str(coord[1]))    # reset the timer    init_timer = final_timer

Guarde su código una vez que lo haya subido al "main.py" file.

3. A continuación, sincronice el proyecto. Presione el icono "Sync" desde la consola, o seleccione Paquetes > Pymakr > Sincronizar proyecto.

NOTA: Como puede ver en la última parte del código "main.py", los valores se envían siguiendo el mismo formato asignado en la configuración de carga útil personalizada.

  • Código: s.send(struct.pack("<f", float(coord[0]))+struct.pack("<f", float(coord[1])))

  • Configuración de carga útil personalizada (Sigfox): lat::float:32:little-endian lng::float:32:little-endian

Tenga en cuenta que la "Etiqueta de API del Dispositivo" será la misma que el campo Sigfox {device}.

Si desea cambiar los nombres de su dispositivo y variable a uno más amigable, consulte este artículo del Centro de Ayuda de Ubidots.

4. Una vez que el proyecto esté correctamente sincronizado, debe esperar un par de minutos para que el módulo GPS capte la latitud y longitud. El código proporcionado le da al módulo GNSS 60 segundos de tiempo de espera para captar las coordenadas; si el dispositivo no puede transmitir las coordenadas durante el tiempo especificado, recibirá el mensaje "Obteniendo ubicación..." una vez por minuto hasta que se reciba la ubicación del dispositivo. A continuación se muestra un ejemplo típico de esta experiencia de "Obteniendo ubicación".

5. Una vez que el módulo esté recibiendo coordenadas correctamente, tomará aproximadamente 15 minutos enviar el primer mensaje de Sigfox. Una vez que haya recibido las primeras coordenadas en la consola, el mensaje también estará disponible en el backend de Sigfox y luego en Ubidots para la implementación requerida de su aplicación.

Datos al backend de Sigfox:

Datos mostrados en Ubidots:

Este código de ejemplo sube datos cada 15 minutos para mantener bajos los costos de datos. Si desea tiempos incrementales de más/menos de 15 minutos, use el limit del diff condicional para ajustar la tasa de envío.

if diff <= (limit) and coord != (None, None):

4. Resumen

A través de esta guía, hicimos un simple rastreador GPS utilizando Sigfox. Más allá del seguimiento de dispositivos, el Pytrack tiene muchas otras características más allá del GPS para maximizar la eficiencia de sus aplicaciones.

Si desea aprender a gestionar mensajes Uplink y Downlink, utilizando Callbacks de Sigfox y UbiFunction Engine, consulte las guías a continuación:

Ahora es el momento de crear un tablero para controlar y gestionar las variables de su dispositivo Pycom. Para aprender más sobre los widgets y eventos de Ubidots, consulte estos útiles tutoriales en video.

Otros lectores también han encontrado útil...

¿Ha quedado contestada tu pregunta?