Vamos a aprovechar el confinamiento para poner en funcionamiento este vínculo atractivo entre nuestros dispositivos basados en LoRa/LoRaWan e InfluxDB que creo, de gran importancia, para el desarrollo rápido y transparente. Desde nuestra Aula de Transformación Digital FiWare usamos la gestión de datos que nos proporciona el estandard FiWare pero en la propuesta de hoy, además y simultáneamente, los datos pueden ser redirigidos a otras herramientas de gran evolución y aceptación últimamente. Una solución muy fácil de implementar.
InfluxDB se formaba como una BBDD de series temporales No-SQL, además aporta una gran integración con herramientas de graficación como Grafana que representa los datos con gran facilidad y con toda su potencialidad al ser una de las BBDD de base con las que trabaja esta herramienta, por tanto utilidades como umbrales, alarmas y avisos se encuentran contemplados, de esta manera, los datos de nuestros dispositivos pasaban a InfluxDB y desde Grafana se monitorizaban con gran precisión.
Pero InfluxDB no es sólo una BBDD sino que se ha nutrido de servicios adicionales, de esta forma se pusieron en valor los exploradores de datos, agentes encargados de dirigir información desde diferentes fuentes a la BBDD común y por último la graficación y monitorización. La última versión integra "all-in-one" la BBDD, el explorador y la graficación (entre otros también: gestión de buckets, usuarios, roles, etc.) pero además, dispone de un elemento excepcional para el caso que nos ocupa, que es Telegraf.
Telegraf es un agente, esto es un servicio que se encarga de capturar datos de diferente naturaleza e integrarlos en la BBDD de InfluxDB, a partir de ahora no lo llamaré BBDD sino modelo de gestión de Influx, o simplemente Influx. Influx ha generado un servicio en la nube, pero también puede ser desplegado en nuestro propio ordenador, servidor etc. por tanto somos los propietarios, sin intervención, de nuestros datos (sin abrir otro debate!!).
Pues bien, lo que pretendemos hacer es que este agente, se encarge de tomar los datos de nuestros dispositivos LoRa/LoRaWAN a través de TTN e inyectarlos en nuestro Influx, por tanto los podemos explorar y graficar. En nuestro propio ordenador podemos instalar Influx + Agente Telegraf y desde un sólo equipo, tener la solución que estamos buscando. Para esto vamos a jugar con los siguientes recursos del Aula de Transformación Digital FiWare:
Tenemos los sensores de campo que estamos desplegando (temperatura y humedad) en su envolvente IP65 de la firma Zane que nos provee. Son dispositivos robustos y con gran autonomía que nos envía su información cada 5-15min, según configuración. También, y para interiores (ahora en casa), el gateway TTIG que nos sirve de pasarela para llegar a TTN.
Nos interesa la gestión de datos desde Influx, por tanto no entramos en la configuración de los dispositivos y tampoco en la definición de los mismos en la red TTN, presuponemos este conocimiento, se puede encontrar mucha información al respecto Googleando "solo un poco" (prometemos hacer otro artículo en breve), lo más importante y punto clave de nuestro desarrollo, es la inyección de los datos que nos reporta TTN hacia Influx.
Para inyectar datos en Influx sería necesario utilizar la API de Influx, tener credenciales en base a un sistema Tokenizado y hacer peticiones POST. Esto se podría hacer a través de las integraciones de TTN pero, lo vamos a hacer más fácil: SIN INTEGRACIONES. TTN dispone de un servicio intrínseco que es MQTT, con lo cual para cualquier aplicación desplegada en TTN nos permite subscribirnos a los dispositivos y por tanto obtener sus valores a través de sus servidores MQTT y credenciales correspondientes. Y aquí, es dónde nuestro agente Telegraf va a desarrollar toda su función.
Recopilemos: en nuestro servidor tendremos nuestro propio Influx y nuestro propio agente Telegraf. En la página WEB de Influx podemos econtrar información de su instalación en diferentes plataformas. En nuestro caso, instalaremos los recursos señalados en la imagen.
Una vez instalado y funcionando estos servicios en nuestro servidor, tendremos acceso al modelo de gestión de Influx a través de la URL y puerto correspondiente, y nuestro agente (telegraf), por defecto empezará a inyectar datos de nuestro servidor, bbdds o buckets, que crea por defecto al inicializarse por primera vez. Pero lo que queremos son los datos de nuestros dispositivos en TTN. Veamos como:
Como hemos dicho, Telegraf permite inyectar datos de diferentes fuentes, y en nuestro caso, de subscripciones MQTT. Pues vamos a configurar nuestro agente telegraf para que haga esta labor. Para ser concretos, primero tendremos que definir en nuestro agente, cual será nuestro servidor Influx y segundo, definir en nuestro agente las subscripciones MQTT de TTN.
En la siguiente imagen, ponemos los datos del servidor Influx, el token necesario para acceder desde el agente (que generamos nosotros desde Influx) y la bbdd o "bucket" a utilizar para estos datos. Esta definición corresponderá con el destino de los datos que el agente inyecta. El fichero de configuración lo encontramos en /etc/telegraf en sistemas unix*
Por otro lado, definimos el origen de datos. Entre los diferentes orígenes por defecto que gestiona el agente Telegraf, encontramos el mqtt_consumer. Definimos por tanto, aquí, las subscripciones con las credenciales que nos brinda TTN para cada aplicación:
Una vez todo configurado, reiniciamos el agente y pasamos a ver los resultados. Por el momento ya no hay NADA MAS que hacer, los datos de nuestros dispositivos cuando lleguen a TTN los captura nuestro agente Telegraf vía MQTT y los inyecta en Inlfux. Solo nos queda irnos a nuestro modelo de gestión de influx, explorar y empezar a definir nuestros gráficos.
Veamos un ejemplo de exploración que también nos servirá para generar un gráfico en el Dashboard integrado de Influx. Selecciona cada uno de los puntos indicados en la imagen y al final ejecuta la orden a través del botón de SUBMIT. Tenemos que seleccionar nuestro bucket, recuerda que en el agente definimos el bucket que se llamaba "smart", en este bucket tenemos diferentes medidas; se ha creado una media para los contenidos de origen MQTT, la denominada "mqtt_consumer", acto seguido nos aparecen los uplinks de los dispositivos pertenecientes a las distintas aplicaciones, por tanto seleccionamos los que quermos graficar y, por último los valores correspondientes.
Esta misma exploración de datos la realizamos para la generación de un gráfico determinado en nuestros dashboards. Vamos a crear un "Grapfh + SingleStat" desde la opción de Dashboard en Inlfux.
Fácil ¿ no ?, pues poco a poco vamos añadiendo gráficos hasta que tengamos el Dashboard que mejor se adapte a nuestras necesidades.