
Ein neues leichtgewichtiges, hybrides Routing-Mesh-Protokoll für Paketfunkgeräte.
## Über MeshCore MeshCore ist eine leichtgewichtige, portable C++-Bibliothek, die Multi-Hop-Paketrouting für Embedded-Projekte mit LoRa und anderen Paketfunkgeräten ermöglicht. Sie ist für Entwickler konzipiert, die widerstandsfähige, dezentrale Kommunikationsnetzwerke erstellen möchten, die ohne Internet funktionieren. ## 🔍 Was ist MeshCore? MeshCore unterstützt mittlerweile eine Reihe von LoRa-Geräten, was ein einfaches Flashen ohne manuelles Kompilieren der Firmware ermöglicht. Benutzer können eine vorgefertigte Binärdatei mit Tools wie Adafruit ESPTool flashen und über eine serielle Konsole mit dem Netzwerk interagieren. MeshCore bietet die Möglichkeit, drahtlose Mesh-Netzwerke zu erstellen, ähnlich wie Meshtastic und Reticulum, jedoch mit Fokus auf leichtgewichtiges Multi-Hop-Paketrouting für Embedded-Projekte. Anders als Meshtastic, das auf beiläufige LoRa-Kommunikation zugeschnitten ist, oder Reticulum, das fortgeschrittenes Networking bietet, balanciert MeshCore Einfachheit mit Skalierbarkeit und ist damit ideal für maßgeschneiderte Embedded-Lösungen, bei denen Geräte (Knoten) über große Entfernungen kommunizieren können, indem sie Nachrichten über Zwischenknoten weiterleiten. Dies ist besonders nützlich in Off-Grid-, Notfall- oder taktischen Situationen, in denen traditionelle Kommunikationsinfrastruktur nicht verfügbar ist. ## ⚡ Hauptmerkmale * Multi-Hop-Paketrouting * Geräte können Nachrichten über mehrere Knoten weiterleiten und so die Reichweite über die eines einzelnen Funkgeräts hinaus erweitern. * Unterstützt bis zu einer konfigurierbaren Anzahl von Hops, um Netzwerkeffizienz und die Vermeidung übermäßigen Datenverkehrs auszubalancieren. * Knoten verwenden feste Rollen, wobei "Companion"-Knoten Nachrichten überhaupt nicht wiederholen, um zu verhindern, dass ungünstige Routing-Pfade verwendet werden. * Unterstützt LoRa-Funkgeräte – Funktioniert mit Heltec, RAK Wireless und anderer LoRa-basierter Hardware. * Dezentral & widerstandsfähig – Kein zentraler Server oder Internet erforderlich; das Netzwerk ist selbstheilend. * Geringer Stromverbrauch – Ideal für batterie- oder solarbetriebene Geräte. * Einfach bereitzustellen – Vorgefertigte Beispielanwendungen erleichtern den Einstieg. ## 🎯 Wofür können Sie MeshCore verwenden? * Off-Grid-Kommunikation: Bleiben Sie auch in abgelegenen Gebieten verbunden. * Notfallhilfe & Katastrophenbewältigung: Richten Sie sofort Netzwerke ein, wo die Infrastruktur ausgefallen ist. * Outdoor-Aktivitäten: Kommunikation beim Wandern, Camping und Abenteuerrennen. * Taktische & Sicherheitsanwendungen: Militärische, Strafverfolgungs- und private Sicherheitsanwendungsfälle. * IoT- & Sensornetzwerke: Sammeln Sie Daten von entfernten Sensoren und leiten Sie sie an einen zentralen Ort weiter. ## 🚀 Erste Schritte - Sehen Sie sich die [MeshCore QuickStart Playlist](https://www.youtube.com/watch?v=iaFltojJrAc&list=PLshzThxhw4O4WU_iZo3NmNZOv6KMrUuF9) von The Comms Channel an - Sehen Sie sich die [MeshCore Technical Presentation](https://www.youtube.com/watch?v=OwmkVkZQTf4) von Liam Cottle an. - Lesen Sie unsere [Häufig gestellten Fragen](https://github.com/meshcore-dev/meshcore/blob/main/docs/faq.md) und [Dokumentation](https://docs.meshcore.io). - Flashen Sie die MeshCore-Firmware auf ein unterstütztes Gerät. - Verbinden Sie sich mit einem unterstützten Client. Für Entwickler: - Installieren Sie [PlatformIO](https://docs.platformio.org) in [Visual Studio Code](https://code.visualstudio.com). - Klonen und öffnen Sie das MeshCore-Repository in Visual Studio Code. - Sehen Sie sich die Beispielanwendungen an, die Sie ändern und ausführen können: - [Companion Radio](https://github.com/meshcore-dev/meshcore/blob/main/examples/companion_radio) – Zur Verwendung mit einer externen Chat-App über BLE, USB oder Wi-Fi. - [KISS Modem](https://github.com/meshcore-dev/meshcore/blob/main/examples/kiss_modem) – Serielle KISS-Protokoll-Bridge für Host-Anwendungen. ([Protokolldokumentation](https://github.com/meshcore-dev/meshcore/blob/main/docs/kiss_modem_protocol.md)) - [Simple Repeater](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_repeater) – Erweitert die Netzwerkabdeckung durch Weiterleiten von Nachrichten. - [Simple Room Server](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_room_server) – Ein einfacher BBS-Server für gemeinsame Posts. - [Simple Secure Chat](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_secure_chat) – Sichere terminalbasierte Textkommunikation zwischen Geräten. - [Simple Sensor](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_sensor) – Entfernter Sensorknoten mit Telemetrie und Alarmierung. Mit dem Simple Secure Chat-Beispiel kann über den Serial Monitor in Visual Studio Code oder mit einem Serial USB Terminal auf Android interagiert werden. ## ⚡️ MeshCore Flasher Wir haben vorgefertigte Firmware zum Flashen auf unterstützte Geräte bereit. - Öffnen Sie https://meshcore.io/flasher - Wählen Sie ein unterstütztes Gerät aus - Flashen Sie einen der Firmware-Typen: - Companion, Repeater oder Room Server - Sobald das Flashen abgeschlossen ist, können Sie sich mit einem der unten aufgeführten MeshCore-Clients verbinden. ## 📱 MeshCore Clients **Companion Firmware** Die Companion-Firmware kann je nach geflashtem Firmware-Typ über BLE, USB oder Wi-Fi verbunden werden. - 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 **Repeater and Room Server Firmware** Die Repeater- und Room-Server-Firmware kann über USB im Web-Konfigurationstool eingerichtet werden. - https://config.meshcore.io Sie können auch über LoRa in der mobilen App mithilfe der Remote-Management-Funktion verwaltet werden. ## 🛠 Hardware-Kompatibilität MeshCore ist für Geräte konzipiert, die im [MeshCore Flasher](https://meshcore.io/flasher) aufgeführt sind ## 📜 Lizenz MeshCore ist Open-Source-Software, die unter der MIT-Lizenz veröffentlicht wurde. Sie können sie frei für persönliche und kommerzielle Projekte verwenden, ändern und verbreiten. ## Mitwirken Bitte reichen Sie PRs mit 'dev' als Basis-Branch ein! Bei kleineren Änderungen reichen Sie einfach Ihren PR ein und wir versuchen, ihn zu überprüfen, aber bei allem, was 'wirkungsvoller' ist, eröffnen Sie bitte zuerst ein Issue und starten Sie eine Diskussion. Es ist besser, zunächst auszuloten, was Sie erreichen möchten, und zu versuchen, einen Konsens darüber zu erzielen, welcher Ansatz der beste ist, insbesondere wenn er die Struktur oder Architektur dieser Codebasis betrifft. Hier sind einige allgemeine Prinzipien, an die Sie sich möglichst halten sollten: * Halten Sie es einfach. Bitte denken Sie nicht wie ein High-Level-Sprachprogrammierer. Denken Sie embedded und halten Sie den Code prägnant, ohne unnötige Schichten. * Keine dynamische Speicherzuweisung, außer während Setup-/Begin-Funktionen. * Verwenden Sie denselben Klammer- und Einrückungsstil wie in den Kernquellmodulen. (Eine .clang-format wird wahrscheinlich bald hinzugefügt, aber bitte formatieren Sie vorhandenen Code NICHT nachträglich neu. Das erzeugt nur unnötige Diffs, die das Auffinden von Problemen erschweren) Helfen Sie uns bei der Priorisierung! Bitte reagieren Sie mit Daumen hoch auf Issues/PRs, die Ihnen am wichtigsten sind. Wir schauen uns die Reaktionszahlen bei der Arbeitsplanung an. ### Unit-Tests ausführen Um Unit-Tests auszuführen, führen Sie den folgenden Befehl aus: ```bash pio test --environment native --verbose ``` ## Road-Map / To-Do Es sind eine Reihe ziemlich großer Funktionen in der Pipeline, ohne dass bisher ein bestimmter Zeitrahmen festgelegt wurde. In grob chronologischer Reihenfolge: - [X] Companion Radio: UI-Redesign - [X] Repeater + Room Server: ACLs hinzufügen (wie sie der Sensor Node hat) - [X] Bridge-Modus für Repeater standardisieren - [ ] Repeater/Bridge: Transport Codes für Zoning/Filtering standardisieren - [X] Core + Repeater: verbesserte Zero-Hop-Nachbarschaftserkennung - [ ] Core: Unterstützung für manuellen Round-Trip-Pfad - [ ] Companion + Apps: Unterstützung für mehrere Sub-Meshes (und 'Off-Grid'-Client-Repeat-Modus) - [ ] Core + Apps: Unterstützung für LZW-Nachrichtenkomprimierung - [ ] Core: dynamische CR (Coding Rate) für schwache vs. starke Hops - [ ] Core: neues Framework zum Hosten mehrerer virtueller Knoten auf einem physischen Gerät - [ ] V2-Protokollspezifikation: Diskussion und Konsens zum V2-Paketprotokoll, einschließlich Pfad-Hashes, neuer Verschlüsselungsspezifikationen usw. ## 📞 Support erhalten - Melden Sie Fehler und fordern Sie Funktionen auf der [GitHub Issues](https://github.com/meshcore-dev/meshcore/issues)-Seite an. - Finden Sie zusätzliche Anleitungen und Komponenten auf [meiner Seite](https://buymeacoffee.com/ripplebiz). - Treten Sie dem [MeshCore Discord](https://meshcore.gg) bei, um mit den Entwicklern zu chatten und Hilfe von der Community zu erhalten.