Requisitos
Una cuenta activa de Ubidots
Una cuenta activa en la consola de Helium con algunos DC
Un teléfono celular que soporte Google Play Store o AppStore, así como Bluetooth.
1. Instalar la aplicación SenseCAP Mate y configurar el rastreador
Escanea el siguiente código QR. Te llevará a la página oficial de descarga de la aplicación SenseCAP Mate de Seeed Studio.
Una vez instalada, activa el Bluetooth en tu celular y lanza la aplicación. Si no tienes una cuenta, tendrás que registrarte para usar la aplicación.
Después de eso, presiona y mantén presionado el botón del rastreador durante al menos 3 segundos o hasta que el LED comience a parpadear. Luego, de la lista de dispositivos, selecciona Tracker T1000
Toca tu dispositivo:
Ve a la pestaña de configuración y luego a la pestaña de LoRa. Allí selecciona como plataforma Helium y selecciona el plan de frecuencia de acuerdo a tus requisitos. Además, asegúrate de copiar el Device EUI, APP EUI y APP Key ya que los necesitarás en pasos posteriores. Una vez terminado, toca el botón Enviar para guardar la configuración.
2. Registrar el rastreador en Helium LNS
Inicia sesión en tu consola de Helium, luego ve a la sección “Dispositivos” y haz clic en el botón “Agregar dispositivo”
Completa los campos requeridos como el nombre del dispositivo, las credenciales de LoRaWAN, etc. Luego haz clic en el botón Guardar dispositivo.
3. Crear la función decodificadora en Helium
El siguiente paso es configurar la función que decodificará los bytes en bruto en una forma legible por humanos. Dirígete a la pestaña Función en el panel del lado izquierdo. Luego haz clic en el botón Agregar nueva función y dale un nombre:
Seeed Studio proporciona un decodificador específicamente para este dispositivo en el siguiente repositorio. Pega ese decodificador en el campo de texto y luego guarda los cambios.
4. Crear la integración a Ubidots
Ve a la sección de Integraciones, luego haz clic en Agregar integración y busca la integración de Ubidots:
Haz clic en +Agregar integración
Ingresa tu token de Ubidots en el campo respectivo, luego haz clic en el botón Continuar y espera el mensaje de confirmación emergente. Después de eso, nombra tu integración y haz clic en el botón Agregar integración:
Después de realizar este paso, se creará un nuevo plugin de Helium en tu cuenta de Ubidots.
5. Crear el flujo para conectar la integración a Ubidots
Dirígete a la sección de Flujos, luego, desde el menú desplegable en la esquina superior izquierda, arrastra y suelta el dispositivo, la función decodificadora y la integración en el área en blanco, luego une los puntos como se muestra en el GIF a continuación:
En este ejemplo, tanto el dispositivo como la función decodificadora se llaman "sensecap-lorawan-tracker", y la integración se llama "enviar datos a ubidots".
6. Crear un JSON compatible con Ubidots y visualizar los datos
Dado que el objeto JSON devuelto por el decodificador de Seeed Studio no es compatible con el esquema de Ubidots, se necesita una transformación después de extraer los datos de interés.
Dirígete a la sección del decodificador de tu plugin de Helium, elimina todo el código allí y reemplázalo con el siguiente:
#Set to true in order to enable hotspot informationHOTSPOT_INFO_ENABLE = Falsedef format_payload(args): messages = args.get("decoded", {}).get("payload", {}).get("data", {}).get("messages", []) ubidots_payload = {} error = assert_error(messages[0][0]) if error is not None: return error if HOTSPOT_INFO_ENABLE: hotspot_info = args.get('hotspots', None) ubidots_payload['SNR'] = hotspot_info[0].get('snr') if hotspot_info is not None else None ubidots_payload['RSSI'] = hotspot_info[0].get('rssi') if hotspot_info is not None else None ubidots_payload["port"] = args.get("port", None) ubidots_payload['Frame Counter'] = args.get('fcnt', None) for msg in messages: for sensor in msg: message_type = sensor.get("type", None) value = sensor.get("measurementValue") if message_type == "Latitude" or message_type == "Longitude": position = ubidots_payload.setdefault("position", {}) position.update({message_type.lower(): value}) continue elif message_type == "Timestamp": ubidots_payload["timestamp"] = value continue ubidots_payload[message_type] = value print(ubidots_payload) return ubidots_payload def assert_error(data : dict): if "error" in data: return {"ERROR" : { "value" : data["errorCode"], "context" : { "status" : data["error"]}}} return None
Si todo está correctamente conectado, deberías ver esto en un dispositivo recién creado en Ubidots