msgbartop
¿Era necesario que te fumigaras a toda la comisaria? La señora de la limpieza se pondrá furiosa
msgbarbottom

24 abr 21 Trazabilidad de activos en exterior con LoRaWAN, Chirpstack, Node-Red y una arquitectura de microservicios

Bonito combo el del título de este artículo, ¿verdad? A resultas de algunas actividades que estoy realizando en el trabajo relacionadas con redes IoT industriales, en mi tiempo libre le he dado una vuelta de tuerca al proyecto, para realizar un piloto de trazabilidad de activos en exterior. Cómo no, basado en el uso de LoRaWAN y Chirpstack, como contaba en un artículo anterior.

Arquitectura LoRaWAN

Arquitectura LoRaWAN

La cosa es que aprovechando que contaba con una pequeña infraestructura local de Chirpstack desplegada mediante microservicios, me hice con un dispositivo de Dragino bastante interesante, el LBT1:

Dragino LBT1

Dragino LBT1

Este dispositivo es bastante interesante: integra un módulo GPS que permite obtener su ubicación precisa, que es trasmitida mediante LoRaWAN para ser posteriormente explotada. Pero cuenta con capacidad Bluetooth, para realizar ubicación en interiores mediante iBeacons; dispone de un acelerómetro, de tal manera que el dispositivo tiene capacidad de enviar la señal LoRaWAN cuando detecta movimiento y no de manera indiscriminada, con el consiguiente ahorro de batería; tiene una batería recargable de 1000 mAh (que he podido probar que da para más de una semana de actividad sin necesidad de recarga); y cuenta con un botón que -en su configuración por defecto- permite pasar al dispositivo a un modo de emergencia, de tal manera que pasa a emitir la señal de manera periódica (y no activada por el acelerómetro, como en el modo normal), y con una codificación del paquete de datos específica, de tal manera que es posible distinguirlo de una transmisión normal, y actuar en consecuencia.

Estas capacidades, junto con la característica de integración HTTP proporcionada por Chirpstack, permiten algo bastante interesante, y es realizar un sistema de monitorización de activos en exterior, si lo combinamos con un procesamiento en segundo plano. Para ello, en mi caso, he utilizado Node-Red.

Flujo Node-Red para trazabilidad de activos

Flujo Node-Red para trazabilidad de activos

La idea general es la siguiente: se establece un punto de entrada desde donde recibir los POST HTTP provenientes de Chirpstack, que nos harán llegar cada uno de los eventos provenientes de los dispositivos. Aquí realizamos un primer procesado para obtener información relevante de la señal transmitida (básicamente, latitud, longitud, identificador del dispositivo, cantidad de carga de la batería, y si se trata o no de una señal de emergencia). Con esta información realizamos dos acciones: representar cada objeto definido en la aplicación Chirpstack y que esté enviando señal en el mapa, bien con un icono verde si todo va bien, o con un icono rojo si se ha pulsado el botón de emergencia. Además de esto, se mantiene trazabilidad de los movimiento realizados creando una línea con las distintas ubicaciones GPS enviadas por el dispositivo. Todo ello se representa sobre un mapa, que permite definir zonas de calor, y filtrar por cada uno de los objetos que estén enviando señal. El resultado es algo como esto:

Mapa de ubicaciones resultante

Mapa de ubicaciones resultante

El sistema, además, tiene capacidad para integrarse con sistemas de monitorización de terceros, así como con sistemas de alerta específicos. En mi caso he realizado un procesamiento adicional, que consiste en realizar persistencia de datos para su análisis posterior, en este caso, mediante una hoja de Google Spreadsheet, lo que es interesante de por sí, y puede dar para otro artículo.

