MESHINFO.ru
Меш-сети

MeshCore: общее

Как устроен MeshCore: роли устройств, поиск маршрута, содержимое пакета, выбор железа и сравнение с Meshtastic.

Если Meshtastic — это «мессенджер для всех», то MeshCore — продуманная инфраструктура для связи на больших расстояниях. Система тоже открытая и работает на LoRa, её создал Скотт Пауэлл (Scott Powell) в 2024 году, но философия другая: сообщение ищет дорогу один раз, а потом летит по ней адресно. «Кричат» (повторяют чужой пакет) только специальные устройства — репитеры. Клиентские устройства молчат и не забивают эфир.

Три роли устройств

Три роли устройств MeshCore: companion, repeater, room server

Железо одно и то же — разница только в прошивке.

  • Companion — твой личный мобильный узел, «телефон» в сети. Подключается к смартфону по Bluetooth и работает как мессенджер. Чужие сообщения не ретранслирует — за счёт этого экономит батарею.
  • Repeater — ретранслятор, «скелет» сети. Ставят на возвышенностях: крышах и вышках. Занимается только пересылкой пакетов и обеспечивает покрытие на большой территории.
  • Observer или mqtt - те же ретрансляторы, но с возможностью сбора статистики для отправки на сайт(ы) типа meshcortel.ru eastmesh или личные сайты с картой, анализом пакетов, маршрутов и т.п.
  • Room Server — сервер комнат, автономный «дисковый накопитель» для сообщений. Хранит историю групповых чатов и сообщения для тех, кто сейчас офлайн: вернулся в зону — забрал пропущенное.

Клиенты не повторяют чужие пакеты. Это главное отличие от Meshtastic: если бы повторяли все, эфир бы задохнулся от повторов и коллизий. Повторяют только репитеры — и room server, если вручную включить повтор, но так делать не рекомендуют.

К репитеру нельзя подключиться по Bluetooth: он настраивается по USB или удалённо по радио. Когда клиент заходит на room server, он получает последние 32 непрочитанных сообщения.

Как устройства узнают друг друга: advert

Advert — это объявление о себе: имя, позиция и публичный ключ, подписанные, чтобы нельзя было подделать. В Meshtastic это называлось бы «отправкой node info». Есть два способа:

  • zero hop — объявление слышат только те, кто рядом, дальше оно не идёт;
  • flood — объявление подхватывают и повторяют все репитеры, оно уходит по всей сети.

Клиент объявляет о себе только когда ты сам нажмёшь кнопку. Репитер сам рассылает flood-объявление раз в 12 часов (интервал настраивается).

Как появляется маршрут

Четыре шага: flood, отчёт о пути, адресная отправка, восстановление маршрута

Сначала потоком, потом адресно — и заново потоком, если маршрут сломался.

Такой способ называется маршрутизацией по источнику (source routing): путь вычисляет отправитель,а не сеть. Вместо «крика на всех» сообщение идёт только по этому маршруту.

  1. Первое сообщение — потоком (flood). Ты ещё не знаешь дороги. Пакет уходит во все стороны, и каждый репитер, который его услышал, повторяет дальше. Рано или поздно сообщение доходит до адресата.
  2. Адресат отвечает отчётом о пути. Он отправляет обратно отчёт: через какие репитеры прошёл пакет. Отчёт идёт тем же потоком, а ты записываешь путь в список контактов.
  3. Дальше — адресно (direct). Путь вписывается прямо в пакет: список номеров репитеров. Репитер повторяет пакет только если его номер есть в списке — остальные молчат. Эфир почти свободен, а сообщение летит быстрее.
  4. Если маршрут сломался. Репитер увезли, он выключился или ты ушёл в другое место. Приложение пробует старый путь 3 раза, потом забывает его и снова отправляет потоком — и находит новый маршрут. Ломающиеся пути в движении — нормальная ситуация, приложение само лечит их потоком.

Что внутри пакета

Пакет в MeshCore устроен проще, чем кажется:

[заголовок] [коды региона — не всегда] [длина пути] [путь] [данные]
  • заголовок — тип маршрута и тип данных. Тип маршрута — это flood (во все стороны) или direct (по записанному пути);
  • путь — список номеров репитеров, через которые пакет должен пройти. Номер — это короткий отпечаток публичного ключа репитера: 1, 2 или 3 байта;
  • данные — сам текст, подтверждение (ACK), объявление (advert) или трассировка пути.

Сколько прыжков выдержит путь. С однобайтовыми номерами пакет может пройти до 64 прыжков, с двухбайтовыми — до 32, с трёхбайтовыми — до 21. Чем длиннее номер, тем меньше шансов, что два разных репитера «слипнутся» в один номер.

