Testes de alcance automáticos na tua rede Meshtastic
Um bot pequeno que envia umas mensagens num canal em momentos aleatórios, escuta as de todos os outros, e escreve um relatório de quem foi ouvido, a quantos hops e com que sinal — sem precisares de ficar a vigiar um portátil.
Projeto não oficial, sem afiliação nem endosso do projeto Meshtastic. «Meshtastic» é uma marca da Meshtastic LLC, usada aqui apenas para indicar com que tecnologia este bot é compatível.
O que faz
📤 Envia, com agenda
Umas mensagens curtas no teu canal de testes, em momentos aleatórios, para que uma comunidade inteira não emita ao mesmo tempo.
👂 Escuta o tempo todo
Uma só ligação, mantida aberta, ouve toda a gente a correr o mesmo formato, registando hops, SNR, RSSI, e se uma cópia veio via MQTT.
📝 Escreve um relatório
Um ficheiro de texto legível e uma linha JSON por sessão — taxa de entrega, duplicados, pistas de relay, e interrupções na ligação durante o teste.
🤖 Corre sozinho
Imagem Docker para amd64, arm64 e arm/v7 (Raspberry Pi incluída). Repete-se todas as semanas, e recupera sozinho de reinícios do rádio e quedas de WiFi.
🗂️ Vários testes, um rádio
Corre mais do que um teste agendado: um bot por teste, cada um com o seu horário, através do mesmo MeshMonitor. Como configurar (em inglês).
✈️ Envia para o Telegram
Opcional: o relatório de texto de cada sessão é também enviado para um chat do Telegram, através de um bot teu. Define o token do bot e o id do chat, e o relatório chega ao telemóvel quando o teste acaba.
Como é um relatório
=== 2026-09-26 21:41 === Reporter: AB12 (!deadbeef) - Place: City - Sent: 3/3 ACK | CD34 | 0 | Villatown | RF ACK | EF56 | 1-2 | Valley | RF
Uma linha curta e fácil de colar por estação ouvida, com o prefixo, o nome da
estação, o intervalo de hops, o local que reportou, e RF ou MQTT. A linha
correspondente em report.jsonl, para a mesma sessão, tem também os
números completos:
- 📊 Taxa de entrega — quantas das suas mensagens chegaram, e leituras duplicadas da mesma.
- 📶 SNR e RSSI — o melhor e o pior valor visto durante a sessão.
- 🌐 RF ou MQTT — uma cópia que só chegou via MQTT é assinalada e nunca conta como alcance RF.
- 🔁 Uma pista de relay — que nó provavelmente a retransmitiu, quando o pacote deu mais do que um salto.
report.jsonl é pensado para um servidor ir buscar mais tarde — por
agora os relatórios ficam só na tua máquina, mas uma versão futura pode permitir
enviá-los, por opção tua, para agregar estatísticas de cobertura de toda a rede, com
todos os que usarem o bot.
Começar
És novo nisto, ou não sabes o que é o Docker? Segue o Começa aqui.
Caso contrário, em Linux, macOS ou Raspberry Pi, um comando, se já tiveres Docker:
curl -fsSL https://raw.githubusercontent.com/cunhaax/mesh-test-bot/master/install/install.sh | sh
Faz algumas perguntas — como o bot deve chegar ao rádio (diretamente, através de um MeshMonitor já existente, ou configurando um aqui mesmo), o canal de testes, a tua cidade, os prefixos da mensagem e do relatório, se queres correr num horário recorrente ou por iniciativa tua, a duração da sessão, o número de mensagens e a janela do relatório — basta Enter para aceitar cada valor por omissão. Depois mostra os comandos que arrancam o(s) bot(s): nunca arranca nada sozinho. O teu rádio não tem WiFi (só USB ou Bluetooth, como o RAK4631)? Vê rádios sem WiFi (em inglês). Vê o README para instalar a partir do código, ou sem Docker, e o guia do MeshMonitor (em inglês) para os detalhes desse caminho.
📐 Dimensiona o teu teste
O LoRa não tem prevenção real de colisões, por isso muitas estações a partilhar uma janela curta podem saturar o canal — exatamente o congestionamento que um teste de alcance quer medir. Vê que fatia da tua janela um teste coordenado ocuparia:
Modelo aproximado: a fórmula standard de time-on-air do LoRa
(Semtech AN1200.13) multiplicada por uma estimativa de quantas vezes cada mensagem é
retransmitida no ar. Não é garantia, e não é imposto pelo bot em si —
message_count tem um máximo de 10 e listen_minutes tem um
mínimo de 30 minutos, e o relatório tem pelo menos 10 minutos, independentemente desta
calculadora.
Ligações
- Repositório e documentação completa (em inglês)
- Correr junto do MeshMonitor (em inglês)
- Licença (GPL-3.0-or-later)