Este ejemplo de aplicación tiene bastantes aplicaciones prácticas: realizar seguimiento de activos en una zona exterior de una empresa, seguimiento de personas mayores en zonas urbanas sin coste de transmisión de datos, y con la capacidad de que emitar una señal de emergencia en caso de necesidad, o el seguimiento de visitantes en parques naturales y zonas boscosas, ya que como demostré hace algún tiempo, es posible cubrir zonas muy amplias en entorno forestal con un despliegue de infraestructuras mínimo. E incluso, que es lo que tenía en mente, un sistema para seguimiento de ciclistas o senderistas de montaña en zonas de montaña.

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , , , , ,

29 mar 21 El último viaje del Mercedes

El recordatorio más grande -al menos en tamaño- que teníamos de nuestro periplo irlandés era un Mercedes C180 Sportcoupe de 2002. Fue el coche que nos compramos al año de estar allí, y con el que nos recorrimos la Isla Esmeralda de punta a punta. Desde Tramore a La Calzada del Gigante, y de Dublín a los Acantilados de Moher. Incluso al remoto Condado de Kerry, y la estupenda Killarney, por no olvidar la muy especial Sligo, así como Carlingford.

Volvimos a España con él, cargados hasta los topes, y con un cofre lleno de trastos y de recuerdos. Solía decir que me valía con que el coche llegara a Santiponce, e hiciera un kilómetro más, pero no sólo fue capaz de eso, sino que nos recorrimos también España de punta a punta: Almería, Cuenca, Bilbao, toda la costa Cantábrica hasta Galicia, y por supuesto, Pontevedra, y desde ahí hasta abajo por la Ruta de la Plata. De hecho, tengo la sensación de que le hemos hecho más kilómetros en España que en Irlanda. Por no olvidar toda Francia desde Roscoff a San Juan de Luz, pasando por Burdeos.

Era un coche tremendamente divertido de conducir, con esa estupenda tracción trasera, su motor de 2 litros, y los 130 caballos de pontencia que desarrollaba. Pero toda historia llega a su fin, y tras más de un año sin conducir el Mercedes, y no teniendo sentido -desde el punto de vista económico- rematricularlo en España, y siendo un coche (volante a la derecha) que nadie compraría en España, hoy lo hemos vendido para desguace. Ha sido una pena verlo partir, pero no he podido menos que adecentarlo, para que en su último viaje luciera tan estupendo como en todos estos años en los que nos ha hecho felices.

Adiós, viejo amigo. Ojalá que todos los coches que tengamos nos salgan tan estupendos.

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , ,

13 mar 21 Despliegue de un servidor LoRaWAN libre con Chirpstack basado en contenedores

Estas semanas (en parte por afición y en parte por trabajo) he seguido avanzando con mis investigaciones con tecnología IoT basada en LoRaWAN. Ya había hablado anteriormente de comunicaciones básicas LoRa, uso de una red abierta LoRaWAN como es la red TTN, pero no había tocado el tema de disponer de un servidor LoRaWAN privado. Y es aquí donde entra en acción Chirpstack. Éste es un diseño basado en software libre que proporciona la capacidad de conectar dispositivos de campo LoRa y junto con los Gateway LoRaWAN permite constituir una red privada LoRaWAN. En este contexto, ChirpStack una solución que mediante una interfaz de usuario amigable permite gestionar dispositivos, usuarios, gateways, y que proporciona una interfaz de integración que permite interactuar con terceros sistemas.

Interfaz web de administración de Chirpstack

Interfaz web de administración de Chirpstack

