Про особенность настройки ролей устройств, лора модулей и прочих тонкостях.
Начало.
Для начала надо бы определится что вообще пытаемся построить. При
конфигурации чего либо логично исходить из поставленных задач, а задачи
могут быть разные. Настройки по умолчанию лучше подходят туристической
или похожей группе людей с устройствами, пользователи которых хотят
знать местоположение участников группы на карте и оставаться на связи в
случаи нештатных ситуация или оповещать остальных в стиле: «я дошел до
привала», «у магазина, стоянка 10 минут».
Децентрализованность сети дает простор для… та сами знаете чего,
каждый делает что попало из благих побуждений, благих скорее для себя,
«мне кажется так будет лучше, так правильно». Инструкции они конечно не
читали, как что работает не понимают, регламентов нет никаких, но есть
волшебная нода способная заменить телеграмм, вот прям в комнате и на
столе. Другие же, знакомые с радио, посмотрев на всё то, начинают стоить
что-то свое по дальше от тех вот. Но об этом в другой раз.
Итак, у нас есть устройство, узел, нода, устройству можно задать роль. Я надеюсь вы уже понимаете как все устроенно и работает?
Представим что понимаете. Что нода (узел в сети) это и приемник, и
ретранслятор, и сборщик телеметрии, и запоминает устройства которые
услышал, и пытается быть избирательным и не ретранслировать всё подряд.
Вот такому устройству можно задать роль в сети.
- CLIENT Устройство для обмена сообщениями, подключённое к чему либо или работающее автономно. Ретранслирует пакеты, если этого не сделал другой узел.Повсеместное использование, для индивидуального пользователя взаимодействующего с сетью Meshtastic через клиентское приложение.
- CLIENT_MUTE Клиент сети, который не ретранслирует пакеты от других устройств.Используется когда необходимо участвовать в сети, но не создавать нагрузку на сеть ретрансляцией. (портативная, носимая нода, автомобиль)
- CLIENT_HIDDEN Устройство которое передает минимум информации, передача по необходимости, для скрытности или экономии батареи. Используется для сокращения времени работы в эфире, ради скрытности или энергоэффективности при сохранении подключения к сети.
- CLIENT_BASE Персональная «базовая станция»: всегда ретранслирует пакеты избранных узлов. В остальном не отличима от CLIENT. Используется
на узлах с большим охватом, нода на крыше или чердаке, чтобы
ретранслировать сообщения внутренних или менее удачно расположенных
узлов. - TRACKER Приоритетно передаёт геопозицию. Носимые устройства, трекеры, где важна оперативная передача координат LOST_AND_FOUND Регулярно передаёт свое местоположение в дефолтный канал (для поиска потерянных устройств). Используется для поиска потерянного устройства.
- SENSOR Приоритетная передача телеметрии. Используется в сценариях где сбор данных об окружающей среде или других датчиков имеет решающее значение. Режим энергосбережения в наличии.
- TAK Оптимизировано для связи с системой ATAK, сокращает количество рутинных трансляций. Интеграция с системами ATAK (через плагин Meshtastic ATAK) для связи в ходе тактических или скоординированных операций.
- TAK_TRACKER Версия TRACKER с поддержкой автоматических PLI (Position Location Information) для ATAK. Автономная интеграция PLI с системами ATAK для связи в ходе тактических или скоординированных операций.
- REPEATER Инфраструктурный узел, всегда ретранслирует один раз. Максимум энергосбережения. Не отображается в списке узлов. Устарела с выходом версии 2.7.11 Лучше всего размещать в стратегически важных точках, чтобы максимально увеличить зону покрытия сети. Устройство не отображается в топологии. Ретранслирует что услышит без разбора, в остальное время спит.
- ROUTER Инфраструктурный узел для расширения зоны покрытия сети за счёт однократной ретрансляции пакетов. Отображается в списке узлов. Для размещения устройств в стратегически важных местах (места с большим охватом).
- ROUTER_LATE Инфраструктурный узел, всегда ретранслирует пакеты, но только после ретрансляций других узлов, в остальных режимах, обеспечивая дополнительное покрытие для локальных кластеров. Отображается в списке узлов. Идеально подходит для устранения «мёртвых зон» или обеспечения надёжности кластера узлов, размещение которых не приносит пользы всей сети. Роутер\реппитер для носимых устройств или устройств с малым радиусом действия
Репетир Роутер. ВАЖНО!
Репитеров два, ROUTER и ROUTER_LATE, Основное и главное отличие,
приоритеты: ROUTER ретранслирует пакет первым, ROUTER_LATE последним.
Конечно это отличие не единственное, но ключевое. ROUTER уменьшает количество ретрансляций. ROUTER_LATE увеличивает охват, он подхватывает
пакет который вероятно не смогли доставить другие, и это очень грубое пояснение. Логично что в нагруженной устройствами сети нужно использовать ROUTER, и ставить его нужно там где его услышат все. ROUTER_LATE логично использовать для покрытия серых зон. Но есть нюанс.
Не используйте роль REPEATER. Это гарантированно приведет к коллизиям (когда несколько нод одновременно отправляют пакет).
Не устанавливайте ROUTER абы где, нода с этой ролью должна иметь максимально возможное покрытие, иначе эффект от него, может быть строго противоположным. Это не просто должен быть приоритетный узел который слышат большинство, он должен соединять эти большинства в стратегическом (идиотский термин из документации) месте. ROUTER вклинивается в очередь ретрансляции до того, как другие узлы получат возможность ретранслировать, ROUTER ретранслирует все пакеты с высоким приоритетом.
Один ROUTER для групп устройств в месте где его слышат все.
ROUTER_LATE, также ретранслирует всё что услышит (почти всё), этим он отличается от CLIENT, но делает это с наименьшим приоритетом. CLIENT может не ретранслировать пакет, если услышал что это делает кто то другой, а ROUTER_LATE оставляет его на потом, когда на это будет время, даже если пакет кто то ретранслировал до него.
В работе сети есть так называемые "Конфликтные окна" или "Окна конкуренции", это время через которое нода начинает ретранслировать пакет после его получения, если посчитает нужным. Приоритета три, у ROUTER первый, у ROUTER_LATE последний, у CLIENT_BASE первый для избранных, второй для остальных. По этому считается что влияние узла ROUTER_LATE на сеть, идентично влиянию CLIENT, в обычных условиях он себя так и ведет.
Поскольку ROUTER_LATE пытается ретранслировать всё, что слышит, он увеличивает объём трафика на единственной общей частоте. Это может привести к перегрузке, коллизиям и потере пакетов. Если общий объём трафика становится слишком высоким, это может существенно повлиять на производительность сети, вплоть до того, что она станет непригодной для использования.
Если вы настаиваете на использовании этой роли в качестве узла на крыше в любом случае, пожалуйста, внимательно следите за показателями ChUtil (использование общего эфирного времени) и AirTXUtil (эфирное время, используемое только этим узлом) на вашем узле. Если показатель ChUtil превышает 25 %, а показатель AirUtilTX — 7–8 %, пожалуйста, прекратите использовать эту роль, чтобы сохранить общую функциональность сети.
Обратите внимание, что маршрутизатор и ретранслятор не подходят для использования на крышах (на самом деле, даже в большей степени, поскольку они вытесняют другие узлы). Эти роли предназначены только для инфраструктуры, расположенной в очень удачном месте.
Еще раз, если не понятно, инфраструктурные роли нужно использовать только там, где это действительно актуально и необходимо. Вреда от них, может быть больше чем пользы. ROUTER_LATE устанавливается только в стратегических местах в серых зонах, там где нет других узлов которые хорошо слышат основной сегмент сети и вам нужно ретранслировать все пакеты на серую зону. Он не для крыши в городской сети ради увеличения охватов. ROUTER служит для соединения разных сегментов сети, например у вас есть два поселка отрезанных горным хребтом, вот для соединения их и нужен ROUTER на хребте.
Классические сценарии:
- Купили одну ноду для подключения к городской сети, если она в вашем городе есть, развитая, вы не знаете или знаете что делать, но нода у вас одна, носимая или просто со штатной антенной. Ставим CLIENT_MUTE и не отсвечиваем. Суть: Если нет возможности увеличивать охват, не мешайте тем у кого возможность есть, количество ретрансляций ограничена, приоритет в сети отдается нодам с низким уровнем сигнала, а не с большим покрытием.
- У вас есть внешняя антенна или высокая точка с большим охватом, есть желание и возможность увеличить радиус действия сети и\или нет развитой сети в городе, ставим CLIENT.
- Тоже если это частная сеть\связь в туристической группе, в лесу, на фестивале, и тд. Суть: CLIENT Это то самое классическое развертывание сети с устройствами одного уровня.
- Поняли что с одной нодой ничего нормально не работает, купили вторую или еще несколько, первую решили поставить на крышу с антенной. CLIENT_BASE на крышу, на вторую и остальные CLIENT_MUTE. В обоих нодах добавили друг друга в избранное. Суть: CLIENT_BASE помогает увеличить охваты ретранслируя пакеты, автоматически и приоритетно ретранслирует всё с и в избранных CLIENT_MUTE.
В документации крайне рекомендуют использовать роли CLIENT и CLIENT_MUTE, если нет веских причин использовать что то другое.
Режим ретрансляции
В некоторых ролях можно более тонко настроить режим ретрансляций
- ALL ВСЕ (по умолчанию). При выборе этого параметра будут ретранслироваться ВСЕ сообщения, а также с других узлов с такими же настройками радиомодуля, в том числе с различными настройками шифрования.
- ALL_SKIP_DECODING — поведение такое же, как у ALL, но пакеты не декодируются, а просто пересылаются. Доступно только для роли Repeater.
- LOCAL_ONLY — игнорирует сообщения от внешних сетей, не зашифрованные или которые не может расшифровать. Пересылает сообщения только по локальным первичным/вторичным каналам узлов.
- KNOWN_ONLY — игнорирует сообщения из внешних сетей, как и LOCAL_ONLY, но идёт дальше и игнорирует сообщения от ноденумов, узлов которых нет в списке известных узлов (NodeDB).
- NONE — разрешено только для ролей SENSOR, TRACKER и TAK_TRACKER. Это приведет к блокировке всех трансляций, как и в случае с ролью CLIENT_MUTE.
- CORE_PORTNUMS_ONLY — игнорирует пакеты с нестандартными номерами портов, такими как TAK, RangeTest, PaxCounter и т. д. Ретранслирует только пакеты со стандартными номерами портов: NodeInfo, Text, Position, Telemetry и Routing.
Тут нужно смотреть на нагрузку вашей ноды и эфира, если все время отдается на ретрансляцию разного неизвестного мусора, принимайте соответствующие меры.
Сравнение ролей.
Опять табличка из документации.
Тут стоит обратить внимание на режимы ретрансляций, приоритеты есть только у ROUTER и CLIENT_BASE, роли в чем то очень похожи, но CLIENT_BASE ограничен списком избранное, а ROUTER он для всех. Так как это инфраструктурный узел и он предполагает автономную работу и установку на высоте, у него выключен дисплей и какая либо иная коммуникация со внешним миром, это связано с режимами энергосбережения (только для ESP32), микроконтроллер находится в спячке, и работает только на радиомодуль. Устанавливая этот режим следует предварительно настроить удаленное администрирование.
Особенно стоит обратить внимание на режимы энергопотребления, CLIENT_MUTE и CLIENT_HIDDEN еще более подходит для носимых устройств с батарейным питанием, не только отсутствием лишней нагрузки на эфир.
TRACKER и SENSOR большую часть времени находятся в спячке, будит их таймер, ретрансляцией они почти не занимаются.
...
Хопы, или количество ретрансляций.
Настоятельно рекомендуется оставить значение
МАКСИМАЛЬНОГО КОЛИЧЕСТВА ПЕРЕХОДОВ равным 3, если только вы не уверены, что для достижения узла назначения вам нужно больше (или меньше) переходов. Чрезмерно большое количество переходов часто приводит к проблемам в сети. Если вам нужно увеличить количество переходов, вносите изменения только в узлы на границах сети, а не в те, что находятся ближе к центру.
Что это? В сети есть ограничение на количество ретрансляций. Пакет можно послать указав ему ограничение в три хопа и на четвертой ноде он умрет не достигнув адресата, или достигнув если это четвертая в цепочке нода, а можно поставить ограничение на семь, но тогда есть шансы что пакет вернется вам обратно обойдя весь город, хотя ваш адресат в цепочки четвертый.
Не увеличивайте это число без нужды, это делает сеть неработоспособной отбирая эфирное время на трансляцию того, что транслировать не нужно. Спросите в общем чате с каким количеством ретрансляций Вас принимают, скорее всего 3 или 4 это будет максимальное число, такое+1 и устанавливайте.
Окончание тут https://arduinolab.pw/index.php/2025/12/20/meshtastic-roli-ustrojstv-v-seti-i-konfiguraciya/