
MeshCore room-server-v1.17.0
Un nuovo protocollo mesh di routing ibrido e leggero per radio a pacchetto.
Informazioni su MeshCore
MeshCore è una libreria C++ leggera e portabile che consente il routing multi-hop dei pacchetti per progetti embedded utilizzando LoRa e altre radio a pacchetto. È progettata per sviluppatori che desiderano creare reti di comunicazione resilienti e decentralizzate che funzionano senza internet.
🔍 Cos'è MeshCore?
MeshCore ora supporta una gamma di dispositivi LoRa, consentendo un flashing semplice senza la necessità di compilare manualmente il firmware. Gli utenti possono flashare un binario precompilato utilizzando strumenti come Adafruit ESPTool e interagire con la rete tramite una console seriale. MeshCore offre la possibilità di creare reti mesh wireless, simili a Meshtastic e Reticulum ma con un focus sul routing multi-hop leggero dei pacchetti per progetti embedded. A differenza di Meshtastic, che è pensato per la comunicazione LoRa occasionale, o Reticulum, che offre networking avanzato, MeshCore bilancia semplicità e scalabilità, rendendolo ideale per soluzioni embedded personalizzate, dove i dispositivi (nodi) possono comunicare su lunghe distanze inoltrando messaggi attraverso nodi intermedi. Questo è particolarmente utile in situazioni off-grid, di emergenza o tattiche dove l'infrastruttura di comunicazione tradizionale non è disponibile.
⚡ Caratteristiche principali
- Routing Multi-Hop dei Pacchetti
- I dispositivi possono inoltrare messaggi attraverso più nodi, estendendo la portata oltre quella di una singola radio.
- Supporta un numero configurabile di hop per bilanciare l'efficienza della rete e prevenire traffico eccessivo.
- I nodi utilizzano ruoli fissi dove i nodi "Companion" non ripetono affatto i messaggi per prevenire l'utilizzo di percorsi di routing dannosi.
- Supporta Radio LoRa – Funziona con Heltec, RAK Wireless e altro hardware basato su LoRa.
- Decentralizzato e Resiliente – Nessun server centrale o internet richiesto; la rete è auto-riparante.
- Basso Consumo Energetico – Ideale per dispositivi alimentati a batteria o solare.
- Semplice da Distribuire – Applicazioni di esempio precompilate rendono facile iniziare.
🎯 Per cosa puoi usare MeshCore?
- Comunicazione Off-Grid: Rimani connesso anche in aree remote.
- Risposta alle Emergenze e Ripristino dopo Disastri: Configura reti istantanee dove l'infrastruttura è inattiva.
- Attività all'Aperto: Comunicazione per escursioni, campeggio e gare di avventura.
- Applicazioni Tattiche e di Sicurezza: Casi d'uso militari, forze dell'ordine e sicurezza privata.
- IoT e Reti di Sensori: Raccogli dati da sensori remoti e trasmettili a una posizione centrale.
🚀 Come Iniziare
- Guarda la MeshCore QuickStart Playlist di The Comms Channel
- Guarda la MeshCore Technical Presentation di Liam Cottle.
- Leggi le nostre Domande Frequenti e la Documentazione.
- Flasha il firmware MeshCore su un dispositivo supportato.
- Connettiti con un client supportato.
Per gli sviluppatori:
- Installa PlatformIO in Visual Studio Code.
- Clona e apri il repository MeshCore in Visual Studio Code.
- Guarda le applicazioni di esempio che puoi modificare ed eseguire:
- Companion Radio - Per l'uso con un'app di chat esterna, tramite BLE, USB o Wi-Fi.
- KISS Modem - Bridge del protocollo seriale KISS per applicazioni host. (documentazione del protocollo)
- Simple Repeater - Estende la copertura della rete inoltrando messaggi.
- Simple Room Server - Un semplice server BBS per Post condivisi.
- Simple Secure Chat - Comunicazione testuale sicura basata su terminale tra dispositivi.
- Simple Sensor - Nodo sensore remoto con telemetria e allarmi.
L'esempio Simple Secure Chat può essere utilizzato tramite il Serial Monitor in Visual Studio Code, o con un Serial USB Terminal su Android.
⚡️ MeshCore Flasher
Abbiamo firmware precompilati pronti da flashare su dispositivi supportati.
- Avvia https://meshcore.io/flasher
- Seleziona un dispositivo supportato
- Flasha uno dei tipi di firmware:
- Companion, Repeater o Room Server
- Una volta completato il flashing, puoi connetterti con uno dei client MeshCore qui sotto.
📱 Client MeshCore
Firmware Companion
Il firmware companion può essere connesso tramite BLE, USB o Wi-Fi a seconda del tipo di firmware che hai flashato.
- Web: https://app.meshcore.nz
- Android: https://play.google.com/store/apps/details?id=com.liamcottle.meshcore.android
- iOS: https://apps.apple.com/us/app/meshcore/id6742354151?platform=iphone
- NodeJS: https://github.com/liamcottle/meshcore.js
- Python: https://github.com/fdlamotte/meshcore-cli
Firmware Repeater e Room Server
Il firmware repeater e room server può essere configurato tramite USB nello strumento di configurazione web.
Possono anche essere gestiti tramite LoRa nell'app mobile utilizzando la funzione Remote Management.
🛠 Compatibilità Hardware
MeshCore è progettato per i dispositivi elencati nel MeshCore Flasher
📜 Licenza
MeshCore è un software open-source rilasciato sotto Licenza MIT. Sei libero di usarlo, modificarlo e distribuirlo per progetti personali e commerciali.
Contribuire
Invia le PR usando 'dev' come branch di base! Per modifiche minori invia semplicemente la tua PR e cercheremo di revisionarla, ma per qualsiasi cosa più 'impatto' apri prima una Issue e avvia una discussione. È meglio sondare prima quello che vuoi ottenere, e cercare di raggiungere un consenso sull'approccio migliore, specialmente quando impatta la struttura o l'architettura di questo codebase.
Ecco alcuni principi generali che dovresti cercare di seguire:
- Mantienilo semplice. Per favore, non pensare come un programmatore di linguaggi di alto livello. Pensa embedded, e mantieni il codice conciso, senza livelli non necessari.
- Nessuna allocazione dinamica di memoria, tranne durante le funzioni di setup/begin.
- Usa lo stesso stile di parentesi e indentazione presente nei moduli sorgente core. (Un .clang-format sarà probabilmente aggiunto presto, ma per favore NON riformattare retroattivamente il codice esistente. Questo crea solo diff non necessari che rendono più difficile trovare i problemi)
Aiutaci a prioritizzare! Per favore reagisci con un pollice in su alle issue/PR che ti interessano di più. Guardiamo i conteggi delle reazioni quando pianifichiamo il lavoro.
Eseguire gli unit test
Per eseguire gli unit test, esegui il seguente comando:
pio test --environment native --verbose