
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 portatile che consente il routing di pacchetti multi-hop per progetti embedded che utilizzano LoRa e altre radio a pacchetto. È progettata per sviluppatori che vogliono creare reti di comunicazione resilienti e decentralizzate che funzionano senza Internet.
🔍 Cos'è MeshCore?
MeshCore ora supporta una gamma di dispositivi LoRa, consentendo un flashing facile senza dover 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 di pacchetti multi-hop leggero per progetti embedded. A differenza di Meshtastic, che è pensato per la comunicazione LoRa informale, o di 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 in cui l'infrastruttura di comunicazione tradizionale non è disponibile.
⚡ Caratteristiche principali
- Routing di pacchetti multi-hop
- I dispositivi possono inoltrare messaggi attraverso più nodi, estendendo la portata oltre la copertura di una singola radio.
- Supporta fino a un numero configurabile di hop per bilanciare l'efficienza della rete e prevenire traffico eccessivo.
- I nodi utilizzano ruoli fissi in cui i nodi "Companion" non ripetono affatto i messaggi per impedire l'uso di percorsi di instradamento avversi.
- Supporta radio LoRa – Funziona con hardware Heltec, RAK Wireless e altri basati su LoRa.
- Decentralizzato e resiliente – Non richiede server centrale o Internet; la rete è auto-riparante.
- Basso consumo energetico – Ideale per dispositivi alimentati a batteria o solari.
- Semplice da implementare – Applicazioni di esempio precompilate facilitano l'avvio.
🎯 Per cosa puoi usare MeshCore?
- Comunicazione off-grid: Rimani connesso anche in aree remote.
- Risposta alle emergenze e ripristino in caso di disastri: Crea reti istantanee dove l'infrastruttura è assente.
- Attività all'aperto: Comunicazione per escursioni, campeggio e gare di avventura.
- Applicazioni tattiche e di sicurezza: Casi d'uso militari, di polizia e di sicurezza privata.
- IoT e reti di sensori: Raccogli dati da sensori remoti e trasmettili a una posizione centrale.
🚀 Come iniziare
- Guarda la Playlist di avvio rapido MeshCore di The Comms Channel
- Guarda la Presentazione tecnica di MeshCore 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 sviluppatori:
- Installa PlatformIO in Visual Studio Code.
- Clona e apri il repository MeshCore in Visual Studio Code.
- Vedi 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 KISS seriale per applicazioni host. (documentazione del protocollo)
- Simple Repeater - Estende la copertura di rete inoltrando messaggi.
- Simple Room Server - Un semplice server BBS per messaggi condivisi.
- Simple Secure Chat - Comunicazione testuale sicura basata su terminale tra dispositivi.
- Simple Sensor - Nodo sensore remoto con telemetria e avvisi.
L'esempio Simple Secure Chat può essere utilizzato tramite il Monitor Serial in Visual Studio Code, o con un Terminale USB Seriale su Android.
⚡️ Flasher MeshCore
Abbiamo firmware precompilato pronto per essere flashato 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 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
I firmware Repeater e Room Server possono essere configurati tramite USB nello strumento di configurazione web.
Possono anche essere gestiti tramite LoRa nell'app mobile utilizzando la funzione di gestione remota.
🛠 Compatibilità hardware
MeshCore è progettato per i dispositivi elencati nel Flasher MeshCore
📜 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 il branch 'dev' come base! Per modifiche minori invia semplicemente la tua PR e cercheremo di revisionarla, ma per qualsiasi cosa di più 'impatto' apri prima una Issue e avvia una discussione. È meglio sondare prima cosa vuoi ottenere e cercare di raggiungere un consenso sull'approccio migliore, specialmente quando ha un impatto sulla struttura o sull'architettura di questo codebase.
Ecco alcuni principi generali a cui dovresti cercare di attenerti:
- Mantienilo semplice. Per favore, non pensare come un programmatore di linguaggi di alto livello. Pensa embedded e mantieni il codice conciso, senza strati inutili.
- Nessuna allocazione dinamica della memoria, tranne durante le funzioni di setup/begin.
- Utilizza lo stesso stile di parentesi e indentazione presente nei moduli sorgente principali. (Probabilmente verrà presto aggiunto un file .clang-format, ma per favore NON ri-formattare retroattivamente il codice esistente. Ciò crea solo diff inutili che rendono più difficile trovare i problemi)
Aiutaci a dare priorità! Per favore, reagisci con il pollice in su alle issue/PR a cui tieni di più. Consideriamo il numero di reazioni quando pianifichiamo il lavoro.
Esecuzione dei test unitari
Per eseguire i test unitari, lancia il seguente comando:
pio test --environment native --verbose
Road-Map / Da fare
Ci sono diverse funzionalità piuttosto importanti in arrivo, senza ancora tempistiche precise. In ordine cronologico molto approssimativo:
- Companion radio: riprogettazione UI
- Repeater + Room Server: aggiungere ACL (come ha Sensor Node)
- Standardizzare la modalità Bridge per i repeater
- Repeater/Bridge: Standardizzare i codici di trasporto per zonizzazione/filtraggio
- Core + Repeater: rilevamento dei vicini a zero hop migliorato
- Core: supporto per percorsi manuali round-trip
- Companion + App: supporto per più sub-mesh (e modalità client 'off-grid' ripetitore)
- Core + App: supporto per compressione messaggi LZW
- Core: CR (Coding Rate) dinamico per hop deboli vs forti
- Core: nuovo framework per ospitare più nodi virtuali su un unico dispositivo fisico
- Specifica del protocollo V2: discussione e consenso sul protocollo pacchetti V2, inclusi hash di percorso, nuove specifiche di crittografia, ecc.
📞 Supporto
- Segnala bug e richiedi funzionalità nella pagina GitHub Issues.
- Trova guide e componenti aggiuntivi sul mio sito.
- Unisciti al Discord di MeshCore per chattare con gli sviluppatori e ricevere aiuto dalla community.