Chirpstack

ChirpStack es un stack LoRaWAN de código abierto desarrollado por un ingeniero de software llamado Orne Brocaar y patrocinado por CableLabs. En este artículo, te contamos más sobre ChirpStack, así como su interesante historia. ¡No te la pierdas!

Fotografía de cables de red conectados a un servidor de red. Esta imagen se encuentra dentro del artículo de blog de AlfaIOT en el que habla de ChirpStack.

¿Qué es Chirpstack?

ChirpStack es un servidor de red LoRaWAN de código abierto que se puede utilizar para configurar redes LoRaWAN. ChirpStack proporciona una interfaz web para la gestión de gateways, dispositivos y tenants, así como para configurar integraciones de datos con los principales proveedores de nube, bases de datos y servicios comúnmente utilizados para manejar datos de dispositivos. ChirpStack proporciona una API basada en gRPC que se puede utilizar para integrar o ampliar ChirpStack.
* gRPC es un sistema de llamada a procedimiento remoto de código abierto desarrollado inicialmente en Google.

Este servidor de red ofrece todos los elementos necesarios para montar nuestro propio backend LoRaWAN, desde el programa packet-forwarder hasta el Application Server, encontrando también el Gateway Bridge y el Network Server.

Packet-Forwarder

Packet-Forwarder es la aplicación encargada de reenviar los paquetes a un administrador de gateways.

ChirpStack Application Server

Application Server es el componente encargado de administrar el inventario de dispositivos, solicitudes nuevas de conexión, encriptación y datos de aplicación.

ChirpStack Gateaway Bridge

Gateaway Bridge es el componente que convierte el protocolo LoRa-packet-forwarder en el formato de datos de ChirpStack-Network-Server, que es el siguiente componente.

ChirpStack Network Server

Network Server es el componente que revisa los mensajes duplicados en la red, ya sea por reintentos de transmisión desde un mismo dispositivo o por recepción de mensajes en más de un gateway.

Migración de ChirpStack v3 a ChirpStack v4

Comentar que, en 2022, Orne Brocaar lanzó la versión v4 de ChirpStack. Esta versión tiene algunos cambios importantes en comparación con la versión v3. Es importante saberlo, puesto que este cambio puede afectar la integración hacia otras aplicaciones. Algunos de los despliegues de ChirpStack existentes todavía se están ejecutando en v3, por lo que es importante saberlo y tener a mano la documentación correcta.

El objetivo de ChirpStack v4 es hacer que éste sea más fácil de configurar y utilizar, en comparación con la versión anterior v3. El cambio más destacado es que ChirpStack Network Server y ChirpStack Application Server se han fusionado en uno. Esto se debe a los continuos problemas de configuración y conexión reportados por los usuarios.

Algunas de las novedades que trae consigo ChirpStack v4 son:

· Soporte multirregional. Esto elimina la necesidad de configurar múltiples instancias de ChirpStack Network Server.
· Panel/Dashboard de métricas de los dispositivos.

· Se elimina la jerarquía TOML.
· La interfaz REST es sustituida por la gRPC.

· ChirpStack v4 es compatible con ChirpStack Gateway Bridge v3.
· La nueva interfaz de usuario es más fácil de usar (user-friendly).
· Se han reestructurado las integraciones de los eventos de mensajes para conseguir una mayor coherencia.
· Ahora se utiliza el lenguaje de programación Rust (en vez de Go).
· Repositorio único. En ChirpStack v4 es más fácil realizar personalizaciones, especialmente cuando se trata de cambio de API, puesto que las definiciones de API ya no están separadas del código.

Puedes encontrar toda la documentación en la página web oficial, sección «Documentation v4«, incluyendo las instrucciones para la migración de v3 a v4.

La historia de ChirpStack

No vamos a ser capaces de explicarte qué es Chirpstack (antiguamente conocido como Lora Server) mejor que su creador y mantenedor principal Orne Brocaar, por ello os dejamos con una transcripción de sus palabras para Medium.

El origen de LoRaServer

