mesh-test-bot
não oficial · sem afiliação com o Meshtastic

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:

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