Un software per gestire off-grid la rete LoRa MeshCom
L’obiettivo di questo progetto, puramente amatoriale, è quello di gestire una infrastruttura radioamatoriale off-grid (quindi non raggiungibile via internet) composta da schede lora con firmware meshcom (chiamate “nodi” o stazioni radio mobili) che dialogano tra loro (tecnologia mesh) scambiandosi messaggi, posizioni e telemetrie via radio (433.175 MHz). Queste informazioni sono raccolte in un database e gestite da una stazione radio che chiameremo “campo base o gateway”. Il campo base (postazione fissa) ha a sua volta una scheda lora collegata fisicamente al computer ed elabora le informazioni ricevute. Se provvisto di connessione ad internet opererà come “gateway”, quindi potrà interagire con strutture esterne (es. altri gateway e/o nodi lora). I nodi mobili (tracker) sono provvisti di schede con GPS, il campo base può farne a meno e gestire le coordinate manualmente. Il campo base potrà:
- registrare uno storico di tutte le informazioni transitate;
- interagire con brevi messaggi di testo con i nodi mobili e con il resto del network;
- conoscere le posizioni e la distanza dei nodi mobili;
- visualizzare su mappa (se provvisto di internet) le posizioni dei nodi mobili;
- attivare automatismi (es. avvisi) ed eseguire procedure (script) alla ricezione di specifici comandi.
Ogni stazione lora meshcom ha un proprio identificativo (callsign radioamatoriale con ssid) che la rende univoca. Di seguito uno schema rappresentativo, che, come già detto, non ha velleità particolari se non quello di esercizio operativo amatoriale e di programmazione:

Nella rappresentazione vediamo il campo base che può lavorare off-grid con i dispositivi mobili (tipicamente viene collegata una antenna esterna alla scheda lora); i tracker si ascoltano tra loro e in mesh si raggiungono, quindi non è obbligatorio che tutti interagiscano direttamente con il campo base. Un esempio: IK5XMK-33 si trova distante e coperto da montagna e non può sentire il campo base, diversamente sente in maniera reciproca il nodo IK5XMK-31. Con questo potrà interagire e potrà far pervenire le informazioni sulla posizione ed eventuali messaggi fino al campo base IK5XMK-30. Il campo base conseguentemente opererà attraverso IK5XMK-31 che ascolta direttamente e gestirà le informazioni pervenute (visualizzazione della posizione di IK5XMK-31, etc.). Ovviamente molti più nodi potranno essere presenti così da formare una completa e funzionale “maglia radio”. Con l’impiego di apparati radio ricetrasmittenti la struttura potrà completarsi fornendo anche ausilio in fonia. Procediamo adesso, passo dopo passo, alla messa in opera dei programmi che sono preparati in ambiente Windows (provati su W11/64bit). E’ richiesta una conoscenza base del sistema operativo e della programmazione/gestione dei dispositivi lora meshcom. Il primo software che andremo a conoscere è chiamato “logger” ed il suo compito è quello di interfacciarsi con la scheda lora attraverso la porta seriale/usb e registrare quanto perviene da essa in un database. Quindi dopo aver programmato la scheda lora in modo che sia operativa (callsign, coordinate della posizione, etc.), collegarla al computer e con un programma di terminale:
- configurare la connessione WIFI (qualsiasi rete, serve solo per attivare le funzioni UDP) con i comandi –setssid SSID e –setpwd PWD
- configurare l’IP al quale inviare i dati (può essere 255.255.255.255) con il comando –-extudpip ip
- attivare la trasmissione e ricezione dei dati con il comando –extudp on
Adesso procediamo con la configurazione (file config.json che deve essere presente nella stessa directory del programma) del logger impostando la porta seriale in uso, il nominativo radioamatoriale che stiamo usando sulla scheda lora e il percorso (path) del database. Di default lo crea nella directory ove è presente logger. Per informazione, se modifichiamo il path, questo dovrà essere del tipo “C:\\Users\\user.user-PC\\Desktop\\meshcom.db” (attenzione alle \\). Consiglio di posizionare tutti i programmi in una cartella sul desktop. Eseguiamo il programma (esegui_logger.bat) e attendiamo che riceva dei pacchetti (se non è configurata la scheda lora come gateway e può operare su internet, questa dovrà interagire in RF con altri nodi). In un ambiente off-grid accendiamo vicino anche i nodi tracker in modo sia possibile assicurarci della loro funzionalità. Se tutto è configurato correttamente, lo scenario sarà simile al seguente:

