Перевод от 16.06.2026г.
Копия на английском
Оригинальный материал
Этот документ содержит обзор команд CLI, которые могут быть отправлены ретрансляторам MeshCore, серверам комнат и датчикам.
Использование:
rebootПримечание: Ответ не отправляется.
Использование:
poweroff илиshutdownПримечание: Ответ не отправляется.
Использование:
clkrebootПримечание: Ответ не отправляется.
Использование:
clock syncИспользование:
clockИспользование:
time <epoch_seconds>Параметры:
epoch_seconds: время Unix (Epoch)Использование:
advertИспользование:
advert.zerohopИспользование:
start otaИспользование:
eraseТолько через последовательный порт: Да
Предупреждение: Это приведёт к безвозвратному удалению данных!
^84f8a1
Использование:
neighborsПримечание: Вывод этой команды ограничен 8 самыми недавними объявлениями.
Примечание: Каждая строка кодируется как {pubkey-prefix}:{timestamp}:{snr*4}
Использование:
neighbor.remove <pubkey_prefix>Параметры:
pubkey_prefix: Публичный ключ узла, который нужно удалить из списка соседей. Это может быть короткий префикс или полный ключ. Будут удалены все соседи, соответствующие указанному префиксу.Примечание: Вы можете удалить всех соседей, отправив в качестве префикса символ пробела. Пробел обозначает пустой префикс, который соответствует всем существующим соседям.
Использование:
discover.neighborsИспользование: clear stats
Использование:
stats-coreТолько через последовательный интерфейс: Да
Использование: stats-radio
Только через последовательный интерфейс: Да
Использование: stats-packets
Только через последовательный интерфейс: Да
Использование: log start
Использование: log stop
Использование: log erase
Использование: log
Только через последовательный интерфейс: Да
Использование: ver
Использование: board
Использование:
get radioset radio <freq>,<bw>,<sf>,<cr>Параметры:
freq: Частота в МГцbw: Полоса пропускания в кГцsf: Коэффициент расширения спектра (5–12)cr: Скорость кодирования (5–8)Устанавливается флагами сборки: LORA_FREQ, LORA_BW, LORA_SF, LORA_CR
По умолчанию: 869.525,250,11,5
Примечание: Для применения требуется перезагрузка
Использование:
get txset tx <dbm>Параметры:
dbm: Уровень мощности в дБм (1–22)Устанавливается флагом сборки: LORA_TX_POWER
По умолчанию: Зависит от платы
Примечания: Эта настройка управляет только уровнем мощности чипа LoRa. Некоторые узлы имеют дополнительный каскад усилителя мощности, который увеличивает общую выходную мощность. Обратитесь к руководству вашего узла, чтобы выбрать правильное значение. Установка слишком высокого значения может нарушать законодательство вашей страны.
Использование:
tempradio <freq>,<bw>,<sf>,<cr>,<timeout_mins>Параметры:
freq: Частота в МГц (300–2500)bw: Полоса пропускания в кГц (7.8–500)sf: Коэффициент расширения спектра (5–12)cr: Скорость кодирования (5–8)timeout_mins: Длительность в минутах (должна быть > 0)Примечание: Не сохраняется в настройках и сбрасывается после перезагрузки
Использование:
get freqset freq <frequency>Параметры:
frequency: Частота в МГцПо умолчанию: 869.525
Примечание: Для применения требуется перезагрузка
Только через последовательный интерфейс: set freq <frequency>
Использование:
get radio.rxgainset radio.rxgain <state>Параметры:
state: on|offПо умолчанию: on
Временное примечание: Если вы обновились со старой версии до 1.14.1 без очистки flash-памяти, эта настройка будет иметь значение off из-за #2118
Использование:
get nameset name <имя>Параметры:
name: Имя узлаУстанавливается флагом сборки: ADVERT_NAME
По умолчанию: Зависит от платы
Примечание: Максимальная длина различается. Если задано местоположение, максимальная длина составляет 24 байта; в противном случае - 32 байта. Эмодзи и символы Unicode могут занимать более одного байта.
Использование:
get latset lat <градусы>Устанавливается флагом сборки: ADVERT_LAT
По умолчанию: 0
Параметры:
degrees: Широта в градусахИспользование:
get lonset lon <градусы>Устанавливается флагом сборки: ADVERT_LON
По умолчанию: 0
Параметры:
degrees: Долгота в градусахИспользование:
get prv.keyset prv.key <закрытый_ключ>Параметры:
private_key: Закрытый ключ в шестнадцатеричном формате (64 шестнадцатеричных символа)Только через последовательный интерфейс:
get prv.key: Даset prv.key: НетПримечание: После установки требуется перезагрузка для применения изменений
Использование:
password <новый_пароль>Параметры:
new_password: Новый пароль администратораУстанавливается флагом сборки: ADMIN_PASSWORD
По умолчанию: password
Примечание: В ответе на команду отображается обновлённый пароль для подтверждения.
Примечание: Любой узел, использующий этот пароль, будет добавлен в список ACL администраторов.
Использование:
get guest.passwordset guest.password <пароль>Параметры:
password: Гостевой парольУстанавливается флагом сборки: ROOM_PASSWORD (только для Room Server)
По умолчанию: <пусто>
Использование:
get owner.infoset owner.info <текст>Параметры:
text: Текст с информацией о владельцеПо умолчанию: <пусто>
Примечание: Символы | преобразуются в переводы строк
Примечание: Требуется прошивка версии 1.12 или выше
Использование:
get adc.multiplierset adc.multiplier <значение>Параметры:
value: Множитель ADC (0.0–10.0)По умолчанию: 0.0 (значение определяется платой)
Примечание: Возвращает сообщение «Error: unsupported by this board», если оборудование не поддерживает эту функцию
Использование: get public.key
Использование: ver
Использование: get role
Использование:
powersavingpowersaving onpowersaving offПараметры:
on: включить энергосбережениеoff: отключить энергосбережениеПо умолчанию: off
Примечание: При включении устройство переходит в спящий режим между радиопередачами.
Использование:
get repeatset repeat <state>Параметры:
state: on|offПо умолчанию: on
Использование:
get path.hash.modeset path.hash.mode <value>Параметры:
value: Размер хеша пути (0–2)
0: Размер хеша 1 байт (256 уникальных идентификаторов) [макс. глубина flood: 64]1: Размер хеша 2 байта (65 536 уникальных идентификаторов) [макс. глубина flood: 32]2: Размер хеша 3 байта (16 777 216 уникальных идентификаторов) [макс. глубина flood: 21]3: НЕ ИСПОЛЬЗОВАТЬ (зарезервировано)По умолчанию: 0
Примечание: параметр path.hash.mode задаёт размер кодирования ID/хеша низкого уровня, используемого в рекламных сообщениях ретранслятора. Этот параметр не влияет на размер ID/хеша пакетов, которые данный ретранслятор пересылает; в прошивках >= 1.14 должны пересылаться все размеры. Эта функция была добавлена в прошивке 1.14.
Временное примечание: рекламные сообщения с размером ID/хеша 2 или 3 байта могут иметь ограниченное распространение по сети, пока эта функция ещё новая, поскольку прошивки v1.13.0 и более ранние отбрасывают пакеты с многобайтовыми ID/хешами пути, поддерживая только 1-байтовые хеши. Перед использованием увеличенных размеров ID/хеша рекомендуется убедиться, что значительная часть устройств в сети уже работает на прошивке >= 1.14.
Использование:
get loop.detectset loop.detect <state>Параметры:
state:
off: обнаружение циклов не выполняетсяminimal: пакет отбрасывается, если ID/хеш ретранслятора встречается 4 или более раз (1 байт), 2 или более раз (2 байта), 1 или более раз (3 байта)moderate: пакет отбрасывается, если ID/хеш ретранслятора встречается 2 или более раз (1 байт), 1 или более раз (2 байта), 1 или более раз (3 байта)strict: пакет отбрасывается, если ID/хеш ретранслятора встречается 1 или более раз (1 байт), 1 или более раз (2 байта), 1 или более раз (3 байта)По умолчанию: off
Примечание: при включении этой функции ретрансляторы будут отклонять flood-пакеты, которые выглядят как зацикленные. В последнее время это наблюдалось в некоторых mesh-сетях при наличии хотя бы одного «плохого» ретранслятора (вероятно, с форком или кастомной прошивкой). Если полезная нагрузка изменяется и затем пересылается дальше, один и тот же пакет может вызвать шторм пакетов, повторяясь до максимальных 64 переходов. Эта функция была добавлена в прошивке 1.14.
Пример: если установлено значение loop.detect minimal и получен пакет с размером пути 1 байт, ретранслятор проверит, присутствует ли его собственный ID/хеш в пути. Если он уже закодирован 4 раза, пакет будет отклонён. Для пути размером 2 байта пакет отклоняется при наличии собственного ID/хеша 2 раза. Для пути размером 3 байта - при наличии собственного ID/хеша 1 раз.
Использование:
get txdelayset txdelay <value>Параметры:
value: Коэффициент задержки передачи (0–2)По умолчанию: 0.5
Примечание: когда несколько близко расположенных ретрансляторов получают один и тот же flood-пакет, каждый ждёт случайное время перед повторной передачей, чтобы избежать одновременных коллизий. Этот коэффициент масштабирует размер случайного интервала ожидания. Более высокие значения уменьшают риск коллизий ценой увеличения задержки. Значение 0 полностью отключает этот интервал.
Использование:
get direct.txdelayset direct.txdelay <value>Параметры:
value: Коэффициент задержки прямой передачи (0–2)По умолчанию: 0.2
Примечание: используется тот же случайный интервал предотвращения коллизий, что и для txdelay, но применяется к прямому (не flood, маршрутизируемому) трафику. Значение по умолчанию ниже, поскольку прямые пакеты адресованы конкретному следующему узлу, и значительно меньшее количество узлов конкурирует за их ретрансляцию.
Использование:
get rxdelayset rxdelay <value>Параметры:
value: Базовая задержка приёма (0–20)По умолчанию: 0.0
Примечание: при включении этой функции ретрансляторы, получившие flood-пакет со слабым сигналом, помещают его в очередь задержки перед обработкой, тогда как узлы, получившие пакет с сильным сигналом, обрабатывают его сразу. Это даёт приоритет маршрутам с сильным сигналом. К моменту обработки копии пакета узлами со слабым сигналом пакет уже может распространиться по сети и быть подавлен как дубликат, что уменьшает количество лишних повторных передач.
Использование:
get dutycycleset dutycycle <value>Параметры:
value: Процент duty cycle (1–100)По умолчанию: 50% (эквивалентно коэффициенту эфирного времени 1.0)
Примеры:
set dutycycle 100 - без ограничения duty cycleset dutycycle 50 - duty cycle 50% (по умолчанию)set dutycycle 10 - duty cycle 10%set dutycycle 1 - duty cycle 1% (самое строгое требование ЕС)Примечание: добавлено в прошивке v1.15.0
Устарело начиная с прошивки v1.15.0. Используйте
get/set dutycycle.
Использование:
get afset af <value>Параметры:
value: Коэффициент эфирного времени (0–9). После каждой передачи ретранслятор выдерживает период молчания, приблизительно равный времени передачи в эфире, умноженному на это значение. Это обеспечивает долгосрочный duty cycle примерно равный 1, делённому на (1 + значение). Например:
af = 1 → ~50% duty cycleaf = 2 → ~33% duty cycleaf = 3 → ~25% duty cycleaf = 9 → ~10% duty cycle
Вы несёте ответственность за выбор значения, соответствующего требованиям вашей юрисдикции и плану каналов (например, нормативу ЕС для диапазона 868 МГц с ограничением 10% duty cycle).По умолчанию: 1.0
Использование:
get int.threshset int.thresh <value>Параметры:
value: Значение порога помехПо умолчанию: 0.0
Использование:
get agc.reset.intervalset agc.reset.interval <value>Параметры:
value: Интервал в секундах с округлением вниз до ближайшего числа, кратного 4 (17 становится 16). Значение 0 отключает функцию.По умолчанию: 0.0
Использование:
get multi.acksset multi.acks <state>Параметры:
state: 0 (отключить) или 1 (включить)По умолчанию: 0
Использование:
get flood.advert.intervalset flood.advert.interval <hours>Параметры:
hours: Интервал в часах (3–168)По умолчанию: 12 (ретранслятор) - 0 (датчик)
Использование:
get advert.intervalset advert.interval <minutes>Параметры:
minutes: Интервал в минутах с округлением вниз до ближайшего значения, кратного 2 (61 становится 60) (60–240)По умолчанию: 0
Использование:
get flood.maxset flood.max <value>Параметры:
value: Максимальное количество переходов flood (0–64)По умолчанию: 64
Использование:
get flood.max.unscopedset flood.max.unscoped <value>Параметры:
value: Максимальное количество переходов flood (0–64) для пакета без области действия (регион не задан)По умолчанию: 64 - (0xFF означает, что значение не установлено и будет следовать flood.max, пока не будет задано явно.)
Примечание: как альтернатива region denyf *, установка flood.max.unscoped в более низкое значение, например 3, позволит локальным сообщениям без области распространяться, предотвращая при этом flood из соседних регионов.
Использование:
get flood.max.advertset flood.max.advert <value>Параметры:
value: Максимальное количество переходов flood для рекламного пакета (0–64)По умолчанию: 8
Использование:
setperm <pubkey> <permissions>Параметры:
pubkey: Публичный ключ компаньонаpermissions:
0: Гость1: Только чтение2: Чтение и запись3: АдминистраторПримечание: запись удаляется, если параметр permissions не указан
Использование:
get aclТолько через последовательный интерфейс: Да
Использование:
get allow.read.onlyset allow.read.only <state>Параметры:
state: on (включить) или off (отключить)По умолчанию: off
Использование:
region loadregion load <name> [flood_flag]Параметры:
name: Имя региона. * обозначает подстановочный регионПримечание: flood_flag: необязательный параметр F, разрешающий flood
Примечание: отступы создают отношения родитель–дочерний элемент (максимум 8 уровней)
Примечание: region load без имени не работает удалённо (интерактивный режим)
Использование:
region saveИспользование:
region allowf <name>Параметры:
name: Имя региона (или * для подстановочного региона)Примечание: установка для подстановочного региона * разрешает пакеты без транспортных кодов региона
Использование:
region denyf <name>Параметры:
name: Имя региона (или * для подстановочного региона)Примечание: установка для подстановочного региона * отбрасывает пакеты без транспортных кодов региона
Использование:
region get <name>Параметры:
name: Имя региона (или * для подстановочного региона)Использование:
region homeregion home <name>Параметры:
name: Имя регионаИспользование:
region defaultregion default {name|<null>}Параметры:
name: Имя региона или <null> для сброса/очисткиИспользование:
region put <name> [parent_name]Параметры:
name: Имя регионаparent_name: Имя родительского региона (необязательно, по умолчанию используется подстановочный регион)Использование:
region def <token> [<token> ...]Параметры (токены): разделяются пробелами. Логический курсор начинается в подстановочном регионе *.
name - создаёт регион name как дочерний для текущего положения курсора (эквивалентно region put name, где текущий курсор выступает родителем). Курсор перемещается в name.name|jump (или name,jump) - создаёт регион name как дочерний для текущего положения курсора, затем перемещает курсор в jump (регион должен уже существовать на узле либо быть создан ранее в этой команде). jump не является родителем для name; этот формат используется для возврата вверх по дереву и начала новой ветви.Поведение: каждый созданный регион по умолчанию получает разрешение на flood (как и при использовании region put). В ответе возвращается результирующее дерево регионов (в том же формате, что и команда region без параметров); перед выполнением region save рекомендуется его проверить. При ошибке ответ имеет вид Err - ..., а регионы, созданные до возникновения ошибки, остаются на узле, аналогично частично выполненной последовательности команд region put.
Существующие регионы: region def не очищает существующее дерево. Если регион с таким именем уже существует, его родитель изменяется на текущий курсор; в противном случае создаётся новый регион. Чтобы начать с нуля, сначала удалите ненужные регионы через region remove.
Ограничения: последовательный интерфейс ретранслятора принимает одну строку длиной до 160 символов. Для больших деревьев используйте несколько команд region def; между командами курсор сбрасывается в *, поэтому следующую команду следует начинать с child|ancestor для возврата в нужное место дерева. Каждый токен может быть разделён символом | только один раз - запись region def a|b|c|d не является сокращением для плоского списка; см. пример ниже.
Пример - линейная цепочка (каждый токен становится дочерним по отношению к предыдущему):
region def a b c d e
region save
Пример - разветвлённое дерево (эквивалентно region put a, region put b a, region put c b, region put d c, region put e b, region put f e):
region def a b c d|b e f
region save
Пример - ошибка и частичное состояние:
region def a b c|nope d
Ответ: Err - unknown jump: nope. Регионы a, b и c были созданы до ошибки; d создан не был. Выполните region для проверки, затем повторите команду с исправленным переходом или внесите изменения через region remove / region put.
Пример - плоский список (каждый регион является дочерним для *). Используйте |* после каждого токена, чтобы вернуть курсор в корень перед следующим токеном:
region def a|* b|* c|* d|* e|* f
region save
Использование:
region remove <name>Параметры:
name: Имя регионаПримечание: перед удалением региона необходимо удалить все его дочерние регионы
Использование:
region list <filter>Только через последовательный интерфейс: Да
Параметры:
filter: allowed|deniedПримечание: требуется прошивка 1.12+
Использование:
regionТолько через последовательный интерфейс: для прошивок старше 1.12.0 не требуется; для более старых версий обязательно
Пример 1: Использование флага F с именованным публичным регионом
region load
#Europe F
<пустая строка для завершения region load>
region save
Пояснение:
#Europe с включённым floodПример 2: Использование подстановочного региона с флагом F
region load
* F
<пустая строка для завершения region load>
region save
Пояснение:
* с включённым floodПример 3: Использование подстановочного региона без флага F
region load
*
<пустая строка для завершения region load>
region save
Пояснение:
* без floodПример 4: Вложенный публичный регион с флагом F
region load
#Europe F
#UK
#London
#Manchester
#France
#Paris
#Lyon
<пустая строка для завершения region load>
region save
Пояснение:
#Europe с включённым flood#UK, #France)Пример 5: Подстановочный регион с вложенными публичными регионами
region load
* F
#NorthAmerica
#USA
#NewYork
#California
#Canada
#Ontario
#Quebec
<пустая строка для завершения region load>
region save
Пояснение:
* с включённым flood#NorthAmericaИспользование:
gpsgps <state>Параметры:
state: on|offПо умолчанию: off
Примечание: формат вывода:
off, если оборудование GPS отключеноon, {active|deactivated}, {fix|no fix}, {sat count} sats, если оборудование GPS включеноИспользование:
gps syncИспользование:
gps setlocИспользование:
gps advertgps advert <policy>Параметры:
policy: none|share|prefs
none: не включать местоположение в рекламные сообщенияshare: публиковать координаты GPS (из SensorManager)prefs: использовать координаты, сохранённые в настройках широты и долготы узлаПо умолчанию: prefs
Использование: sensor list [start]
Параметры:
start: Необязательный начальный индекс (по умолчанию: 0)Примечание: Формат вывода: <var_name>=<value>\n
Использование:
sensor get <key>sensor set <key> <value>Параметры:
key: Имя настройки датчикаvalue: Значение, которое будет установлено для датчикаИспользование: get bridge.type
Использование:
get bridge.enabledset bridge.enabled <state>Параметры:
state: on|offПо умолчанию: off
Использование:
get bridge.delayset bridge.delay <ms>Параметры:
ms: Задержка в миллисекундах (0–10000)По умолчанию: 500
Использование:
get bridge.sourceset bridge.source <source>Параметры:
source:
logRx: передаёт через мост полученные пакетыlogTx: передаёт через мост отправленные пакетыПо умолчанию: logTx
Использование:
get bridge.baudset bridge.baud <rate>Параметры:
rate: Скорость передачи (9600, 19200, 38400, 57600 или 115200)По умолчанию: 115200
Использование:
get bridge.channelset bridge.channel <channel>Параметры:
channel: Номер канала (1–14)Использование:
get bridge.secretset bridge.secret <secret>Параметры:
secret: Секрет моста ESP-NOW, до 15 символовПо умолчанию: Зависит от платы
Использование: get bootloader.ver
Использование: get pwrmgt.support
Использование: get pwrmgt.source
Примечание: Возвращает ошибку на платах без поддержки управления питанием.
Использование: get pwrmgt.bootreason
Примечание: Возвращает ошибку на платах без поддержки управления питанием.
Использование: get pwrmgt.bootmv
Примечание: Возвращает ошибку на платах без поддержки управления питанием.