Ubidots y Seeed Studio se han asociado para crear una integración preconstruida para Sensores SenseCAP LoRaWAN, permitiendo a los usuarios enviar fácilmente datos desde la consola de Helium a Ubidots utilizando Plugins.
Este Plugin está optimizado para decodificar automáticamente el esquema JSON de Helium, analizando elementos como los metadatos de las gateways para que no tengas que hacerlo tú.
Requisitos
1. Creando un Plugin SenseCAP+Helium
El Plugin SenseCAP es una función sin servidor que expone una URL de Endpoint HTTP privada optimizada para decodificar la carga JSON de uplink de Helium. Cada vez que se recibe una solicitud HTTP POST en dicha URL, se ejecutará una función de decodificación predefinida.
Para crear tu URL de Endpoint HTTP privada:
En tu cuenta de Ubidots, ve a la pestaña "Dispositivos", haz clic en "Plugins", luego haz clic en el icono "+" para crear un nuevo Plugin. Busca el SenseCAP + Helium y haz clic en él:
Las instrucciones del Plugin aparecerán. Haz clic en el icono "Siguiente", luego revisa los parámetros de entrada:
Token de Ubidots: Selecciona el token de Ubidots que te gustaría usar para este Plugin. Recomendamos crear un nuevo token dedicado solo a este Plugin, en caso de que necesites aumentar su límite de tasa en el futuro.
3. Termina el proceso y un nuevo plugin aparecerá en la lista de Plugins:
4. Haz clic en el Plugin SenseCAP+Helium recién creado, haz clic en la pestaña "Decoder", y copia la "URL de Endpoint HTTPs". La estructura de la URL es
https://dataplugin.ubidots.com/api/web-hook/<PLUGIN-ID>
Además, ten a mano tu TOKEN de Ubidots, será necesario en los siguientes pasos.
2. Agregar un nodo sensor SenseCAP a la consola de Helium
Antes de conectar el sensor SenseCAP con la consola de Helium, asegúrate de seguir el proceso de instalación basado en la siguiente documentación:
Paso 1: Lee el QR del sensor para obtener el DevEUI y el DeviceCode del nodo:
La AppEUI y AppKey del dispositivo sensor SenseCAP han sido grabadas en el dispositivo por Seeed Studio. Para recuperarlas, solo necesitas hacer una solicitud API HTTP a la siguiente URL.
https://sensecap.seeed.cc/makerapi/device/view_device_info?nodeEui=PUT-SENSOREUI-HERE&deviceCode=PUT-SENSOR-KEY-HERE
Asegúrate de ingresar el nodeEui y deviceCode de tu propio sensor, recibirás una respuesta, similar a la siguiente, que contiene el AppKey que será necesario para agregar el sensor a la consola de Helium.
{"code": "0","data": {"nodeEui": "2CF7F1212100001B","deviceCode": "7D497F49D0D05185","lorawanInformation": {"dev_eui": "2CF7F1212100001B","app_eui": "8000000000000008","app_key": "3BF3D4C5744A057E0A1A61F4800EB09B"}}}
Provisionamiento del dispositivo en Helium
Paso 1: Ve a la consola de Helium y registra tu cuenta.
Paso 2: Haz clic en Dispositivos y agrega un nuevo dispositivo.
Paso 3: Completa el formulario de la siguiente manera:
Nombre: configuración personalizada
DevEUI: EUI del Dispositivo Sensor obtenido en el paso 1
AppEUI: 00 00 00 00 00 00 00 00
AppKey: AppKey del Sensor obtenido en el paso 1
Paso 4: Guarda el dispositivo.
Paso 5: Agrega una nueva etiqueta, luego agrega la etiqueta a un dispositivo.
Paso 6: Haz clic en Integraciones → Agregar Nueva Integración → HTTP.
Paso 7: Pega la URL de UbiFunction HTTPs en la URL de Endpoint.
Paso 8: Selecciona POST para el método HTTP.
Paso 9: En la sección de Encabezados HTTP, agrega uno con la clave X-Auth-Token y establece su valor en tu TOKEN de Ubidots.
Paso 10: Dale un nombre a la nueva integración y haz clic en el botón Agregar Integración.
Paso 11: Haz clic en Flujos.
Paso 12: Arrastra y suelta el bloque de Etiqueta creado en el paso 5.
Paso 13: Arrastra y suelta el bloque de Integración creado en los pasos 6 a 10.
Paso 14: Conecta los dos bloques y guarda.
3. Editando el tipo de dispositivo del Plugin
Después de crear un Plugin SenseCAP+Helium y hacer clic en él, verás una pestaña "Decoder", que contiene una "Función de Decodificación" que puedes editar a tu antojo, para decodificar tus tramas de datos. Por defecto, verás un decodificador de muestra pre-cargado que hace lo siguiente:
Crear variables de RSSI y SNR para rastrear las gateways que reciben señales de tu dispositivo.
Crear un contador de tramas, y una variable de Puerto.
Decodificar la carga, extraer las mediciones del sensor y los paquetes de información de la batería y enviar los valores extraídos a Ubidots.
Ubidots creará automáticamente un dispositivo cada vez que se reciba una carga de un nuevo dispositivo. Esto te ahorra la necesidad de crear manualmente cientos o miles de dispositivos, o copiar y pegar los DevEUI de una plataforma a otra.
Un tipo de dispositivo de Ubidots será creado y vinculado a este plugin. Esto te permite hacer cambios por lotes a todos los dispositivos que reciben datos a través de este plugin. El tipo de dispositivo será creado en función del tipo de sensor que hayas conectado.
4. Solución de problemas
La mejor manera de probar el plugin es haciendo una solicitud HTTP a la URL del Plugin. Simplemente toma la carga JSON de muestra a continuación y envíala en una solicitud HTTP POST utilizando un cliente HTTP de tu elección (Insomnia o similar). Asegúrate de agregar el encabezado "Content-Type:application/JSON":
Carga JSON de Helium de muestra:
{"app_eui": "8000000000000008","dev_eui": "2CF7F1212100001B","devaddr": "19000048","downlink_url": "https://console.helium.com/api/v1/down/2167447e-5dd5-4f54-82c9-e4e36d107486/cIT7OoCgWHAlaGERnqjDD15dPTfRGPFv/7bcf175f-dfa5-4ec3-816f-bc0d34f14f3d","fcnt": 725,"hotspots": [{"channel": -53,"frequency": 904.5999755859375,"hold_time": 1124,"id": "112pHUTmRpaHPrcZb7NV5qgY1F8A912uJxa4kH7T4iPgeD3ZTyZ1","lat": 6.2028613336869425,"long": -75.55880552965397,"name": "recumbent-aqua-locust","reported_at": 1638422627997,"rssi": -104,"snr": -8.199999809265137,"spreading": "SF8BW500","status": "success"}],"id": "7bcf175f-dfa5-4ec3-816f-bc0d34f14f3d","metadata": {"adr_allowed": false,"cf_list_enabled": false,"labels": [{"id": "3c13bf39-9864-4822-9083-c90bf1eb472d","name": "ubidots","organization_id": "7b79cd5e-d250-4327-9f8c-e454b997f11a"},{"id": "69c9eef6-dc45-40cd-8e10-32dfa28c1474","name": "SenseCAP-TH-Node","organization_id": "7b79cd5e-d250-4327-9f8c-e454b997f11a"}],"multi_buy": 1,"organization_id": "7b79cd5e-d250-4327-9f8c-e454b997f11a"},"name": "Sensor de Intensidad de Luz Inalámbrico SenseCAP","payload": "AQMQAAAAAOgn","payload_size": 9,"port": 2,"reported_at": 1638422627997,"type": "uplink","uuid": "38c5c0b4-5327-4d7c-81cf-18ed6710a8d9"}
Envía la carga anterior en una solicitud HTTP POST a la URL del Plugin:
Ten en cuenta que la primera vez que se ejecute el Plugin, puede tardar unos segundos en responder. Para verificar los registros del Plugin, ve al Plugin, haz clic en la sección "Registros" y deberías ver una lista de las últimas ejecuciones.
5. Comentarios y sugerencias
No dudes en publicar preguntas o sugerencias en nuestro portal de la comunidad, o envíanos un correo a support@ubidots.com.