Il programma logger riceve i dati (posizione, telemetria e messaggi) dalla scheda lora via seriale e deve essere sempre in esecuzione e avviato per primo, la presenza della porta 1703 UDP è necessaria per l’interfacciamento con gli altri programmi della suite. Appena vediamo che sono stati acquisiti dei pacchetti “msg” potremo iniziare a operare sul secondo programma (messaggi). La prima operazione è quella di editare il file config_messages.json e verificare il percorso del database. Se lasciamo il percorso del database di default (come nella configurazione del logger), questo verrà cercato nella cartella di esecuzione dei programmi. Lanciamo il programma con esegui_messages.bat. Viene letto il database (default ogni 10 secondi, parametro POLL_INTERVAL) e mostrato l’ultimo messaggio pervenuto (l’archivio completo è consultabile da qualsiasi programma client-browser sqlite3 reperibile su internet). La gestione di questi dati e programmi è pensata per un uso “immediato, sul posto”, consiglio di cancellare periodicamente il database (es. da operazioni pianificate di Windows) se si lasciano in esecuzione continua.

Il programma mc_messages lavora sui gruppi (campo DST). In alto a sinistra è possibile impostare un filtro sui gruppi relativamente ai messaggi in arrivo da visualizzare (es. 22251 o 222*). In occasione di una specifica operatività (es. esercitazione) possiamo predisporre un gruppo esclusivo da attenzionare. Facendo click con il mouse sul campo DST di un messaggio si apre una finestra ove è possibile trasmettere una risposta che verrà inviata alla scheda lora.

Il messaggio in risposta è stato ricevuto dal logger che provvede ad inviarlo alla mesh:

Con appositi script possiamo interagire anche su telegram:

Proseguiamo con il terzo software che si occupa di mostrare le posizioni dei nodi acquisiti, ovvero quelli che hanno inviato le coordinate e che sono raggiungibili come path (quindi anche sfruttando la mesh) dalla scheda collegata. Editare il file di configurazione (nodes_config.json) dove notiamo la presenza della chiave SHOW_ONLY_TODAY ; se impostata a true (differentemente a false) verranno gestite solo le informazioni pervenute in data odierna per maggior dinamicità delle operazioni. Per operare il programma ha necessità siano presenti record “pos” nel database:
![]()
Eseguiamo il programma con esegui_nodes.bat Di default il programma calcola le distanze partendo dal nodo impostato nella configurazione (chiave MY_CALLSIGN) che dovrebbe indicare il “campo base”. Viene evidenziato con una riga di colore verde:

Selezionando uno qualsiasi dei nodi presenti nella lista viene effettuato un ricalcolo delle distanze (dal database viene fatta una estrapolazione –POOL– ogni xx secondi dell’ultimo record-posizione pervenuto dal nodo), usando come origine il nominativo selezionato:

Il programma “Mappa nodi” mostra una mappa sulla quale un marcatore evidenzia il punto ove il nodo selezionato si trova. A differenza dei precedenti software che lavorano totalmente “off grid” e che sono sufficienti per una visione e gestione completa dei messaggi e posizioni dei partecipanti, questo programma richiede internet per scaricare da OpenStreetMap le mappe. Il file di configurazione (config_map.json) contiene la chiave RADIUS_KM il cui valore rappresenta il raggio di visualizzazione della mappa partendo dal nodo selezionato. Il primo nodo dell’elenco è l’ultimo in ordine di tempo che ha trasmesso la propria posizione. Il marcatore sulla mappa riporta anche il giorno e l’ora della trasmissione ricevuta. Il programma viene eseguito lanciando esegui_map.bat e dispone di uno zoom sulla mappa. Il tempo di aggiornamento (e riposizionamento al valore di default dello zoom) è dato dal POOL al database, in secondi.

Il programma “listener” (esegui_listener.bat) ascolta i messaggi che vengono registrati nel database, e se trova il comando inviato al gruppo configurato dal nodo autorizzato esegue lo script (file .bat) associato al comando. Editare il file di configurazione (config_listener.json) indicando il gruppo da attenzionare ed i nodi autorizzati ad inviare comandi. La chiave KEEP_ALIVE_SECONDS indica il tempo (secondi) dopo il quale il comando ricevuto NON sarà più ritenuto valido. Specificare quindi un testo per i comandi ed il percorso dove si trovano gli script (file .bat per Windows) da eseguire. Anche in questo caso controllare di avere i permessi alle cartelle dove vengono eseguiti gli scripts.

Se il comando viene ricevuto correttamente nelle autorizzazioni concesse verrà eseguito lo script sul computer ove è in esecuzione il software:


L’ultimo software è una utility che serve per “pulire” il database, lasciando solo l’ultimo record ricevuto in ogni tabella. Eseguire il comando indicando il path e nome del database (es. in Windows mc_dbcleaner.exe meshcom.db). Può essere messo nelle operazioni pianificate per gestire con periodicità questa operazione, magari facendo prima una copia del database così da avere uno storico dei dati transitati.

Note: questi programmi sono “sperimentazioni software” su applicazione pratica della tecnologia lora, firmware meshcom. Nessuna garanzia e/o supporto è dato e sono di libero utilizzo in ambito radioamatoriale. Nessuna assunzione di responsabilità da parte dell’autore e di quanto scritto. Possono esserci modifiche nel tempo che pregiudicano il funzionamento, sia dovute al firmware meshcom che dal sistema operativo e ambiente di esecuzione impiegato.