
Новый легковесный гибридный протокол ячеистой маршрутизации для пакетных радиостанций
## О MeshCore MeshCore — это легковесная портативная библиотека на C++, обеспечивающая многоскачковую маршрутизацию пакетов для встраиваемых проектов с использованием LoRa и других пакетных радиомодулей. Она предназначена для разработчиков, желающих создавать устойчивые децентрализованные сети связи, работающие без интернета. ## 🔍 Что такое MeshCore? MeshCore теперь поддерживает ряд устройств LoRa, что позволяет легко прошивать их без необходимости вручную компилировать прошивку. Пользователи могут прошить готовый бинарный файл с помощью таких инструментов, как Adafruit ESPTool, и взаимодействовать с сетью через последовательную консоль. MeshCore предоставляет возможность создания беспроводных ячеистых сетей, аналогичных Meshtastic и Reticulum, но с акцентом на легковесную многоскачковую маршрутизацию пакетов для встраиваемых проектов. В отличие от Meshtastic, ориентированного на повседневную связь по LoRa, или Reticulum, предлагающего продвинутые сетевые возможности, MeshCore сочетает простоту с масштабируемостью, что делает его идеальным для пользовательских встраиваемых решений, где устройства (узлы) могут обмениваться данными на больших расстояниях, ретранслируя сообщения через промежуточные узлы. Это особенно полезно в автономных, аварийных или тактических ситуациях, когда традиционная инфраструктура связи недоступна. ## ⚡ Ключевые возможности * Многоскачковая маршрутизация пакетов * Устройства могут пересылать сообщения через несколько узлов, расширяя зону покрытия за пределы досягаемости одного радиомодуля. * Поддерживается настраиваемое количество скачков для баланса между эффективностью сети и предотвращением избыточного трафика. * Узлы используют фиксированные роли, где узлы «Companion» вообще не повторяют сообщения, чтобы предотвратить использование неблагоприятных маршрутов. * Поддержка радиомодулей LoRa — работает с Heltec, RAK Wireless и другим оборудованием на базе LoRa. * Децентрализация и устойчивость — не требуется центральный сервер или интернет; сеть самовосстанавливается. * Низкое энергопотребление — идеально для устройств с батарейным или солнечным питанием. * Простота развёртывания — готовые примеры приложений позволяют легко начать работу. ## 🎯 Для чего можно использовать MeshCore? * Автономная связь: оставайтесь на связи даже в отдалённых районах. * Реагирование на чрезвычайные ситуации и восстановление после катастроф: развёртывание мгновенных сетей там, где инфраструктура вышла из строя. * Активный отдых: связь во время походов, кемпинга и приключенческих гонок. * Тактические и охранные применения: военные, правоохранительные органы и частная охрана. * IoT и сенсорные сети: сбор данных с удалённых датчиков и их ретрансляция в центральное место. ## 🚀 Как начать работу - Посмотрите [плейлист MeshCore QuickStart](https://www.youtube.com/watch?v=iaFltojJrAc&list=PLshzThxhw4O4WU_iZo3NmNZOv6KMrUuF9) от The Comms Channel - Посмотрите [техническую презентацию MeshCore](https://www.youtube.com/watch?v=OwmkVkZQTf4) от Liam Cottle. - Ознакомьтесь с нашим [списком часто задаваемых вопросов](https://github.com/meshcore-dev/meshcore/blob/main/docs/faq.md) и [документацией](https://docs.meshcore.io). - Прошейте прошивку MeshCore на поддерживаемом устройстве. - Подключитесь с помощью поддерживаемого клиента. Для разработчиков: - Установите [PlatformIO](https://docs.platformio.org) в [Visual Studio Code](https://code.visualstudio.com). - Клонируйте и откройте репозиторий MeshCore в Visual Studio Code. - Ознакомьтесь с примерами приложений, которые можно изменять и запускать: - [Companion Radio](https://github.com/meshcore-dev/meshcore/blob/main/examples/companion_radio) — для использования с внешним чат-приложением через BLE, USB или Wi-Fi. - [KISS Modem](https://github.com/meshcore-dev/meshcore/blob/main/examples/kiss_modem) — мост последовательного протокола KISS для хост-приложений. ([документация протокола](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) — расширяет покрытие сети путём ретрансляции сообщений. - [Simple Room Server](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_room_server) — простой BBS-сервер для общих сообщений. - [Simple Secure Chat](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_secure_chat) — защищённая текстовая связь между устройствами на базе терминала. - [Simple Sensor](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_sensor) — удалённый сенсорный узел с телеметрией и оповещениями. С примером Simple Secure Chat можно взаимодействовать через Serial Monitor в Visual Studio Code или с помощью Serial USB Terminal на Android. ## ⚡️ Прошивальщик MeshCore У нас есть готовые прошивки для прошивки на поддерживаемых устройствах. - Откройте https://meshcore.io/flasher - Выберите поддерживаемое устройство - Прошейте один из типов прошивки: - Companion, Repeater или Room Server - После завершения прошивки вы можете подключиться с помощью одного из клиентов MeshCore, перечисленных ниже. ## 📱 Клиенты MeshCore **Прошивка Companion** К прошивке companion можно подключиться через BLE, USB или Wi-Fi в зависимости от типа прошитой прошивки. - 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 и Room Server** Прошивку repeater и room server можно настроить через USB в веб-инструменте конфигурации. - https://config.meshcore.io Ими также можно управлять через LoRa в мобильном приложении с помощью функции Remote Management. ## 🛠 Совместимость с оборудованием MeshCore разработан для устройств, перечисленных в [MeshCore Flasher](https://meshcore.io/flasher) ## 📜 Лицензия MeshCore — это программное обеспечение с открытым исходным кодом, выпущенное под лицензией MIT. Вы можете свободно использовать, изменять и распространять его для личных и коммерческих проектов. ## Участие в разработке Пожалуйста, отправляйте PR, используя 'dev' в качестве базовой ветки! Для незначительных изменений просто отправьте свой PR, и мы постараемся его рассмотреть, но для всего более «значимого» сначала откройте Issue и начните обсуждение. Лучше сначала озвучить, чего вы хотите достичь, и попытаться прийти к консенсусу относительно наилучшего подхода, особенно когда это влияет на структуру или архитектуру этой кодовой базы. Вот несколько общих принципов, которых следует придерживаться: * Будьте проще. Пожалуйста, не думайте как программист высокоуровневого языка. Думайте как во встраиваемых системах и держите код лаконичным, без лишних слоёв. * Никакого динамического выделения памяти, кроме как во время функций setup/begin. * Используйте тот же стиль скобок и отступов, что и в основных исходных модулях. (.clang-format, вероятно, скоро будет добавлен, но, пожалуйста, НЕ переформатируйте существующий код задним числом. Это лишь создаёт ненужные диффы, которые затрудняют поиск проблем) Помогите нам расставить приоритеты! Пожалуйста, ставьте палец вверх на issues/PR, которые для вас наиболее важны. Мы учитываем количество реакций при планировании работы. ### Запуск модульных тестов Чтобы запустить модульные тесты, выполните следующую команду: ```bash pio test --environment native --verbose ``` ## Дорожная карта / Список задач В разработке находится ряд довольно крупных функций, без привязки к конкретным срокам. В очень приблизительном хронологическом порядке: - [X] Companion radio: редизайн UI - [X] Repeater + Room Server: добавить ACL (как у Sensor Node) - [X] Стандартизировать режим Bridge для репитеров - [ ] Repeater/Bridge: стандартизировать Transport Codes для зонирования/фильтрации - [X] Core + Repeater: улучшенное обнаружение соседей с нулевым числом скачков - [ ] Core: поддержка ручного пути с возвратом - [ ] Companion + Apps: поддержка нескольких суб-сетей (и клиентский режим повтора 'off-grid') - [ ] Core + Apps: поддержка сжатия сообщений LZW - [ ] Core: динамический CR (Coding Rate) для слабых и сильных скачков - [ ] Core: новый фреймворк для размещения нескольких виртуальных узлов на одном физическом устройстве - [ ] Спецификация протокола V2: обсуждение и консенсус вокруг пакетного протокола V2, включая хэши путей, новые спецификации шифрования и т. д. ## 📞 Получить поддержку - Сообщайте об ошибках и запрашивайте функции на странице [GitHub Issues](https://github.com/meshcore-dev/meshcore/issues). - Дополнительные руководства и компоненты ищите на [моём сайте](https://buymeacoffee.com/ripplebiz). - Присоединяйтесь к [MeshCore Discord](https://meshcore.gg), чтобы общаться с разработчиками и получать помощь от сообщества.