Colega... 驴d贸nde est谩 mi coche?

Internet Of Things Dec 20, 2020

En este post voy a tratar de explicar c贸mo prototipar de forma muy sencilla un sistema con el que seremos capaces de monitorizar la localizaci贸n de nuestro coche, bicicleta... o cualquier objeto, cosa, animal o persona siendo capaces de recibir una alerta 馃摮 si la localizaci贸n de nuestro, de ahora en adelante, 'activo', ha sobrepasado los l铆mites de una zona definida a nuestra propia elecci贸n.

鈩癸笍 La soluci贸n est谩 basada en la red abierta y neutral para el Internet de las Cosas, The Things Network

Pero antes...os voy a contar la motivaci贸n que me ha llevado a experimentar y desarrollar este proyecto.

Curiosidad 馃 = Motivaci贸n 馃挭

Ver茅is, en la ciudad de Gij贸n, recientemente varias empresas privadas de alquiler de veh铆culos de movilidad compartida 馃殫馃毑馃洿 han desplegado sus servicios.

Toda una flota de bicicletas, coches y patinetes el茅ctricos han pasado a formar parte de nuestro d铆a a d铆a 'inundando' las calles, barrios y diversas zonas de la ciudad.

Y es aqu铆, donde la curiosidad Maker, de nuevo, entra en escena 馃幀

Personalmente, como ciudadano y usuario, decid铆 probar alguno de estos servicios.

Dichos servicios est谩n ligados a una aplicaci贸n m贸vil 馃摫 que te permite saber en todo momento, los activos de su flota m谩s cercanos a tu localizaci贸n 馃搷 GPS en tiempo real, facilitando la reserva del medio de transporte desde el dispositivo m贸vil y permitirte as铆 desplazarte por la ciudad previo pago 馃捀 del alquiler.

Entonces, me hice la siguiente pregunta 馃:

驴C贸mo saben en todo momento la localizaci贸n de los mismos?

Desconozco a nivel t茅cnico la soluci贸n desarrollada por cada empresa, lo que est谩 claro es que todas, han implementado una soluci贸n basada en Internet de las Cosas.

馃馃挕 A grandes rasgos: seguramente, cada activo disponga de un m贸dulo GPS que env铆a sus datos a trav茅s de una red de telecomunicaciones a un servidor central. Este a su vez registre la posici贸n 馃搷, nivel de bater铆a 馃攱 y metadatos en una base de datos.

La aplicaci贸n m贸vil, sencillamente, a trav茅s de una serie de servicios y llamadas, muestra entonces los activos m谩s cercanos a tu posici贸n situ谩ndolos en el mapa 馃搷馃椇锔 con sus correspondientes datos.

PD: s铆, m谩s de una vez se me ha pasado por la cabeza desarmar 馃洜锔 uno de esos patinetes el茅ctricos y comprobar que lleva dentro... 馃槄

Fue entonces, cuando me decid铆 a experimentar y tratar de desarrollar una soluci贸n DIY (Do It Yourself ) basada en los mismos principios, pero para uso personal.

Ya sabes, filosof铆a conocida com煤nmente como Juan Palomo o Hazlo T煤 Mismo 馃懆鈥嶐煃

馃 Y es que... 驴por qu茅 no desarrollar una soluci贸n libre y abierta que me permitiera conocer la localizaci贸n de mi coche, bicicleta, patinete, etc?

Una soluci贸n as铆, abre todo un abanico de posibilidades y soluciones a nivel pr谩ctico para distintos casos de uso, sirvan de ejemplo:

  • Ser notificado, en caso de robo 馃暤锔忊嶁檪锔, si nuestro activo ha sobrepasado la zona en la que vivimos.
  • Imagina que tienes un familiar que tiene tendencia a desorientarse 馃懙馃懘 al salir a la calle. Se podr铆a disponer de un sistema que notificara a alg煤n familiar si ha sobrepasado ciertos l铆mites alrededor de la casa o barrio en el que reside.
  • O imagina que tu mascota 馃惗馃惐 decide en alg煤n momento... irse de paseo y se te escapa sin que te des cuenta.

Seguramente, t煤 ya estar谩s pensando 馃 en alguno m谩s que se ajuste a una necesidad que te gustar铆a cubrir...

Y es que de eso se trata, de dar vida a las ideas馃挕

Prototipando la soluci贸n 馃洜锔

Ahora que contamos con cierta cobertura de la red The Things Network, en ciertas ciudades, la motivaci贸n era m谩xima para prototipar una soluci贸n basada en el uso de esta red.