Что даёт такая схема

Дальность. Благодаря чёткой работе ретрансляторов и пути до 64 прыжков сообщения уходят на десятки километров. Известен случай связи на 60 км — там, где с Meshtastic не получалось.

Масштаб. Компаньоны не перегружают сеть, поэтому она спокойно растёт до городского и даже регионального уровня.

Батарея. Твой портативный узел не тратит энергию на пересылку чужих пакетов — время работы от батареи заметно больше.

Обратная сторона, о которой стоит помнить:

  • Групповые каналы всегда идут потоком. У канала нет одного адресата, значит и маршрута быть не может — сообщение обязано разойтись во все стороны. Репитеры могут ограничивать такой поток.
  • Сеть рассчитана на репитеры. Если вокруг только клиенты-компаньоны, дальность упирается в радиус одного устройства. Один репитер на высоте даёт больше, чем десять устройств на земле.
  • MeshCore и Meshtastic не слышат друг друга. Это разные протоколы и разные радио-настройки, общий эфир у них не получится.
  • Room server — это не чат, а почтовый ящик. Он полезен там, где люди появляются в зоне не одновременно.

Какое железо под какую роль

Для MeshCore подходит то же самое LoRa-оборудование, что и для Meshtastic: разница только в прошивке. Важно понять, какая роль (Companion, Repeater или Room Server) лучше подходит конкретному устройству.

Заводские решения

  • Heltec T096 — идеальный Companion. Экономичный nRF52840 (всего 13 мкА в режиме сна) и встроенный GNSS-приёмник: долго работает в походе или городе без подзарядки. При этом передатчик сохраняет высокую мощность — до 28±1 дБм.
  • Heltec V4 — лучший Repeater. До 28 дБм на выходе: ставится стационарно на крыше или вышке и надёжно пересылает пакеты, создавая «скелет» сети. Помните: на максимальной мощности он потребляет почти 1 А, поэтому нужно хорошее питание.
  • Heltec V3 — универсал. Классическая плата на ESP32: годится и в роли компаньона (если не критично время работы от батареи), и в роли ретранслятора. Хороший вариант для экспериментов и стационарных узлов.
  • Готовые специализированные решения: T-Deck и SenseCAP Solar Node P1-Pro for MeshCore — поставляются с предустановленной прошивкой и готовы к работе.

DIY-решения

  • FakeTec — идеальный компаньон. Экономичный nRF52, низкая цена (около 10 €) и долгое время работы от батареи: надёжный портативный узел за небольшие деньги.
  • Project Hydra / HydraX — для роли репитера. До 30 дБм (1 Вт): подходят там, где нужна максимальная дальность и проникновение сигнала. Но они прожорливы и требуют серьёзного источника питания.
  • MeshAdventurer — тоже репитер для тяжёлых условий. Широкий диапазон питания 9–28 В (автомобильная сеть или солнечная панель), OLED-экран, GPS и зуммер — удобно разворачивать в поле.
  • MeshAdventurer Reborn — улучшенный проект Meshadnventurer для тяжёлых условий.
Роль в сетиЛучший выбор (заводской)Лучший выбор (DIY)
Companion (компаньон)Heltec T096 — экономичный, с GPSFakeTec — очень дешёвый и экономичный
Repeater (ретранслятор)Heltec V4 — мощный, до 28 дБмHydra или MeshAdventurer — до 30 дБм
УниверсальныйHeltec V3 — подходит для любых ролей—

Главное правило. Для MeshCore важнее чёткое разделение ролей. Поставили ретранслятор — помогли всей сети, и MeshCore использует ваш узел по максимуму. Используете компаньона — экономите батарею и не перегружаете сеть.

MeshCore и Meshtastic рядом

Что сравниваемMeshtasticMeshCore
Маршрутизацияуправляемый флуд (managed flood)по источнику (source routing)
Кто повторяет чужой пакетвсе узлытолько ретрансляторы
Архитектураравноправные узлы (peer-to-peer)с разделением ролей: клиенты и инфраструктура
Первое сообщениевсегда потокомпотоком (flood), чтобы найти путь
Следующие сообщенияснова потокомадресно по сохранённому маршруту
Ограничение прыжковпо умолчанию 3, в настройках до 7внутренний максимум 64; зависит от длины номера репитера (64 / 32 / 21)
История сообщенийтолько в реальном времени, на самих узлахподдерживается через room-серверы (последние 32)
Расход батареивыше: узел тратит энергию на пересылку чужогоу компаньона очень низкий
Кому подходитпростота, «поставил и работает», много участниковкогда важна экономия эфира и есть постоянные репитеры

Смотри также