Meshtastic: компиляция прошивки для ESP32-C3 Super-Mini
Добавил(а) microsin
Сначала надо выполнить шаги "Этап 1" и "Этап 2" из [1]. На этих шагах устанавливается PlatformIO и закачивается репозиторий Git проекта Meshtastic.
[Этап 3: Адаптация конфигурации для E22-900M22]
1. Выберите основу для конфигурации. В папке variants/esp32c3/diy/esp32c3_super_mini находится готовая конфигурация, которая лучше всего подойдет для подключения к платке ESP32-S3 Super Mini. Она идеально работает в качестве стартовой точки, так как уже содержит настройки для работы с модулями Ebyte. В этой конфигурации надо будет сделать настройку выводов портов для подключения модуля LoRa-радио на чипе SX1262 (модуль E22-900M22S).
2. Сделайте копию папки variants/esp32c3/diy/esp32c3_super_mini и всего содержимого, что в ней находится, в папку variants/esp32c3/diy/myvariant.
3. Отредактируйте файл myvariant/variant.h, где задаются номера портов ввода/вывода и другие опции. Для платы 260321mechtastic, в разделе настроек LoRa оставьте только определение USE_SX1262, остальные закомментируйте. Исправьте также назначение ножек портов, макросы LORA_xxx.
// Напряжение для внешнего TCXO (32 МГц): #define SX126X_DIO3_TCXO_VOLTAGE (1.8) #define TCXO_OPTIONAL // чтобы прошивка пробовала и TCXO, и XTAL
#ifdef __cplusplus
} #endif
/*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ #endif
4. Установите правильные параметры мощности. Для модуля E22-900M22S важно указать его максимальную выходную мощность (22 дБм). Обычно это делается с помощью флагов сборки. Найдите их в том же файле variant.h, или добавьте в platformio.ini для вашего окружения следующие строки:
#define EBYTE_E22_900M22S // Включает поддержку конкретного модуля #define TX_GAIN_LORA 7 // Усиление встроенного усилителя E22
// --- Параметры вывода радиосигнала --- // Максимальная выходная мощность модуля = +22 dBm: #define SX126X_MAX_POWER 22 // Включает DIO2 для управления внешним RF-переключателем: //#define SX126X_DIO2_AS_RF_SWITCH
// --- Ток и усиление (опционально, для точной настройки) --- // Лимит тока в мА для достижения макс. мощности: #define SX126X_CURRENT_LIMIT 140.0
5. Добавьте ваш новый вариант сборки myvariant к списку вариантов Meshtastic. Корневой файл firmware\platformio.ini подключает все .ini файлы из папки variants/*/*.ini, в том числе и ваш файл platformio.ini в папке myvariant.
extra_configs= variants/*/*.ini variants/*/*/platformio.ini # Эта строчка подключит файл platformio.ini в вашей папке myvariant: variants/*/diy/*/platformio.ini src/graphics/niche/InkHUD/PlatformioConfig.ini
Откройте файл firmware/variants/esp32c3/diy/myvariant/platformio.ini и внесите в него следующие изменения (измененные значения выделены жирным шрифтом):
; ESP32 C3 Super Mini Development Board ; https://www.espboards.dev/esp32/esp32-c3-super-mini/ [env:myvariant] extends=esp32c3_base board=esp32c3_super_mini build_flags=${esp32c3_base.build_flags} -D myvariant-I variants/esp32c3/diy/myvariant -D ARDUINO_USB_MODE=1 -D ARDUINO_USB_CDC_ON_BOOT=1 board_level=extra
[Этап 4: Сборка и заливка прошивки]
Теперь, когда конфигурация готова, можно приступить к компиляции.
1. Перейдите в корневой каталог репозитория (в папку firmware):
Первая сборка может занять 10-15 минут, так как PlatformIO загрузит все необходимые инструменты и библиотеки. В случае успеха вы увидите сообщение `SUCCESS`, а готовый файл прошивки (`.bin` или `.uf2`) будет находиться в папке .pio/build/myvariant/.
$ pio run -e myvariant
Traceback (most recent call last):
File "/usr/bin/pio", line 33, in < module>
sys.exit(load_entry_point('platformio==4.3.4', 'console_scripts', 'pio')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/bin/pio", line 25, in importlib_load_entry_point
return next(matches).load()
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/importlib/metadata/__init__.py", line 205, in load
module = import_module(match.group('module'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "< frozen importlib._bootstrap>", line 1387, in _gcd_import
File "< frozen importlib._bootstrap>", line 1360, in _find_and_load
File "< frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "< frozen importlib._bootstrap>", line 935, in _load_unlocked
File "< frozen importlib._bootstrap_external>", line 995, in exec_module
File "< frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/usr/lib/python3/dist-packages/platformio/__main__.py", line 66, in < module>
@cli.resultcallback()
^^^^^^^^^^^^^^^^^^
AttributeError: 'PlatformioCLI' object has no attribute 'resultcallback'. Did you mean: 'result_callback'?
Способ 1: Обновить PlatformIO через pip (рекомендуется)
Так как PlatformIO был установлен через системный пакетный менеджер, его нужно обновить через pip:
# Сначала удалите старую версию из репозитория sudo apt remove platformio
# Установите свежую версию через pip pip install --upgrade platformio
$ pio run -e myvariant
UnknownEnvNamesError: Unknown environment names 'myvariant'.
Valid names are 'sugarcube, m5stack-stamp-c3, elecrow-adv-35-tft, icarus, muzi-base,
...
heltec-v4, seeed_xiao_nrf52840_kit_i2c, heltec-v4-tft, feather_rp2040_rfm95, betafpv_900_tx_nano'
Ошибка означает, что в вашем проекте нет среды (environment) с именем myvariant. Это имя вы выбрали сами, но его нужно предварительно определить в файле platformio.ini.
[Решение: создать свою среду в platformio.ini]
В корне вашего проекта Meshtastic найдите файл platformio.ini. В нём нужно добавить секцию для вашей пользовательской конфигурации.
Вариант 1: создать новую среду на основе существующей
Скорее всего, для вашего модуля E22-900M22S лучше всего подходит среда `tlora-v2-1-1_6` или `tbeam`. Добавьте в конец файла platformio.ini:
[env:myvariant] extends=env:tlora-v2-1-1_6 board=ttgo-lora32-v21new build_flags= ${env:tlora-v2-1-1_6.build_flags} -I variants/myvariant ; Если нужно переопределить variant.h ;board_build.variant = variants/myvariant
Вариант 2: создать полностью свою конфигурацию для E22-900M22S
; SPI пины для E22 (настройте под ваш контроллер) build_unflags= ${env:ttgo-lora32-v21new.build_unflags}
lib_deps= ${env:ttgo-lora32-v21new.lib_deps}
Вариант 3: скопировать и переименовать существующую среду
Посмотрите список доступных сред — например, `tbeam` или `heltec-v3` — и используйте одну из них напрямую:
# Вместо myvariant используйте существующее имя pio run -e tbeam
# или pio run -e heltec-v3
# или pio run -e tlora-v2-1-1_6
Создание директории для variant.h. Если вы создали свою среду myvariant, вам также нужно создать директорию для вашего файла variant.h:
# Создайте папку для вашего варианта mkdir -p variants/myvariant
# Скопируйте туда файл variant.h (можете взять за основу существующий) cp variants/tbeam/variant.h variants/myvariant/ # или создайте свой nano variants/myvariant/variant.h
[Быстрое решение (если хотите просто собрать)]
Если вы не хотите возиться с созданием своей конфигурации, просто используйте существующую среду, которая наиболее близка к вашему железу. Для E22-900M22S попробуйте:
pio run -e tbeam
или:
pio run -e tlora-v2-1-1_6
Эти среды уже имеют правильные настройки для чипа SX1262 и должны работать с вашим модулем. После успешной сборки вы получите прошивку в папке .pio/build/ с именем выбранной среды.
$ pio run -e myvariant
Processing myvariant (board: esp32c3_super_mini; platform:
https://github.com/pioarduino/platform-espressif32/releases/download/55.03.38-1
/platform-espressif32.zip; framework: arduino)
-------------------------------------------------------------------------------
Platform Manager: Installing https://github.com/pioarduino/platform-espressif32
/releases/download/55.03.38-1/platform-espressif32.zip
Downloading [####################################] 100%
Unpacking [####################################] 100%
Platform Manager: espressif32@55.3.38 has been installed!
UnknownBoard: Unknown board ID 'esp32c3_super_mini'
Ошибка `Unknown board ID 'esp32c3_super_mini'` возникает, потому что PlatformIO не может найти стандартное определение платы с таким ID в вашей текущей конфигурации. Это похоже на то, как если бы вы попросили кого-то найти книгу, которой нет в библиотеке. В вашем файле platformio.ini указана неизвестная платформа.
Вот как это можно исправить:
1. Проверьте, существует ли такая плата в PlatformIO. Сначала убедитесь, что плата с ID `esp32c3_super_mini` вообще известна PlatformIO. Выполните в терминале команду:
pio boards
Она выведет огромный список всех поддерживаемых плат. Поищите в нём `esp32c3_super_mini`. Если не найдете, значит, её действительно нет. В моем случае был похожий вариант платы:
Поэтому было достаточно заменить esp32c3_super_mini на nologo_esp32c3_super_mini в моем файле variants/esp32c3/diy/esp32c3_super_mini/platformio.ini:
; ESP32 C3 Super Mini Development Board ; https://www.espboards.dev/esp32/esp32-c3-super-mini/ [env:myvariant] extends=esp32c3_base board=nologo_esp32c3_super_mini build_flags=${esp32c3_base.build_flags} -D myvariant -I variants/esp32c3/diy/myvariant -D ARDUINO_USB_MODE=1 -D ARDUINO_USB_CDC_ON_BOOT=1 board_level=extra
2. Используйте официальную плату (рекомендуемый способ). Самый надежный путь — выбрать существующую плату, наиболее близкую по характеристикам к вашему устройству.
Вариант А: `tbeam` — так как вы работаете с LoRa и, вероятно, на базе ESP32, одной из самых популярных плат является `tbeam`. Просто замените `board = esp32c3_super_mini` на `board = tbeam`.
Вариант Б: `ttgo-lora32-v21new` — еще один распространенный вариант для LoRa-проектов.
Как узнать ID: вы можете найти ID нужной платы с помощью команды `pio boards | grep -i "ваше_ключевое_слово"`, например, `pio boards | grep -i "lora"`.
Ваш platformio.ini после правки будет выглядеть так:
[env:myvariant] platform=espressif32; явно укажите платформу board=tbeam; замените на существующий ID платы framework=arduino
3. Создайте свою собственную плату (продвинутый способ). Если вы точно знаете, что ваша плата уникальна и её нет в списке, вы можете определить её сами. Для этого:
(a) Создайте JSON-файл с описанием платы. Создайте файл, например, my_custom_board.json, и поместите его в папку вашего проекта: < ваш_проект>/boards/. Если папки boards нет, создайте её.
(b) Заполните JSON-файл. Минимально жизнеспособный пример для ESP32-платы (исправьте значения под ваше железо):
Compiling .pio/build/myvariant/src/detect/ScanI2C.cpp.o
In file included from src/graphics/Screen.h:78,
from src/main.h:8,
from src/Power.cpp:23:
.pio/libdeps/myvariant/ESP8266 and ESP32 OLED driver for SSD1306 displays/src/SSD1306Wire.h:
In constructor 'SSD1306Wire::SSD1306Wire(uint8_t, int, int, OLEDDISPLAY_GEOMETRY, HW_I2C, int)':
.pio/libdeps/myvariant/ESP8266 and ESP32 OLED driver for SSD1306 displays/src/SSD1306Wire.h:87:51:
error: 'Wire1' was not declared in this scope; did you mean 'Wire'?
87 | this->_wire = (_i2cBus==I2C_ONE) ? &Wire : &Wire1;
| ^~~~~
| Wire
In file included from src/graphics/Screen.h:78,
from src/PowerFSM.cpp:16:
.pio/libdeps/myvariant/ESP8266 and ESP32 OLED driver for SSD1306 displays/src/SSD1306Wire.h:
In constructor 'SSD1306Wire::SSD1306Wire(uint8_t, int, int, OLEDDISPLAY_GEOMETRY, HW_I2C, int)':
.pio/libdeps/myvariant/ESP8266 and ESP32 OLED driver for SSD1306 displays/src/SSD1306Wire.h:87:51:
error: 'Wire1' was not declared in this scope; did you mean 'Wire'?
Проблема в том, что библиотека дисплея пытается использовать `Wire1`, которого нет на вашем ESP32-C3.
[Быстрое решение]
Отредактируйте файл библиотеки, который вызывает ошибку: .pio/libdeps/myvariant/ESP8266\ and\ ESP32\ OLED\ driver\ for\ SSD1306\ displays/src/SSD1306Wire.h. Этот способ самый простой, однако у него есть недостаток: при полной перекомпиляции с нуля содержимое ваших исправлений потеряется, и их придется вносить заново.
if old_line in content:
content = content.replace(old_line, new_lines)
withopen(wire_h, 'w') as f:
f.write(content)
print("✅ Файл успешно исправлен") else:
print("❌ Строка не найдена")
Затем в ~/firmware/variants/esp32c3/diy/myvariant/platformio.ini варианта добавьте:
[env:myvariant] ; ... остальные настройки ... extra_scripts=pre:extra_scripts/pre_fix_wire1.py
Перекомпилируйте начисто:
cd firmware rm -rf ./pio pio run -e myvariant -j $(nproc)
Медленная компиляция Meshtastic — действительно распространённая проблема, особенно если это ваша первая сборка. Самое важное, что нужно знать: это нормально, что она идёт долго. Вся сложность в том, что PlatformIO (инструмент сборки) изначально не очень быстр, а Meshtastic — проект огромный и поддерживает кучу разных плат.
Вот что вы можете сделать, чтобы ускорить процесс.
[3 самых эффективных способа ускорить сборку]
Это лучшие методы, которые реально сократят ваше время ожидания.
1. Включить `ccache` (обязательно к применению). Это система кэширования компиляции, которая запоминает результат сборки каждого файла. Если вы перекомпилируете проект снова (или переключитесь между похожими платами), `ccache` просто подставит готовый результат, экономя огромное количество времени.
Чтобы его включить, добавьте в ваш файл platformio.ini варианта эту строчку:
build_cache_dir=.pio/build_cache
Как это поможет: вторая и последующие сборки станут заметно быстрее.
2. Использовать флаг `-j` для параллельной сборки. Этот флаг указывает PlatformIO задействовать все ядра вашего процессора для компиляции. По умолчанию он может работать медленнее.
Выполняйте сборку так:
pio run -e myvariant -j $(nproc)
Как это помогает: сборка становится намного быстрее за счёт параллельной работы. Без этого флага процессор используется не полностью.
3. Собирать только одну конкретную плату. В PlatformIO можно определить множество сред (`[env:...]`). Если запустить сборку без указания среды, он начнёт компилировать всё подряд, что может занять десятки минут даже на современной рабочей станции.
Всегда явно указывайте вашу среду:
pio run -e myvariant
Как это помогает: вы компилируете ровно то, что вам нужно, избегая лишней работы.
[Почему сборка всё ещё может быть медленной]
Даже с этими настройками процесс может идти не мгновенно. Вот несколько причин, с которыми сталкиваются разработчики:
1. "Холостая" сборка всё равно требует времени: даже если вы ничего не меняли в коде, PlatformIO может тратить 30–40 секунд просто на проверку зависимостей и запуск инструментов. Это особенность его внутренней системы SCons.
2. Размер проекта: Meshtastic — это не просто "мигание светодиодом". Это сложная прошивка с поддержкой mesh-сетей, GPS, дисплеев, Bluetooth и многого другого. Большой код требует времени на компиляцию.
3. Антивирус: в некоторых случаях антивирусное ПО в реальном времени может замедлять сборку, проверяя каждый создаваемый файл.
[Краткая инструкция для ускорения]
1. Добавьте `build_cache_dir = .pio/build_cache` в ваш platformio.ini.
2. Всегда используйте `-j` флаг:
pio run -e myvariant -j $(nproc)
3. Для первой сборки запаситесь терпением. Следующие будут быстрее.
В PlatformIO есть несколько способов очистки проекта. Основная команда — pio run -t clean, но в зависимости от ситуации могут потребоваться разные уровни очистки.
[Уровни очистки]
1. Стандартная очистка (clean)
Удаляет только временные объектные файлы для текущей среды сборки, оставляя библиотеки и кеш нетронутыми.
pio run -t clean
Для конкретной среды:
pio run -e myvariant -t clean
Когда использовать: обычные ошибки компиляции, проблемы с инкрементальной сборкой.
2. Полная очистка (prune)
Удаляет всё неиспользуемое кешированное содержимое (неиспользуемые пакеты, библиотеки, кеш платформ).
pio system prune
Показать, что будет удалено, без реального удаления:
pio system prune --dry-run
Пропустить подтверждение:
pio system prune --force
Когда использовать: нехватка места на диске, подозрение на повреждение глобального кеша PlatformIO.
3. Ручная полная очистка
Удаление всех скомпилированных данных проекта и кешированных зависимостей. Самый радикальный метод.
Для текущего проекта:
rm -rf .pio
Полный сброс PlatformIO (все проекты):
rm -rf ~/.platformio
Переустановка пакетов при следующей сборке:
pio run
Когда использовать: переключение между средами вызывает ошибки "No such file or directory", необъяснимые конфликты библиотек, полный сбой после неудачного обновления.
[Какой метод выбрать для вашей ситуации]
Ситуация
Рекомендуемая команда
Обычная ошибка компиляции
pio run -t clean
Ошибка после смены variant.h
rm -rf .pio + пересборка
Смена среды сборки вызывает ошибки библиотек
rm -rf .pio/libdeps/[env_name] или rm -rf .pio
Нехватка места на диске
pio system prune
Полный сбой PlatformIO
rm -rf ~/.platformio
Совет: для ситуации сборки Meshtastic с пользовательским variant.h после возникновения ошибок с I2C и Wire1 или подобными рекомендуется выполнить полную очистку проекта, так как изменения в конфигурации затронули несколько файлов:
rm -rf .pio pio run -e myvariant
Это гарантирует, что все объектные файлы будут перекомпилированы заново с вашими обновлёнными настройками.
In file included from src/mesh/MemoryPool.h:9,
from src/mesh/MeshRadio.h:3,
from src/mesh/Default.h:2,
from src/SerialConsole.cpp:2:
src/configuration.h:68:2: error: #error APP_VERSION must be set by the build environment
68 | #error APP_VERSION must be set by the build environment
| ^~~~~
Добавьте в файл variants/esp32c3/diy/myvariant/platformio.ini:
[env:myvariant] ... build_flags= ... -D APP_VERSION=\"2.5.0.myvariant\"# Временное значение -D HW_VERSION=\"1.0\"
src/main.cpp:174:52: error: 'USERPREFS_TZ_STRING' was not declared in this scope
174 | volatile static const char slipstreamTZString[] = {USERPREFS_TZ_STRING};
| ^~~~~~~~~~~~~~~~~~~
Добавьте в файл variants/esp32c3/diy/myvariant/platformio.ini:
src/modules/ExternalNotificationModule.cpp: In constructor 'ExternalNotificationModule::ExternalNotificationModule()':
src/modules/ExternalNotificationModule.cpp:314:43: error: 'USERPREFS_RINGTONE_RTTTL' was not declared in this scope
314 | strncpy(rtttlConfig.ringtone, USERPREFS_RINGTONE_RTTTL, sizeof(rtttlConfig.ringtone));
| ^~~~~~~~~~~~~~~~~~~~~~~~
Добавьте в файл variants/esp32c3/diy/myvariant/platformio.ini:
Итоговый файл называется firmware.bin. Все промежуточные объектные файлы и результаты компиляции отдельных модулей также находятся в этой директории .pio/build/myvariant/.
[Как это работает]
myvariant: это название конкретной конфигурации сборки (окружения), которое вы указали в файле platformio.ini через флаг `-e myvariant`. Если бы вы собирали другую конфигурацию, например, `pio run -e tbeam`, папка с результатом называлась бы tbeam.
firmware.bin: самый главный файл — это и есть ваша готовая прошивка, которую можно записывать на устройство.
Другие файлы: рядом с ним вы можете найти и другие артефакты сборки, например, firmware.elf (отладочный файл с дополнительной информацией) или partitions.bin (файл с таблицей разделов памяти), но для прошивки обычно нужен только `.bin`.
Если вы захотите изменить стандартное расположение этой папки (например, чтобы не засорять проект), это можно сделать, добавив в ваш platformio.ini в секцию `[platformio]` директиву `build_dir`.
Прошить ESP32-C3 можно напрямую из PlatformIO — это самый удобный способ, так как вы уже используете эту среду для сборки. Вот как это сделать правильно для вашей платы Nologo ESP32-C3 SuperMini.
[Прошивка через PlatformIO (рекомендуемый способ)]
PlatformIO может автоматически найти порт и прошить устройство. Просто выполните команду:
pio run -e myvariant -t upload
Если нужно указать порт вручную (например, когда подключено несколько устройств), добавьте параметр `--upload-port`:
pio run -e myvariant -t upload --upload-port /dev/ttyUSB0
PlatformIO автоматически переведёт плату в режим загрузки, прошьёт `firmware.bin` и перезапустит устройство.
[Ручная прошивка через esptool.py]
Если вы хотите прошить плату вручную или у вас нет PlatformIO, используйте официальный инструмент esptool.py.
1. Установите esptool.py (если ещё не установлен):
Добавьте в ваш platformio.ini параметры для порта и монитора:
[env:myvariant] ; ... остальные настройки ... upload_port=/dev/ttyUSB0 monitor_port=${this.upload_port} monitor_speed=115200
Если вы не знаете, какой порт используется в Linux, выполните команду ls /dev/tty* до и после подключения платы — новый появившийся порт и будет вашим.
[Особенности ESP32-C3 SuperMini]
Платы Nologo ESP32-C3 SuperMini имеют несколько особенностей:
1. USB CDC включён: в вашей конфигурации уже есть -DARDUINO_USB_CDC_ON_BOOT=1, что правильно для этой платы. Таким образом, через этот виртуальный последовательный порт осуществляется вывод отладочных сообщений, перепрошивка Meshtastic и управление его настройками (с помощью утилит Python CLI [2] и Web UI [3]).
2. Ручной вход в режим загрузки: на некоторых платах C3 может потребоваться нажать и удерживать кнопку BOOT, затем кратковременно нажать RESET (или RST, EN), после чего отпустить BOOT. Только после этого плата войдёт в режим загрузки. Иногда помогает нажатие BOOT в момент начала прошивки.
3. Сброс после прошивки: некоторые платы C3 не перезагружаются автоматически после прошивки. Если программа не запускается, нажмите кнопку RESET вручную или отключите/подключите плату по USB.
[Проверка работы]
После прошивки откройте монитор порта:
pio run -e myvariant -t monitor
Если вы видите лог Meshtastic с инициализацией модулей — плата успешно прошита и работает.
Если возникли проблемы, проверьте драйверы USB и права доступа к порту в Linux (можно добавить пользователя в группу `dialout`).
Узнать список соседних узлов в сети Meshtastic можно, но для этого необходимо сначала включить специальный модуль Neighbor Info, так как по умолчанию эта функция отключена.
[Что такое модуль Neighbor Info]
Это встроенная, но опциональная функция прошивки Meshtastic. Когда она включена, ваш узел будет периодически отправлять в mesh-сеть список своих прямых соседей (0-hop neighbors) и качество связи с ними (SNR). Это позволяет всем участникам сети (или узлам, подключенным к MQTT) построить карту связей.
Важно: эта информация носит исключительно информационный характер и не влияет на маршрутизацию пакетов в сети.
[Как включить и настроить модуль]
Управление модулем осуществляется через Python CLI [2]. Все примеры команд подходят для версий firmware 2.2.0 и выше.
1. Включить модуль:
meshtastic --set neighbor_info.enabled true
2. Настроить интервал отправки (опционально): интервал по умолчанию — 6 часов (21600 секунд) и не может быть меньше 4 часов (14400 секунд). Чтобы установить интервал, например, в 5 часов:
3. Разрешить отправку по LoRa (опционально): по умолчанию информация о соседях отправляется только через MQTT и в подключенное приложение. Чтобы отправлять её также по LoRa, используйте эту команду. Функция доступна с версии firmware 2.5.13:
После включения модуля данные о соседях будут отправляться, но, по состоянию на октябрь 2023 года, не существовало стандартных клиентов для их визуализации. Вы можете использовать следующие подходы:
MQTT: если ваша сеть имеет MQTT-шлюз, данные о соседях будут накапливаться на MQTT-сервере. Их можно собирать и обрабатывать для построения графа сети.
Traceroute: альтернативный способ увидеть сетевой путь. Вы можете отправить traceroute до конкретного узла, чтобы увидеть последовательность узлов на пути к нему. В некоторых клиентах, например, в Meshtastic.Cli, для этого есть специальная команда `trace-route`.
[Настройка в приложениях]
Python CLI [2]: кроссплатформенная консольная утилита. В ней доступен самый полный функционал по управлению устройством Meshtastic.
Android: все настройки модуля Neighbor Info доступны в приложении версии 2.2.0 и выше. Путь к настройкам: вертикальное меню (три точки) > Radio Configuration > Neighbor Info.
Apple (iOS): на момент написания официальной документации функция еще не была реализована.
Web UI [3]: все настройки модуля доступны в веб-интерфейсе.
Стоит отметить, что модуль Neighbor Info может обнаруживать соседей даже на узлах, где он не включен (начиная с версии firmware 2.3.2), но для полной и регулярной картины сети его лучше активировать на всех возможных узлах.