No hab铆a excusa para no hacerlo... 隆Otro caso de uso m谩s a prototipar! 馃槂

鈿狅笍A diferencia de la soluci贸n desplegada por las distintas empresas del sector privado para el alquiler de veh铆culos de movilidad compartida:

Cuya soluci贸n, digamos, est谩 cerrada a sus propios servicios (como es l贸gico 馃挵馃挷馃挵) y contando con su propia red para el env铆o de datos (si es que disponen de una, ya que quiz谩s utilicen la red GSM馃洶锔)

La soluci贸n que a continuaci贸n se desarrolla es de uso personal, para cubrir tu propia necesidad y con el 谩nimo de invitarte a experimentar una nueva soluci贸n del Internet de las Cosas.

Node-RED 鉂わ笍

Me declaro, una vez m谩s, un aut茅ntico apasionado de esta herramienta opensource.

Permite conectar dispositivos hardware, APIs y servicios en l铆nea de forma sencilla gracias a su programaci贸n gr谩fica a trav茅s de un navegador. Su l贸gica est谩 basada en la interconexi贸n de flujos y eventos y adem谩s cuenta con una amplia gama de nodos para realizar distintas funciones gracias al desarrollo de la comunidad.

驴Y por qu茅 menciono esta herramienta? Bueno, la respuesta es sencilla, la soluci贸n desarrollada est谩 basada en la misma 馃槃

El esquema de la soluci贸n piloto desarrollada es el siguiente:

Aunque parezca incre铆ble, con la configuraci贸n y programaci贸n de varios nodos, se puede lograr una soluci贸n totalmente funcional.

驴No es sorprendente? 馃ぉ

A continuaci贸n explicar茅 en detalle, nodo a nodo, c贸mo funciona el flujo de la informaci贸n a trav茅s de ellos.

Nodo MQTT: recepci贸n de las coordenadas GPS 馃摗馃搷

Gracias a este nodo, se reciben las coordenadas GPS que nuestro dispositivo env铆a mediante LoRa.

Los mensajes, ser谩n recibidos por alg煤n o algunos de los gateways de la red TTN donde haya cobertura, permitiendo conocer as铆 la localizaci贸n 馃搷 en la que se encuentra nuestro activo.

馃挕 Como dispositivo de seguimiento, se puede utilizar cualquier nodo que cuente con GPS + m贸dulo de radio LoRa.

鈩癸笍 Existen nodos comerciales...o siempre tienes la opci贸n de hacerte t煤 mismo uno (ejemplo nodo desarrollado por @akirasan)
Ejemplos: TTGO T-Beam, RAK WisBlock y Heltec CubeCell GPS-6502

El nodo MQTT se ha de configurar acorde a los valores de tu cuenta TTN.

En mi caso, he creado una aplicaci贸n en la consola de TTN que decodifica los datos GPS (latitud, longitud, altitud, nivel de bater铆a y n煤mero de sat茅lites) enviados por el dispositivo.

Funci贸n definida en la consola de TTN para decodificar los datos GPS recibidos por el dispositivo
Ejemplo configuraci贸n nodo MQTT

En el topic wisblock_example_app/devices/+/up se reciben los datos de todos los dispositivos registrados en la aplicaci贸n.

Si s贸lo contaras con un dispositivo, puedes sustituir el + por el nombre espec铆fico de tu dispositivo registrado en la consola TTN.

En la configuraci贸n del servidor (馃枈锔) y la pesta帽an Connection, se ha de configurar el broker MQTT de TTN que tus aplicaciones utilicen.

Ejemplo configuraci贸n para el broker MQTT de TTN Europeo

En la pesta帽a Security, los campos Username y Password se han de configurar con el nombre de la aplicaci贸n creada en la consola TTN y su clave de acceso (Access Keys) respectivamente.

Configuraci贸n de los campos Username y Password
Clave de Acceso de la aplicaci贸n en TTN

Nodo funci贸n: extrayendo los datos necesarios 鈿欙笍

Una vez se reciben los datos de las coordenadas GPS de nuestro activo, lo siguiente es quedarse 煤nicamente con aquellos campos que nos interesan.

En nuestro caso, sabiendo la latitud y longitud, sabremos la localizaci贸n GPS de nuestro activo.

Se crea, por tanto, un nuevo mensaje que contiene 煤nicamente dichos campos y se env铆a al siguiente nodo.

Detalle del nodo Funci贸n donde se extraen las coordenadas GPS (Latitud y Longitud)

Nodo funci贸n: registrar las coordenadas sobre un mapa 馃幆馃搷

