Роли нод Meshtastic

Каждая нода может иметь одну из ролей, определяющую её поведение в mesh-сети. Если термины вроде ретрансляции, хопов или channel utilization незнакомы — начни с основ mesh-сети.

Сравнение основных ролей

CLIENTCLIENT_MUTECLIENT_BASEROUTERREPEATERROUTER_LATE
РетрансляцияумнаянетROUTER_LATE для избранныхвсегда, первымвсегда, первымвсегда, последним
Виден в сетидадададанетда
Телеметриянормальнонормальнонормальнореженетреже
Подключение к приложениюдадададанетда
Спитнастраиваемонастраиваемонастраиваемоагрессивноагрессивноагрессивно
Отправляет свои данныедададаминимальнонетминимально

Основные роли

CLIENT (по умолчанию)

Рекомендуется для большинства устройств. Умно ретранслирует пакеты — может пропустить ретрансляцию, если услышал что сосед уже передал. Это снижает коллизии.

CLIENT_MUTE

Получает сообщения, но не ретранслирует их. Для перегруженных сетей или дополнительных личных устройств — минимизирует использование эфира.

CLIENT_BASE

Личная базовая станция с приоритетной ретрансляцией на [избранные узлы](Основы%20mesh-сети%20Meshtastic.md#Избранные узлы (Favorites)). Подходит для хорошо расположенных стационарных устройств (крыша, чердак).

С v2.7.18 использует ROUTER_LATE семантику для избранных узлов (раньше была ROUTER). Это мягче — базовая станция больше не перехватывает маршрутизацию у более подходящих промежуточных нод.

CLIENT_HIDDEN

Передаёт только при необходимости. Для скрытых развёртываний или максимальной экономии батареи.

ROUTER

Только для стационарных нод на высоте. Всегда ретранслирует и делает это первым — приоритет перед CLIENT. Сеть предпочитает этот узел для маршрутизации.

  • Экономит энергию: реже шлёт телеметрию, агрессивнее спит
  • Виден в списке нод, можно подключиться
  • Для MQTT-шлюзов предпочтительнее CLIENT или CLIENT_BASE — приём пакетов не зависит от роли, а обязательная ретрансляция ROUTER добавляет лишний airtime

REPEATER

“Поставил и забыл”. Чисто ретранслятор — невидим в сети, не шлёт свои данные. Минимальный трафик, максимальная автономность. Нельзя подключиться приложением.

ROUTER_LATE (с firmware 2.5.18)

Всегда ретранслирует, но после всех остальных — использует позднее contention window. Механизм: сначала пытается в стандартном окне, но если слышит что другая нода уже ретранслировала пакет — откладывает в позднее окно. Задержка внутри окна рандомная + SNR-bias (слабый сигнал = короче задержка, чтобы дальние ноды передавали первыми).

Не предназначен для: крышных нод расширения покрытия, мобильных устройств, MQTT-шлюзов. Подходит для заполнения инфраструктурных пробелов — кластер нод за холмом, в каньоне, без видимости на существующие роутеры.

Специализированные роли

SENSOR

Приоритизирует отправку телеметрии (температура, влажность). Сохраняет маршрутизацию, но снижает частоту собственной телеметрии. Для метеостанций и мониторинга окружения.

TRACKER

Периодически отправляет GPS-координаты с высоким приоритетом. Для отслеживания транспорта, людей, активов.

LOST_AND_FOUND

Регулярно передаёт данные о местоположении для помощи в поиске потерянного устройства.

TAK / TAK_TRACKER

Интеграция с ATAK (Android Team Awareness Kit — тактическое приложение для координации на местности). TAK_TRACKER дополнительно отправляет PLI (Position Location Information) и снижает частоту трансляций.

Устаревшие роли

ROUTER_CLIENT (удалена в firmware 2.3.15)

Комбинация ROUTER + CLIENT. Заменена на CLIENT с rebroadcastMode: LOCAL_ONLY для стационарных шлюзов. Не использовать.

Опасности неправильного использования

  • Много роутеров рядом → коллизии пакетов, потери сообщений
  • Broadcast storm — в плотной сети каждый роутер ретранслирует каждый пакет, нагрузка растёт лавинообразно
  • [Channel utilization](Основы%20mesh-сети%20Meshtastic.md#Эфир и коллизии) >25% — коллизии растут нелинейно: больше ретрансляций → больше коллизий → больше повторных отправок → ещё больше загрузки
  • Расход батареи — TX самый энергозатратный режим, постоянная ретрансляция быстро разряжает ноду
  • Роутер на земле/в низине → съедает hop’ы, пакет не доходит до высокого узла
  • Асимметричные связи — роутеры в низине могут съедать хопы в одном направлении, но обратный путь уже не проходит. Часть сети отправляет сообщения, но не получает ответов. Повышение hop limit лишь усугубляет перегрузку
  • ROUTER на мобильном устройстве → ломает маршрутизацию при перемещении
  • Ложный hop count через MQTT — пакет приходит через MQTT-роутер с hops=0, другие ноды считают источник прямым соседом
  • REPEATER и эхо-эффект — не ведёт NodeDB, хуже отслеживает дубликаты; при плохом размещении пакет может летать между ретрансляторами до исчерпания hop limit

Правило: мало роутеров на высоте лучше, чем много роутеров на земле.

Рекомендация для сети

СценарийРоль
Мобильный девайсCLIENT
Второе личное устройство / перегруженная сетьCLIENT_MUTE
Стационарная нода дома (крыша, чердак)CLIENT_BASE
MQTT-шлюз (стационарный, Wi-Fi)CLIENT_BASE
Стратегическая точка на высотеROUTER
Заполнение мёртвых зонROUTER_LATE
Автономный ретранслятор без обслуживанияREPEATER
МетеостанцияSENSOR
GPS-трекерTRACKER

Стационарная нода — зачем

Стоит если:

  • Хочешь, чтобы mesh работал при перемещении по городу/лесу — роутер на крыше “держит” сеть
  • Хочешь MQTT-шлюз для мониторинга нод из дома
  • Между нодами часто большое расстояние или здания
  • Планируешь расширять сеть — новые участники сразу получат связь через роутер

Не стоит если:

  • Все ноды и так слышат друг друга напрямую
  • Ноды всегда ходят вместе
  • Нет высокой точки (балкон 5+ этаж, крыша)

Источники