Todo comenzó a finales de 2015 con el paquete de Lorawan en Go. Este paquete es responsable de la codificación y decodificación de los cuadros de LoRaWAN. Dado que LoRaWAN está restringido por las restricciones de tiempo de emisión y de ciclo de trabajo, la LoRa Alliance definió LoRaWAN como un formato binario para mantener los fotogramas de LoRaWAN lo más compactos posible.

El paquete LoRaWAN codifica y decodifica a partir de este formato binario. También proporciona todas las funciones para el cifrado y la validación de la integridad de los mensajes. Como subpaquete, también proporciona todos los parámetros para cada región LoRaWAN (frecuencias, tasas de datos, …). Poco después de abrir el paquete Lorawan, necesitaba algo para probar la implementación del protocolo LoRaWAN, así es como nació el Servidor LoRa (LoRa Server).

Inicialmente no era más que un simple servidor de red (con interfaz web) en el que se podía configurar una lista de dispositivos y que reenviaba los datos a través de MQTT. Sin usuarios, sin organizaciones, sin aplicaciones, sólo una lista de dispositivos. También fue así como nació el componente LoRa Gateway Bridge, para que pudiera enrutar todos los datos de la puerta de enlace usando MQTT y LoRa Server no tuviera que saber sobre ninguna conexión de puerta de enlace. No mucho después decidió desacoplar la parte del servidor de aplicaciones y la interfaz web del Servidor LoRa. Así es como nació el Servidor de Aplicaciones LoRa (Application Server).

Dejando que el Servidor LoRa se mantuviera cerca del protocolo LoRaWAN, pudo hacer del Servidor de Aplicaciones LoRa un componente opcional que para la mayoría de los usuarios proporciona todas las características necesarias, pero que podría ser intercambiado cuando por ejemplo uno quisiera integrar LoRa Server directamente como un servidor de red dentro de una infraestructura existente.

El estado actual del proyecto LoRaServer

En la actualidad, el proyecto se sostiene gracias al patrocinio de CableLabs, SIDN Fonds y Aclio, de manera que Brocaar ha podido trabajar a tiempo completo en este proyecto desde principios de 2017. Se han implementado muchas características nuevas y el proyecto ha madurado desde un simple proyecto a través del cual se puede gestionar una lista de dispositivos hasta múltiples «bloques de construcción». Gracias a ellos, se pueden gestionar organizaciones, usuarios, puertas de enlace, integraciones de aplicaciones y dispositivos.

Algunas de las características que vale la pena mencionar:

Soporte para múltiples servidores de red

El servidor de aplicaciones de LoRa permite conectarse a una o varias instancias del servidor de LoRa. Esto significa que puedes configurar una instancia del Servidor de LoRa para, por ejemplo, la banda de EEUU y la de la UE y aún así administrarlas desde una sola instancia del Servidor de Aplicaciones de LoRa o Application Server.

Soporte de organización

A través de LoRa App Server es posible crear diferentes organizaciones y asignar usuarios a estas organizaciones. Un usuario es un usuario normal o un administrador dentro de la organización dada. Una organización puede entonces aprovisionar dispositivos en uno o varios servidores de red (instancias de LoRa Server).

Soporte multibanda

Chirpstack soporta todas las bandas definidas por la especificación de los Parámetros Regionales de LoRaWAN.

Tasa de datos adaptable

Chirpstack soporta una tasa de datos adaptable para todas las regiones definidas. Al habilitar la tasa de datos adaptable (en el dispositivo), el servidor LoRa controlará la tasa de datos (velocidad) y la potencia de transmisión. Esto significa que cuanto más cerca esté un dispositivo de una puerta de enlace, menos tiempo de emisión y potencia utilizará para la comunicación. Esto no sólo aumenta la duración de la batería de cada dispositivo ADR, sino que también mejora el rendimiento de la red.

Registro de mensajes en vivo

En la interfaz web del servidor de aplicaciones LoRa, puedes ver todos los fotogramas enviados y recibidos por cada puerta de enlace o dispositivo. Esta interfaz también te permite inspeccionar cada marco LoRaWAN (encriptado). Compara esto con un Wireshark para LoRaWAN.

Representación gráfica de unas redes.