Se a帽aden los datos necesarios al mensaje para poder ir registrando sobre un mapa, las distintas localizaciones por las que nuestro activo se vaya desplazando.

Se a帽aden los campos necesarios para el nodo Worldmap

El nuevo mensaje se env铆a al nodo worldmap. Este nodo se encargar谩 de mostrar las localizaciones 馃搷 en un mapa 馃椇锔 acorde a los estilos definidos por el usuario en la carga 煤til del mensaje (icono, color, nombre...).

Ejemplo de 'tracking' de un paseo en bicicleta 馃毑

Nodo Geofence: donde ocurre la magia 鉁

Este maravilloso nodo desarrollado por la comunidad nos permite definir de manera visual un 谩rea circular o poligonal sobre un mapa.

node-red-node-geofence
A simple node to filter based on location

Con ello se consigue de forma sencilla filtrar las coordenadas GPS recibidas por nuestro dispositivo y discernir si este se encuentre dentro o fuera del 谩rea definida por el usuario.

Detalle de la ayuda 鈩癸笍 del nodo Geofence

Como se aprecia en la imagen, el nodo requiere que como mensaje de entrada contenga una serie de propiedades. En este caso y gracias al nodo funci贸n anterior, se ha definido la segunda de las opciones posibles (msg.lat & msg.lon).

Como 谩rea de pruebas, al gozar de una buena cobertura de la red TTN en los alrededores del Campus Universitario de la EPI Gij贸n, he decidido crear un 谩rea circular que englobe a este.

馃挕 Tambi茅n existe la posibilidad de delimitar un 谩rea poligonal 馃搹馃搻
Detalle del 谩rea circular definida sobre el Campus de la EPI Gij贸n

El 谩rea a delimitar es editable sobre el propio mapa. M谩s sencillo, imposible.

Nodo Funci贸n: IN or OUT 鈿欙笍馃幆

Si te has fijado bien en la imagen de la descripci贸n de la ayuda 鈩癸笍 del nodo Geofence, a la salida del mismo, se a帽ade un nuevo valor booleano al mensaje: msg.location.inarea

Gracias a este valor, sabremos si las coordenadas GPS enviadas por el dispositivo que lleva nuestro activo se encuentran dentro del 谩rea definida o por el contrario, se encuentra fuera.

Definiendo un nuevo nodo funci贸n, podremos asignar este nuevo valor (dentro o fuera) como el mensaje de salida para el siguiente nodo.

Evaluaci贸n condicional del valor booleano recibido y nueva asignaci贸n del mensaje

Nodo RBE: s贸lo interesa ser notificado cuando el activo se encuentra fuera de nuestros l铆mites

El nodo RBE (Report By Exception) permite continuar el flujo de los mensajes, 煤nicamente si el mensaje ha cambiado.

Detalle de la ayuda 鈩癸笍 del nodo RBE

驴Qu茅 quiere decir esto? Muy sencillo.

Si nuestro activo permanece dentro del 谩rea que hemos definido, el nodo siempre estar谩 recibiendo 'dentro' ya que las coordenadas GPS se encuentran dentro del 谩rea circular definida.

Sin embargo, en el momento que nuestro activo se desplace a una localizaci贸n que se encuentre fuera de los l铆mites comprendidos por el 谩rea, el nodo detectar谩 dicho cambio del valor asignado, ya que el nuevo valor asignado es 'fuera' como se defini贸 en el anterior nodo.

Esto nos permite entonces, preparar nuestro propio sistema notificaci贸n basado en la posici贸n GPS del activo.

No me dig谩is a m铆 que... C'est magnifique!!!

Nodos Template/Telegram: configura tu propio sistema de alerta 馃摬

Los siguientes 3 nodos, forman el sistema de notificaci贸n personal de nuestro activo.

Recibiremos una notificaci贸n v铆a Telegram, 煤nicamente, cuando el activo ha salido/entrado del 谩rea delimitada.

Mediante 2 nodos Template, se prepara el formato del mensaje a recibir y posteriormente, el nodo Telegram Sender env铆a el mensaje que recibiremos en nuestro dispositivo m贸vil.

Configuraci贸n primer nodo Template
Configuraci贸n segundo nodo Template
馃挕 En este caso he decidido utilizar Telegram como servicio de notificaciones, pero podr谩s utilizar el que m谩s se ajuste a tus necesidades.
Notificaciones 馃挰 recibidas en el Bot de Telegram

Agradecimientos, referencias y enlaces de inter茅s:

Hilo de Twitter

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.