Guides
ChirpStack: cómo recibir una alerta cuando un dispositivo deja de enviar
ChirpStack no incluye alertas. Tres formas de enterarte de que un dispositivo LoRaWAN se ha quedado mudo: la integración HTTP, la API gRPC y un watchdog alojado.
ChirpStack no te avisa cuando un dispositivo deja de enviar. Sorprende, pero la
razón es clara: ChirpStack es un servidor de red, no una plataforma de monitorización.
Expone datos mediante integraciones y una API, y deja las alertas a lo que
consuma esos datos. No hay motor de reglas, ni pestaña de notificaciones, ni correo de
«dispositivo desconectado» esperando a que lo actives.
Un sensor con la pila agotada, con humedad dentro de la caja o con un rejoin
fallido produce exactamente lo mismo que un sensor que funciona perfectamente y
simplemente todavía no ha transmitido: nada. El hueco solo se ve cuando alguien mira
una gráfica.
Lo que ChirpStack sí ofrece
Estado del dispositivo. ChirpStack emite periódicamente el comando
MAC DevStatusReq y guarda el nivel de batería y el margen de enlace que
el dispositivo devuelve. El intervalo se configura en el perfil de dispositivo. Es
útil para detectar una pila que va cayendo, pero no sirve para un dispositivo que ha
dejado de hablar del todo: una petición de estado sin respuesta simplemente se queda
sin respuesta.
La marca de tiempo lastSeenAt. Este es el campo que
de verdad importa, y todo lo que sigue es una manera de vigilarlo.
Opción 1: la integración HTTP (recomendada)
La de menos esfuerzo y la más fiable. En Applications ▸ tu aplicación ▸
Integrations ▸ HTTP, indica una URL de endpoint. ChirpStack enviará un POST JSON
en cada uplink, con el EUI del dispositivo, su nombre, el contador de tramas y las
pasarelas que lo han oído.
{
"deviceInfo": { "devEui": "24e124707c481234", "deviceName": "IO103M" },
"fCnt": 412,
"rxInfo": [ { "gatewayId": "2cf7f11e15ec0000", "rssi": -97, "snr": 8.2 } ],
"object": { "battery": 88 }
}
Ojo: ChirpStack envía eventos de join, ack y estado a esa misma URL. Considera
solo los uplinks como prueba de vida — un ack no es un sensor que funcione.
Publicamos un script de Python de un solo fichero, sin dependencias, que hace
exactamente esto:
uplink-watchdog,
con licencia MIT.
Opción 2: consultar la API
También puedes leer lastSeenAt de cada dispositivo cada cierto tiempo
y alertar sobre cualquier valor caducado.
Una trampa: ChirpStack v4 ya no incluye API REST. La interfaz REST
de la v3 era una capa de traducción sobre gRPC y se eliminó en la v4. Si necesitas
REST, tienes que ejecutar el contenedor aparte
chirpstack-rest-api;
si no, hablas gRPC mediante el paquete chirpstack-api.
Además, el sondeo escala peor: con unos cientos de dispositivos estarás lanzando
una petición paginada grande cada pocos minutos para averiguar algo que el servidor
de red te habría contado gratis.
Elegir el umbral de silencio
Aquí es donde falla casi toda la monitorización casera. Un tiempo de espera global
no encaja con un parque real: un contador de personas que transmite cada 15 minutos y
un sensor de nivel que transmite una vez al día necesitan ventanas separadas por dos
órdenes de magnitud. Si la ajustas corta, los sensores diarios dan falsas alarmas cada
noche; si la dejas larga, un contador muerto pasa desapercibido todo un día.
El enfoque que funciona es por dispositivo y aprendido: registra el intervalo medio
de cada dispositivo y trata unos tres intervalos perdidos como avería. Tres es lo
bastante tolerante para sobrevivir a un uplink perdido — algo normal en cualquier red
de radio — y lo bastante estricto para detectar una avería real el mismo día.
Un detalle fácil de pasar por alto: excluye del cálculo de esa media los huecos del
tamaño de una caída. Si una avería de dos días entra en la media, el intervalo
esperado se dispara y la siguiente caída tarda mucho más en detectarse. El
ritmo aprendido debe reflejar solo el comportamiento sano.
Vigila también las pasarelas
Cada uplink lleva un array rxInfo con las pasarelas que lo recibieron.
Registrarlas te da monitorización de pasarelas sin configuración adicional: si una
pasarela deja de aparecer en cualquier rxInfo, ha dejado de retransmitir.
Esto importa porque una pasarela caída parece que todos los dispositivos que hay
detrás mueren a la vez — y quieres que te avisen de la causa, no del síntoma.
El problema de alojar tú mismo la vigilancia
Vale para todas las opciones anteriores y conviene decirlo claro: si tu
monitorización corre en tu propia infraestructura, nadie vigila a la vigilancia. Si el
proceso muere, el servidor se reinicia o el disco se llena, las alertas se detienen —
y la ausencia de alertas se parece exactamente a que no pasa nada.
Para una red doméstica es un riesgo asumible. Para un parque del que respondes por
contrato, es el fallo que acaba pasando factura.
Opción 3: un watchdog alojado
Para eso construimos UplinkWatch, así que lee esta sección sabiendo
lo que es. Pegas nuestra URL de ingesta en ese mismo campo de integración HTTP y la
vigilancia ocurre en nuestra infraestructura, no en la tuya. Dispositivos y pasarelas
se registran solos, el ritmo se aprende por dispositivo y las alertas salen por correo,
notificación al móvil o webhook. Gratis hasta 5 dispositivos.
Alojado en la Unión Europea: nuestros servidores están en Helsinki
(Finlandia), en Hetzner. Tus metadatos de uplink no salen de la UE.
Si solo tienes un puñado de dispositivos y te gusta gestionar tus propios servicios,
el script de la opción 1 es sinceramente suficiente.
Nota: la interfaz web de UplinkWatch está en inglés.
Soporte en español por correo a
info@geosensor.tech.
Stop finding out from your client
UplinkWatch alerts you the moment a device or gateway
goes quiet. Paste one URL into your network server. Free for 5 devices.
Start free
What it does
Also available in:
English · Deutsch · Français · Português
Last updated 2026-09-03.