Con Sigfox, Wifi y BLE, el SiPy es el único microcontrolador habilitado para MicroPython en el mercado hoy en día – el hardware es perfecto para aplicaciones IoT en casa, en la oficina o en movimiento. Con el último chipset de Espressif, el SiPy ofrece una combinación perfecta de potencia, usabilidad y flexibilidad. Sigfox es una buena mezcla de velocidad de implementación y cobertura (dependiendo del área en la que se esté implementando).
No importa el tipo de placa que estés usando WiPy, SiPy, LoPy o FiPy, toda la familia Pycom se comunica con Ubidots de la misma manera.
Para más información sobre la familia de hardware de Pycom, solo haz clic aquí.
Siguiendo esta guía, podrás enviar datos desde tu SiPy a Ubidots utilizando la red Sigfox a través de HTTP.
Requisitos
Placa SiPy
Cable micro-USB
Paso a Paso
Configuración del hardware
Configuración del callback de Sigfox a Ubidots
Enviando (POST) datos a Ubidots
Resumen
1. Configuración del hardware
Configuración del hardware
Antes de comenzar, es importante verificar los puntos a continuación para asegurarte de que tu placa esté programada correctamente:
Si esta es tu primera vez trabajando con una placa Pycom, te recomendamos que consultes esta guía de inicio y luego regreses a esta guía para más instrucciones una vez que te hayas familiarizado más.
1. Usando el plugin Pymakr - (Atom)
Para hacerlo lo más fácil posible, el equipo de Pycom desarrolló una serie de herramientas conocidas como Plugins Pymakr, que te permiten conectarte a cualquier programa con tu dispositivo Pycom.
Para comenzar con tu Pymakr, consulta la documentación de instalación de Pycom y sigue todos los pasos proporcionados.
Una vez que hayas terminado la "Configuración inicial", ahora podrás comunicarte con tu Pycom SiPy usando el plugin Pymakr y puedes continuar con esta guía.
2. Registrando el SiPy con Sigfox
Para enviar un mensaje de Sigfox, necesitarás registrar tu SiPy con el backend de Sigfox. Navega a https://backend.sigfox.com/activate y luego selecciona Sigfox. Luego selecciona Pycom para continuar.
A continuación, necesitarás elegir un operador de Sigfox para el país en el que activarás tu SiPy. Encuentra tu país y selecciona el operador para continuar.
Ve a la documentación de Pycom para saber cómo obtener el ID del dispositivo y el número PAC.
Una vez que tu dispositivo esté registrado en el backend de Sigfox, deberías verlo en la sección Dispositivo como se muestra en la imagen a continuación:
NOTA: No olvides conectar la antena a la placa.
2. Configuración del callback de Sigfox a la nube de Ubidots
La gestión de los datos entre Sigfox y Ubidots se realiza a través de "Callbacks".
El dispositivo Sigfox leerá los sensores y enviará los valores al backend de Sigfox. Una vez que los datos sean recibidos en el backend de Sigfox, podrás configurar un Callback de Sigfox que te permitirá manejar los datos entrantes con una plataforma de terceros utilizando solicitudes HTTP.
El callback de Sigfox te permite decodificar los datos entrantes de los sensores dentro del campo "configuración de carga útil personalizada". Una vez que los datos son decodificados, el mensaje POST un cuerpo a Ubidots que contiene los datos previamente decodificados.
NOTA DE DESARROLLO: En los siguientes pasos encontrarás una explicación detallada de cómo gestionar los datos en la configuración de carga útil personalizada.
Ahora es el momento de configurar el callback. Ve a la sección Dispositivo y haz clic en el dispositivo registrado:
A continuación, verifica la información de tu dispositivo y selecciona "CALLBACKS" en el menú de la izquierda de la página, como puedes ver a continuación:
Los callbacks de Sigfox te permiten reportar datos a un sistema externo como Ubidots. Para configurar un callback a la API de Ubidots, utiliza estos parámetros:
Tipo:
DATA
-UPLINK
Canal:
URL
Configuración de carga útil personalizada:
temperature::float:32:little-endian pressure::uint:8
Patrón de URL:
http://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":0,"context":{"lat":"{lat}","lng":"{lng}"}}, "temperature" : {"value":"{customData#temperature}"}, "pressure" : {"value":"{customData#pressure}"}}
NOTA IMPORTANTE: El campo "configuración de carga útil personalizada" te permite especificar cómo te gustaría que Sigfox decodificara la carga útil de tu dispositivo. Podrías, 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:
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
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, consulta la documentación de Sigfox presionando el ícono de pregunta para mostrar ayuda.
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 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.
La carga útil de Sigfox decodificará el mensaje y será recibida en el lado de Ubidots sin importar el formato utilizado en ella, pero ten en cuenta que debes establecer el mismo formato en el código de tu dispositivo porque si no, los datos no serán recibidos por Sigfox. Para verificar si el mensaje es recibido en Sigfox, ve a la sección Dispositivo, luego selecciona el ID del dispositivo:
A continuación, en el menú de la izquierda selecciona "mensaje" para visualizar los mensajes recibidos:
Ten en cuenta que el "customData#..." del campo cuerpo contendrá la información real del sensor, en el ejemplo mostrado como "temperatura" y "presión". Si deseas enviar más valores, debes asignarlo en la configuración de carga útil personalizada, luego asignarlo en el cuerpo siguiendo la misma estructura.
Siguiendo esta guía, configuramos dos variables "temperatura" como float y "presión" como uint; Puedes usar el formato que desees, pero ten en cuenta que el dispositivo debe enviar los valores utilizando el mismo formato asignado por ti en la configuración de carga útil personalizada.
La temperatura está configurada como "float" que puede ser de 16, 32 o 64 bits, opcionalmente el endianness para floats de múltiples bytes, y opcionalmente el desplazamiento de bits donde comenzar la lectura del primer byte. Dependiendo de los bits que asignes, podrás enviar 2 valores (16 bits) y 4 valores (32 bits)
temperature::float:32:little-endian
La presión está configurada como "uint", los parámetros son el número de bits a incluir en el valor, opcionalmente el endianness para enteros de múltiples bytes, y opcionalmente el desplazamiento de bits donde comenzar la lectura del primer byte. Usando esta configuración podrás enviar 12 valores.
pressure::uint:8
NOTA: Para saber más sobre cómo construir la configuración de carga útil personalizada, consulta la documentación de Sigfox presionando el ícono de pregunta para mostrar ayuda.
Después de configurar el callback, tu configuración del backend de Sigfox debería verse así:
Una vez que verifiques el callback, presiona "OK". Ahora tu callback está listo y habilitado para publicar datos en la nube de Ubidots.
3. Enviando (POST) datos a Ubidots
Configuración del proyecto
1. Abre el editor Atom, y activa el plugin Pymakr.
2. Conecta la placa con el editor Atom. Una vez que la placa esté conectada, verás el mensaje "conectado" en el estado:
3. Para comenzar, crea un nuevo directorio llamado "ubidots" para gestionar los códigos y bibliotecas. Una vez que se crea el directorio, en el editor Atom selecciona Abrir un proyecto, y busca el directorio "ubidots," que fue creado previamente y ábrelo.
4. En el archivo "ubidots" se gestionarán las bibliotecas y los códigos main/boot. Por favor, consulta y sigue la estructura a continuación para construir tu proyecto correctamente:
> ubidots - boot.py - main.py > lib
NOTA DE DESPLIEGUE: En caso de que necesites usar una biblioteca de micro-python externa, agrega una carpeta para la gestión de las bibliotecas. Haz clic derecho en la carpeta "ubidots" y selecciona "Nueva carpeta", asigna "lib" como nombre.
Ahora, vamos a agregar los archivos main y boot:
Haz clic derecho en la carpeta "ubidots" y selecciona "Nuevo archivo", asigna "boot.py" como el nombre
Repite los pasos anteriores para crear el main llamado "main.py":
Una vez que ambos archivos estén creados, la estructura de tu proyecto se verá así:
Hora de codificar
1. A continuación, copia y pega 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')
Guarda tu código una vez que lo hayas subido al archivo "boot.py".
2. A continuación, copia y pega el código a continuación en el archivo "main.py":
from network import Sigfoximport socketimport struct# init Sigfox for RCZ1 (Europe)sigfox = 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, True)# send values as little-endian and int, request DOWNLINKs.send(struct.pack("<f", 23.2)+struct.pack("<B", 45))# await DOWNLINK messages.recv(32)
Guarda tu código una vez que lo hayas subido al archivo "main.py".
3. Ahora sincroniza el proyecto. Presiona el ícono "Sync" desde la consola, o selecciona Paquetes > Pymakr > Sincronizar proyecto.
NOTA: Como puedes 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", 23.2)+struct.pack("<B", 45))
Configuración de carga útil personalizada:
temperature::float:32:little-endian pressure::uint:8
Ve a tu cuenta de Ubidots para visualizar el nuevo dispositivo creado con las variables.
Ten en cuenta que la "Etiqueta de API del dispositivo" será la misma que el campo Sigfox {device}.
NOTA IMPORTANTE: Si deseas devolver mensajes del dispositivo donde al menos un callback ha fallado, consulta la API de Sigfox para saber cómo implementarlo.
4. Resumen
Con esto, tu Callback de Sigfox está listo para transmitir los datos entrantes de los dispositivos Sigfox a Ubidots.
Si deseas aprender cómo gestionar mensajes Uplink y Downlink, utilizando Callbacks de Sigfox y UbiFunction Engine, consulta las guías a continuación:
Ahora es el momento de crear un dashboard para controlar y gestionar las variables de tu dispositivo Sigfox. Para aprender más sobre los widgets y eventos de Ubidots, consulta estos tutoriales en video.
Otros lectores también han encontrado útil...