Simple integración FiWare con Thingsboard

Jose Checa

The Things Network User

Posted on 01-08-2020

Thingsboard

Thingsboard.io se está posicionando como una plataforma de integración para dispositivos IoT Open Source y la verdad es que promete. Con una documentación muy completa y la posibilidad de instalación en nuestros servidores así como su utilización en la nube con una diversa gama de planes de subscripción en base a dispositivos y bienes. Su modelo de instalación se adapta a todos los gustos: Windows, Linux, Raspberry Pi, Kubernetes, Docker. etc.

La plataforma puede recoger datos de nuestros dispositivos IoT definidos, realizar procesos de adaptación/modificación sobre los mismos a través de un motor de reglas potente y realizar paneles de mando muy profesionales, avalada toda esta interoperabilidad por empresas como:

Otro aspecto importante es la organización de perfiles para su uso que permiten la convivencia de diferentes servicios/soluciones desde una instancia única con usuarios y roles organizados para su administración general, administración de servicios/soluciones concretas así como el uso personalizado de perfiles de clientes, todos y cada uno de ellos con su acreditación y sin olvidar la posibilidad de compartición en abierto de paneles de monitorización para poderlos insertar o permitir un uso abierto de sus métricas en nuestros portales y/o aplicaciones. Esto sólo es un resumen introductorio para suscitar el interés que merece pero tenéis toda la información en la web de la plataforma Thingsboard.io.

La base fundamental es tener dispositivos IoT que configuremos para que envíen los datos a la plataforma a través de protocolos sencillos como CoAP, MQTT o HTTP, pero en este artículo, previo a las vacaciones merecidas de verano, queremos enseñaros la posibilidad que nos proporciona FiWare para integrar los datos de nuestros sensores ya desplegados en nuestro “core” FiWare con Thingsboard.io como plataforma adicional de usuario, donde poder desplegar paneles de mando de manera sencilla y con la mínima complicación desde el punto de vista de FiWare, en definitiva, vamos a alimentar tambiénThingsboard.io desde FiWare para la gestión de paneles de mando y/o monitorización desarrollados por el propio usuario.

FiWare

Un conjunto de sensores ya desplegados (para nuestro ejemplo, nuestros sensores LoRaWAN que a través de TheThingsnetwork.org y nuestro agente LoRa para FiWare recopilan la información hacia nuestro servidor de contexto) serán los medios que que vamos a utilizar de prueba ya los tenemos monitorizados con nuestras propias herramientas y aplicaciones; No queríamos “reutilizar” -programar desde cero el dispositivo- ninguno de nuestros sensores para poder probar las bondades de Thingsboard.io, por lo tanto y utilizando una gran propiedad de nuestro servidor de contexto, lo único a considerar y configurar en nuestro “core” de FiWare, es la posibilidad de que, una vez recepcionados los datos de nuestros sensores a través de los diferentes agentes (LoRaWAN, SigFox, HTTP, MQTT, etc) los dirijamos también hacia nuestra plataforma de Thingsboard de la misma manera que lo dirigimos hacia otros “enablers” como bien pueden ser, aquellos que se encargan de ir generando nuestros históricos. Sería el mismo procedimiento, rápido, claro y transparente.

Utilizando una propiedad fundamental de nuestro servidor de contexto tenemos la solución simple y transparente: las suscripciones y sobre todo la posibilidad de realizar suscripciones con peticiones personalizadas desde donde poder manipular cabeceras, métodos, consultas y payload asociado a los datos de nuestras entidades y adaptados a nuevas necesidades, en este caso la integración con la plataforma Thingsboard que hemos desplegado. Vamos a explicar rápidamente estos sencillos pasos.

Lo primero que hacemos es en nuestra plataforma Thingsboard es definir nuestro dispositivo en un servicio previamente establecido:

Para cada dispositivo, además de su información general (los detalles en la documentación de Thingsboard.io), nos interesa un dato que genera por encima de todo, el TOKEN de acceso para poder acceder a él en base a peticiones según protocolo. Este TOKEN, junto con nuestro servidor Thingsboard y las cabeceras personalizadas son los datos que utilizaremos para realizar una suscripción adicional en nuestro servidor de contexto para un dispositivo ya provisionado que redirija los datos. La suscripción es de la forma siguiente:


La documentación particular definida en Subscriptions Payload Validation de la documentación oficial de FiWare nos enumera las posibilidades de composición de una suscripción y en especial para el caso que nos ocupa, fijamos nuestra atención en las notificaciones adaptadas a través de las validaciones httpCustom desde la que podemos definir nuestro “endpoint” personalizado (url), modificaciones sobre la cabecera (headers), argumentos de consulta (qs) y los datos (payload).

Dada un suscripción sencilla sobre un dispositivo específico provisionado en nuestro “core” FiWare, a través de idPattern. Definimos nuestra notificación hacia nuestro “endpoint” especificando nuestro servidor Thingsboard y la llamada a la API correspondiente con el TOKEN de acceso definido previamente para este dispositivo según la API de uploads de telemetría documentada en Thingsboard.io

Siguiendo las indicaciones del formato de datos de Thingsboard.io según la API mencionada anteriormente, sólo tenemos que confeccionar nuestro payload con la misma estructura y utilizar las potencia de las sustituciones de FiWare basadas en las macros ${...} que nos ofrece el servidor de contexto para las suscripciones de la forma:

Hay que tener cuidado con la utilización de secuencias de escape o codificación URL para una perfecta generación de la petición y sustitución de los valores a través de las funciones de macro. En la imagen superior describimos un ejemplo concreto.

Una vez generada la suscripción sólo nos queda comprobar que la telemetría, además de actualizada en nuestro “core” FiWare también nos llega a nuestro dispositivo en nuestro servidor Thingsboard desplegado.

En nuestra aplicación a través de los datos de FiWare podemos comprobar que nos siguen llegando los datos de manera natural:

Y con Thingsboards podemos comprobar que nos llegan los datos a través de la opción de consulta de última telemetría en el registro del dispositivo, de esta forma:

Y por último, ya teniendo en cuenta que los datos los tenemos por dos fuentes distintas y sin interferencias de ningún tipo entre ellas, sólo no queda el montaje de un Dashboard en la nueva plataforma según las instrucciones de Thingsboard.io, fáciles de diseñar y de montar en unos minutos gracias a su librería de widgets “listos para usar”.

Conclusiones

A través de FiWare podemos re-utilizar todos los sensores que tengamos provisionados y de cualquier naturaleza sin necesidad de reprogramar cada uno de los dispositivos para integrarlos con cualquier otra aplicación, plataforma, etc. ya sea propietaria o abierta de manera sencilla y óptima a través de la potencia de las suscripciones.

En este caso, Thingsboard nos aporta solución de cliente para ese elemento de integración tan necesario en nuestras soluciones como es el uso de una plataforma amigable para gestionar y monitorizar todos nuestros dispositivos.

Ya tenemos un círculo cerrado para soluciones a medida y de bajo coste: dispositivos DIY, sistema de comunicaciones abiertos LoRaWAN a través de TheThingsnetworks.org y plataformas robustas de integración para la gestión y monitorización de dispositivos en una arquitectura multiservicios, con diferentes roles de utilización y gestión así como paneles de control creados a gusto de cada usuario.