ChirpStack proporciona una serie de componentes que interactúan entre sí para proporcionar la infraestructura necesaria para recibir información de dispositivos y gateways LoRa, con el objeto de proporcionar capacidades de gestión de dichos dispositivos (por un lado) y de poner la información que envían los dispositivos a disposición de terceros sistemas para que la consuman. Esto se articula en base a los siguientes componentes:

  • Dispositivos LoRa: Dispositivos de campo que envían por LoRa información de los sistemas que controlan (final de carrera, sensor de temperatura, el propio estado del dispositivo, etc…) a un Gateway, o bien que reciben información de este Gateway para realizar una acción (activar un relé, encender un led…).
  • Gateway LoRaWAN: Elemento que recibe información de los dispositivos, y transforma un paquete LoRa en un paquete IP (bien TCP o UDP, aunque lo más común es lo primero), transfiriendo la información que proporciona el dispositivo hacia un servidor donde esta información es procesada. También tiene capacidad de enviar información o solicitud de acciones a los dispositivos por parte de este servidor. Junto con los dispositivos LoRa, constituyen los elementos de campo, y aunque no forman parte estrictamente hablando de ChirpStack, sí tienen una interacción muy cercana con él.
  • Gateway Bridge: Es el primero de los componentes de ChirpStack, si seguimos el flujo de datos desde los dispositivos de campo hasta los servidores de computación. Su función es recibir la información de los gateways y procesarla, volcándola en un servidor MQTT de mensajería. Este bridge puede residir en el servidor donde se despliegue ChirpStack, en los propios gateways LoRa o estar instalado en un tercer componente aparte. Su función primordial, en pocas palabras, es volcar la información proveniente de la red LoRaWAN en el sistema de mensajería MQTT, donde será consumida por el resto de servicios de ChirpStack.
  • Network Server: Segundo de los componentes de ChirpStack. Es el servidor de red LoRaWAN propiamente dicho. Se encarga de monitorizar el estado de la red, los dispositivos conectados a la misma, y administrar el acceso de nuevos dispositivos a la red. También se encarga, en el caso de redes con múltiples gateways, de resolver duplicidades de dispositivos (dado que un paquete enviado por un dispositivo puede ser recibido y procesado por más de un Gateway), consolidar la información, y ponerla a disposición del servidor de aplicaciones de ChirpStack. También se encarga de las siguientes funcionalidades: Autenticación de dispositivos; gestión de la capa mac LoRaWAN; gestionar el envío de mensajes desde ChirpStack a los dispositivos, haciendo uso del canal descendiente de comunicaciones.
  • Application Server: Tercer componente de ChirpStack. Es corazón de la arquitectura. Permite crear “aplicaciones”, que en este contexto son grupos de dispositivos que envían una información del mismo tipo. Relaciona la información enviada por uno o varios dispositivos, almacenando un histórico, y la pone a disposición de terceros sistemas mediante diversos métodos de integración.
  • Geolocation server: Componente opcional que permite dotar de mayores capacidades de geolocalización de los dispositivos, en caso de que el Gateway no proporcione esta información, o en el que queramos hacer un tratamiento personalizado de la misma.
  • Broker MQTT: Utilizado como sistema de mensajería interna para el resto de componentes de ChirpStack y la comunicación con los gateways.
  • Redis: Motor de base de datos en memoria, que gestiona la información que se intercambia entre los dispositivos y aplicaciones creadas en ChirpStack.
  • Base de datos PostgreSQL: Almacena información de configuración de ChirpStack, organizaciones, aplicaciones, usuarios, etc… además de información histórica enviada por los dispositivos. Existen diversos mecanismos (HTTP, MQTT, InfluxDB, RabbitMQ, PostgreSQL, Azure Service Bus, AWS SNS, API REST).
Arquitectura de alto nivel de Chirpstack

Arquitectura de alto nivel de Chirpstack

El aspecto clave de ChirpStack hace referencia al modo en el que se procesa la información. ChirpStack hace uso de los componentes anteriores para componer y almacenar información estructurada proveniente de los dispositivos de campo, en un formato similar al siguiente:

{
“applicationID”: “123″,
“applicationName”: “temperature-sensor”,
“deviceName”: “garden-sensor”,
“devEUI”: “0202020202020202″,
“rxInfo”: [
{
"gatewayID": "0303030303030303",
"name": "rooftop-gateway",
"time": "2016-11-25T16:24:37.295915988Z",
"rssi": -57,
"loRaSNR": 10,
"location": {
"latitude": 52.3740364,
"longitude": 4.9144401,
"altitude": 10.5
}
}
],
“txInfo”: {
“frequency”: 868100000,
“dr”: 5
},
“adr”: false,
“fCnt”: 10,
“fPort”: 5,
“data”: “…”,
“object”: {
“temperatureSensor”: {“1″: 25},
“humiditySensor”: {“1″: 32}
},
“tags”: {
“key”: “value”
}
}

