
MeshCore room-server-v1.17.0
Новый легковесный гибридный протокол ячеистой маршрутизации для пакетных радиостанций
О 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 от The Comms Channel
- Посмотрите техническую презентацию MeshCore от Liam Cottle.
- Ознакомьтесь с нашим списком часто задаваемых вопросов и документацией.
- Прошейте прошивку MeshCore на поддерживаемом устройстве.
- Подключитесь с помощью поддерживаемого клиента.
Для разработчиков:
- Установите PlatformIO в Visual Studio Code.
- Клонируйте и откройте репозиторий MeshCore в Visual Studio Code.
- Ознакомьтесь с примерами приложений, которые можно изменять и запускать:
- Companion Radio — для использования с внешним чат-приложением через BLE, USB или Wi-Fi.
- KISS Modem — мост последовательного протокола KISS для хост-приложений. (документация протокола)
- Simple Repeater — расширяет покрытие сети путём ретрансляции сообщений.
- Simple Room Server — простой BBS-сервер для общих сообщений.
- Simple Secure Chat — защищённая текстовая связь между устройствами на базе терминала.
- 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 в веб-инструменте конфигурации.
Ими также можно управлять через LoRa в мобильном приложении с помощью функции Remote Management.
🛠 Совместимость с оборудованием
MeshCore разработан для устройств, перечисленных в MeshCore Flasher
📜 Лицензия
MeshCore — это программное обеспечение с открытым исходным кодом, выпущенное под лицензией MIT. Вы можете свободно использовать, изменять и распространять его для личных и коммерческих проектов.
Участие в разработке
Пожалуйста, отправляйте PR, используя 'dev' в качестве базовой ветки! Для незначительных изменений просто отправьте свой PR, и мы постараемся его рассмотреть, но для всего более «значимого» сначала откройте Issue и начните обсуждение. Лучше сначала озвучить, чего вы хотите достичь, и попытаться прийти к консенсусу относительно наилучшего подхода, особенно когда это влияет на структуру или архитектуру этой кодовой базы.
Вот несколько общих принципов, которых следует придерживаться:
- Будьте проще. Пожалуйста, не думайте как программист высокоуровневого языка. Думайте как во встраиваемых системах и держите код лаконичным, без лишних слоёв.
- Никакого динамического выделения памяти, кроме как во время функций setup/begin.
- Используйте тот же стиль скобок и отступов, что и в основных исходных модулях. (.clang-format, вероятно, скоро будет добавлен, но, пожалуйста, НЕ переформатируйте существующий код задним числом. Это лишь создаёт ненужные диффы, которые затрудняют поиск проблем)
Помогите нам расставить приоритеты! Пожалуйста, ставьте палец вверх на issues/PR, которые для вас наиболее важны. Мы учитываем количество реакций при планировании работы.
Запуск модульных тестов
Чтобы запустить модульные тесты, выполните следующую команду:
pio test --environment native --verbose