Trazabilidad de activos con LoRaWAN e IA generativa
El proyecto, llegado a este punto, había cumplido con sus objetivos: tener una aplicación web capaz de relacionar dispositivos LoRaWAN con capacidad GPS y usuarios los mismos, representar sobre un mapa sus actividades, y tener un registro histórico de actividades que permitiera realizar búsquedas por usuario y fecha, y exportar los registros a otras plataformas. Como tal, habíamos llegado al final del punto que nos habíamos marcado al inicio.
Pero hace ya mucho tiempo leí que una buena historia nunca termina, sino que continúa por otros medios. Y, en efecto, a medida que avanzaba en el desarrollo, veía posibilidades de ampliar funcionalidades que surgían del tronco maestro como ramas con mucha, mucha fuerza. Y la primera opción era obvia: dado que tenía ya implementado un sistema con mensajería interna que abstraía completamente de la infraestructura técnica subyacente, ¿por qué no buscar otros mecanismos para ubicar personas que no estuvieran limitados por la tecnología LoRaWAN? Y fue aquí donde entraron en danza los Motorola Moto Tag.

El Moto Tag es un disposito de posicionamiento de Motorola, que utiliza la red «Find Hub» de Google para permitir localizar objetos como llaves, carteras o maletas. Sus características son las siguientes:
- Tecnología de Localización: Utiliza tecnología Bluetooth Low Energy (BLE) para conectarse con dispositivos Android cercanos, enviando su ubicación a tu cuenta de Google para que solo el dueño del dispositivo pueda verlo en un mapa. También dispone de características de banda ultraancha (UWB), lo que permite el guiado direccional hacia la ubicación exacta del tag con gran precisión. Usa la red Google Find Hub para utilizar dispositivos Android cercanos para obtener localizaciones aproximadas, de manera completamente anónima.
- Alcance: Tiene un alcance de hasta 100 metros a través de Bluetooth.
- Compatibilidad: Funciona con dispositivos que tengan Android 9.0 o posterior.
- Resistencia: Cuenta con clasificación IP67 para resistencia al agua y al polvo, lo que lo hace apto para diversas condiciones de uso.
- Batería: Utiliza una pila CR2032 estándar y reemplazable, con una duración estimada de hasta un año (aunque esto último, como he podido comprobar, es bastante discutible).
- Sonido: Emite un timbre con un nivel de ruido de hasta 75 dB para ayudarte a localizar objetos cercanos.
- Funcionalidad Adicional: También puede usarse como un control remoto para la cámara del teléfono vinculado.
Todo esto está muy bien, pero tiene una debilidad importante para mi proyecto: y es que depende completamente de la red «Find Hub» de Google, por lo que en principio sólo se puede acceder a la localización del dispositivo en dispositivos Android. Este podría haber sido el punto final de esta historia, un dispositivo interesante, pero sin utilidad para el proyecto de localización de activos, pero fue entonces cuando di con algunos proyectos de GitHub extremadamente interesantes:
GoogleFindMyTools: Un proyecto que permite conectar a la red Find Hub mediante comandos e interactuar con ella como si se tratara de un dispositivo Android. La base para empezar a considerar los dispositivos Moto Tag como fuente de localización. Eso, y cualquier otro dispositivo (incluidos teléfonos) dado de alta en tu Hub.
GoogleFindMyTools-homeassistant: Un derivado del anterior, que permite interactuar con Home Assistant para volcar la información extraída de Find Hub mediante un topic MQTT. La clave que andábamos buscando, y que permitía volcar la información a nuestra plataforma.
Google Find Hub devices in Traccar: Este proyecto, vinculado con los anteriores, proporciona unas instrucciones claras para poder extraer la información necesaria de la plataforma de Google, y poder proceder a realizar las integraciones.
Con todo esto, teníamos más que de sobra para poder realizar una integración de los Moto Tag en el proyecto de trazabilidad de activos. Los pasos pasaban a ser los siguientes:
- Desplegar una máquina virtual Linux con entorno gráfico y un navegador Chrome. Este sería el punto donde se descargaría el aplicativo de GoogleFindMyTools para extrar la clave API vinculada a la cuenta de Google donde has registrado los dispositivos, y posteriormente poder automatizar el proceso. Opté por desplegar una Ubuntu con entorno gráfico.
- En mi caso, desplegar una segunda máquina, en este caso mi servidor de backend, ya sin entorno gráfico, donde instalar el aplicativo que iba a actuar de cliente para la red de Google.
- Desarrollar una aplicación que se conectara a la red, extrajera la información del Moto Tag, y la volcara en el topic MQTT del proyecto de trazabilidad, correctamente formateada en JSON.
- Automatizar el proceso de inicio de la aplicación mediante un servicio en systemd. El proceso se ejecuta cada 5 minutos, a fin de no sobrecargar de peticiones el servicio de Google Find Hub.
Con ello tenemos ya en nuestro topic MQTT la información de posicionamiento del Moto Tag. Sin embargo, queda un pequeño detalle para que la información aparezca en la aplicación, que es relativa al formateado. No estoy haciendo uso del mismo topic MQTT para la información en bruto del Moto Tag que para el proyecto de trazabilidad, debido a que he preferido mantener esta información separada, por si en el futuro la utilizo para otra cosa. He optado por desarrollar un pequeño flujo en Node-RED para hacer las adaptaciones oportunas, e inyectar la información ya formateada en el flujo habitual:

La adaptación más importante es que el Moto Tag no hace envío alguno relativo al gateway, por la sencilla razón de que no existe. Sin embargo, la aplicación lo espera. Para solventar este problema he optado por definir un gateway virtual para Google, asignándole unas coordenadas escogidas bajo mi personal criterio. Con esto, queda completamente solventado el problema, y la información se procesa sin mayor inconveniente.


Con esto, queda la aplicación de trazabilidad de activos pasa a ser capaz de trazar no sólo usuarios que hagan uso de un dispositivo de tipo LoRaWAN en las cercanías de un gateway de la plataforma, sino que también permite integrar de una manera potentísima usuarios o activos en movilidad, y conocer su ubicación allí donde haya teléfonos Android en las cercanías. Es un salto brutal en las capacidades del sistema.