Otro aspecto interesante es que Chirpstack se puede desplegar de muy diversas maneras, al estar estructurado en una serie de componentes bien definidos que se comunican entre ellos mediante puertos e interfaces estandarizados. Permite tanto realizar un despliegue convencional en un único servidor, a desplegarse en un modelo de microservicios en un entorno Docker o Kubernetes. Para el caso en el que estoy trabajando, he optado por hacer un despliegue basado en contenedores Docker en una máquina virtual, aunque he realizado algunas pruebas con un despliegue más monolítico, y en el ámbito laboral estoy haciendo uso de un entorno Kubernetes.

El despliegue mediante Docker es tremendamente sencillo, ya que los propios desarrolladores de Chirpstack proporcionan una configuración de ejemplo con todos los elementos necesarios. Y una vez desplegado, es bastante sencillo añadir los componentes necesarios. En mi caso, he integrado un gateway Dragino LG308. La integración es tan sencilla como apuntar el servicio LoRaWAN del gateway al puerto 1700/UDP del servidor donde se encuentre levantado el componente Network de Chirpstack. Es posible desplegar un paquete software en el gateway Dragino para convertirlo en un Gateway Bridge de Chirpstack, pero si tenemos éste desplegado en otro sitio, no es necesario realizarlo.

Registro de un gateway en Chirpstack

Registro de un gateway en Chirpstack

Y en cuanto al registro de los dispositivos, tampoco supone mayor inconveniente. Es necesario definir de manera previa unos perfiles de configuración de dispositivos y la aplicación donde registramos estos últimos, y a partir de ahí, se puede crear la propia aplicación, y registrar los dispositivos, bien por OTAA o ABP, en función de nuestras preferencias. Con todo ello, se tiene una red privada LoRaWAN perfectamente funcional.

Ejemplo de recepción de datos de un dispositivo de campo (1)

Ejemplo de recepción de datos de un dispositivo de campo (1)

Ejemplo de recepción de datos de un dispositivo de campo (2)

Ejemplo de recepción de datos de un dispositivo de campo (2)

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , , , , , , ,

20 nov 20 Trabajos en el Puente de los Vinateros

Hace algunos días tuve la sorpresa de ver que se habían llevado acciones de limpieza en el venerable Puente de los Vinateros. Este puente permitía que el camino de Valdehiguera salvara el trazado del ferrocarril minero de Aznalcóllar, y servía para comunicar Valencina de la Concepción y el Aljarafe con Santiponce. En concreto, se utilizaba para permitir el transporte de vinos del Aljarafe hasta el ferrocarril de Cala, que también pasaba por las cercanías de Santiponce, y embarcarlo en Sevilla.

Captura de mapa topográfico antiguo con el puente marcado

Captura de mapa topográfico antiguo con el puente marcado

Con el cierre de ambas vías el puente dejó de tener uso, por lo que poco a poco fue cayendo en el abandono. En mi caso, siempre lo había conocido colmatado de tierra y piedras, y amenazando ruina, que ocasionó que hace algunos años se cortara el trazado de la vía verde de Itálica bajo el puente, creado un trazado alternativo, ya que éste amenazaba ruina. Y así había permanecido, poco a poco más deteriorado, hasta que hace algunas semanas se emprendieron trabajos de limpieza en el mismo, cuya actuación más destacada fue la eliminación de toda la tierra acumulada, hasta rebajarlo a su nivel original:

Puente de los Vinateros limpio de tierra

Puente de los Vinateros limpio de tierra

