UplinkWatch

Guides

ChirpStack: como receber um alerta quando um dispositivo deixa de enviar

O ChirpStack não tem alertas nativos. Três formas de saber que um dispositivo LoRaWAN ficou em silêncio: a integração HTTP, a API gRPC e um watchdog alojado.

O ChirpStack não avisa quando um dispositivo deixa de enviar. A razão é simples: o ChirpStack é um servidor de rede, não uma plataforma de monitorização. Expõe dados através de integrações e de uma API, e deixa os alertas para quem consumir esses dados. Não há motor de regras, nem separador de notificações, nem um e-mail de «dispositivo offline» à espera de ser activado.

Um sensor com a pilha gasta, com humidade dentro da caixa ou com um rejoin falhado produz exactamente o mesmo que um sensor que funciona bem e apenas ainda não transmitiu: nada. A falha só se nota quando alguém olha para um gráfico.

O que o ChirpStack dá de facto

Estado do dispositivo. O ChirpStack envia periodicamente o comando MAC DevStatusReq e guarda o nível de bateria e a margem de ligação que o dispositivo devolve. O intervalo configura-se no perfil do dispositivo. É útil para apanhar uma pilha em fim de vida, mas não ajuda com um dispositivo que deixou de falar de todo: um pedido de estado sem resposta fica simplesmente sem resposta.

A marca temporal lastSeenAt. É este o campo que interessa, e tudo o resto é uma forma de o vigiar.

Opção 1: a integração HTTP (recomendada)

A que dá menos trabalho e a mais fiável. Em Applications ▸ a sua aplicação ▸ Integrations ▸ HTTP, defina um URL de endpoint. O ChirpStack fará um POST em JSON a cada uplink, com o EUI do dispositivo, o nome, o contador de tramas e os gateways que o ouviram.

{
  "deviceInfo": { "devEui": "24e124707c481234", "deviceName": "IO103M" },
  "fCnt": 412,
  "rxInfo": [ { "gatewayId": "2cf7f11e15ec0000", "rssi": -97, "snr": 8.2 } ],
  "object": { "battery": 88 }
}

Atenção: o ChirpStack envia eventos de join, ack e estado para o mesmo URL. Trate apenas os uplinks como sinal de vida — um ack não é um sensor a funcionar.

Publicamos um script Python de ficheiro único, sem dependências, que faz exactamente isto: uplink-watchdog, com licença MIT.

Opção 2: consultar a API

Em alternativa, pode ler o lastSeenAt de todos os dispositivos periodicamente e alertar sobre valores desactualizados.

Uma armadilha: o ChirpStack v4 já não inclui API REST. A interface REST da v3 era uma camada de tradução sobre gRPC e foi removida na v4. Quem precisa de REST tem de correr o contentor separado chirpstack-rest-api; caso contrário, fala gRPC através do pacote chirpstack-api.

O polling também escala pior: com algumas centenas de dispositivos estará a fazer um pedido paginado grande de poucos em poucos minutos para saber algo que o servidor de rede lhe teria dito de graça.

Escolher o limiar de silêncio

É aqui que falha quase toda a monitorização feita em casa. Um tempo-limite único não serve para um parque real: um contador de pessoas que transmite de 15 em 15 minutos e um sensor de nível que transmite uma vez por dia precisam de janelas separadas por duas ordens de grandeza. Curta demais, os sensores diários dão alarme falso todas as noites; larga demais, um contador morto passa despercebido um dia inteiro.

A abordagem que resulta é por dispositivo e aprendida: registe o intervalo médio de cada dispositivo e trate cerca de três intervalos falhados como avaria. Três é tolerante que chegue para sobreviver a um uplink perdido — normal em qualquer rede rádio — e apertado que chegue para apanhar uma avaria real no próprio dia.

Um pormenor fácil de escapar: exclua do cálculo dessa média as falhas com duração de avaria. Se uma paragem de dois dias entrar na média, o intervalo esperado dispara e a avaria seguinte demora muito mais a ser detectada. O ritmo aprendido deve reflectir apenas comportamento saudável.

Vigie também os gateways

Cada uplink traz um array rxInfo com os gateways que o receberam. Registá-los dá-lhe monitorização de gateways sem configuração adicional: se um gateway deixa de aparecer em qualquer rxInfo, deixou de encaminhar. Isto importa porque um gateway em baixo parece que todos os dispositivos por trás dele morrem ao mesmo tempo — e o que quer saber é a causa, não o sintoma.

O problema de alojar a vigilância em casa

Aplica-se a todas as opções acima e vale a pena dizê-lo com clareza: se a sua monitorização corre na sua própria infra-estrutura, ninguém vigia a vigilância. Se o processo morre, se a máquina reinicia ou se o disco enche, os alertas param — e a ausência de alertas é indistinguível de estar tudo bem.

Numa rede de hobby é um risco aceitável. Num parque pelo qual responde contratualmente, é a falha que mais cedo ou mais tarde custa caro.

Opção 3: um watchdog alojado

Foi para isto que construímos o UplinkWatch, portanto leia esta secção com isso em mente. Cola o nosso URL de ingestão nesse mesmo campo de integração HTTP e a vigilância passa a correr na nossa infra-estrutura em vez da sua. Dispositivos e gateways registam-se sozinhos, o ritmo é aprendido por dispositivo, e os alertas seguem por e-mail, notificação no telemóvel ou webhook. Gratuito até 5 dispositivos.

Alojado na União Europeia: os nossos servidores estão em Helsínquia (Finlândia), na Hetzner. Os seus metadados de uplink não saem da UE.

Se tem apenas um punhado de dispositivos e gosta de gerir os seus próprios serviços, o script da opção 1 chega perfeitamente.

Nota: a interface web do UplinkWatch está em inglês. Apoio em português por e-mail para 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 · Español

Last updated 2026-09-03.