Lamentablemente el puente ha sufrido nuevos derrumbes, haciendo que pierda parte de sus pretiles originales. Aunque siendo sincero, pensaba, a tenor del relleno de tierra que tenía, que hacía tiempo que los había perdido.

Pretiles derrumbados

Pretiles derrumbados

Por lo que parece, la intención es consolidar el puente y rehabilitarlo, una actuación que no ha llegado tarde por muy poco, porque las grietas a lo largo de toda su estructura eran cada vez mayores y más profundas. Y se entiende, visto la gran cantidad de relleno que alguien había realizado sobre el mismo, tapando por completo toda la alzada de los pretiles.

Graves daños en la estructura del puente

Graves daños en la estructura del puente

He podido localizar un par de vídeos de OlallaReal en los que da más información sobre el puente, y las acciones que parecen estarse llevando a cabo:

Esperemos que este y otros restos del patrimonio ferroviario de Santiponce sean puestos en valor de la manera que merecen.

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , ,

07 nov 20 Control de apertura de puertas y ventanas con Zigbee y sensores Aqara MCCGQ11LM

Seguimos con proyectos de IoT y domótica. En este caso, y para el piso de Forcarey, estoy preparando un sistema de control de apertura de puertas y ventanas con dispositivos Zigbee. Para ello, he escogido los sensores Aqara MCCGQ11LM. Son unos dispositivos fiables, razonablemente baratos, y -lo más importante- están perfectamente soportados en Zigbee2MQTT.

Sensor de puertas y ventanas Aqara MCCGQ11LM

Sensor de puertas y ventanas Aqara MCCGQ11LM

Y es que la gracia de todo este asunto es que no voy a hacer uso del gateway propietario de Aqara/Xiaomi. Desde hace ya algún tiempo tengo experiencia haciendo uso de Zigbee2MQTT como gateway de código abierto para algunos dispositivos Zigbee que tengo instalados en Santiponce, y la idea -como no podía ser menos- era hacer uso de la misma tecnología en Forcarey. Para ello estoy diseñando un pequeño dispositivo, basado en una placa Orange Pi Zero, que actúe como gateway de los dispositivos que voy a desplegar en el nuevo piso.

Orange Pi Zero con módem USB. El otro dispositivo es un receptor Zigbee

Orange Pi Zero con módem USB. El otro dispositivo es un receptor Zigbee

Sí, el dispositivo con conectividad HSDPA que comentábamos en el artículo anterior.

En lo referente a la instalación de Zigbee2MQTT, en líneas generales basta con seguir las instrucciones de instalación que proporciona la web oficial, con una salvedad: en la versión de Armbian que manejo (Buster 20.08.1 con versión de kernel 5.8.5) a la hora de compilar Zigbee2MQTT daba algunos errores con serialport y node-gyp, que están reportados. En mi caso ninguna de las soluciones propuestas funcionaba. Lo único con lo que conseguí hacerlo funcionar fue ignorando la parte de usar el repositorio de Node.js que se indica en las instrucciones en el apartado 2 de las mismas, e instalar tanto Node.js como específicamente node-gyp desde los repositorios oficiales de Debian. De esta manera todo el proceso de instalación concluyó correctamente.

Una vez concluida la instalación, creé el servicio para iniciar automáticamente Zigbee2MQTT al inicio del sistema, asocié los dispositivos, que fueron reconocidos sin mayor inconveniente, con lo que el proceso de configuración del hardware ha quedado concluido. En cuanto al software, el sistema de notificación de actividad de los sensores, en base a recepción de eventos de los dispositivos y su volcado a un servidor MQTT, está concluido. Los eventos se muestran de la siguiente manera:

Eventos registrados en servidor MQTT

Eventos registrados en servidor MQTT

…lo que nos permite, a partir de aquí, crear el sistema de notificaciones. ¿Cómo lo voy a hacer en mi caso? Con el estupendo software Home Assistant, que constituye la base de mi sistema de domótica. Pero eso ya quedará para otro artículo.

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , , , , , , , , , , ,