feat: on-device setup wizard for repeaters with display and button

- добавлен локальный мастер настройки репитера: examples/simple_repeater/UITask.*
  (меню на кнопке, редактор координат, применение значений через CommonCLI)
- MyMesh: публичный доступ к CommonCLI для UI (getCLI), main.cpp передаёт его в UITask
- мастер работает на любой цели с дисплеем и кнопкой и исключается препроцессором
  там, где их нет; WiFi-код теперь под #if defined(ESP32)
- новая страница документации posadmesh-docs/device-setup.md, ссылки в index.md и mkdocs.yml
- README: раздел «Настройка с дисплея и кнопки» и запись в журнале изменений
- проверено сборкой: heltec_v4_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt,
  Generic_E22_sx1262_repeater_mqtt (без дисплея), RAK_3112_repeater_mqtt
This commit is contained in:
2026-10-11 17:44:41 +03:00
parent 26b724c0f0
commit 71f7095d17
8 changed files with 701 additions and 73 deletions
+65
View File
@@ -0,0 +1,65 @@
# Настройка с дисплея и кнопки
Мастер настройки работает прямо на репитере: не нужен ни компьютер, ни телефон. Он доступен на любой плате, у которой есть дисплей и кнопка, и отсутствует на платах без дисплея — там настройка выполняется через [последовательный CLI](./custom-cli.md) или [веб-панель](./web-panel.md).
## Что настраивается
Мастер меняет только то, что нужно для быстрого ввода узла в сеть:
| Пункт меню | Что делает | Команда CLI |
| --- | --- | --- |
| `Coordinates` | широта и долгота узла | `set lat`, `set lon` |
| `Radio preset` | `keep current` или готовый пресет сети MeshCoreTel (868,731 МГц, 62,5 кГц, SF7, CR7) | `set radio` |
| `TX power` | мощность передатчика, 1–30 дБм | `set tx` |
| `Repeat` | пересылка пакетов включена или выключена | `set repeat` |
| `Path hash` | размер хэша пути: 0, 1 или 2 байта | `set path.hash.mode` |
| `Advert int` | интервал advert в минутах (0 — выключено, иначе 60–240) | `set advert.interval` |
| `Flood advert` | интервал flood advert в часах (3–168) | `set flood.advert.interval` |
| `Flood max` | лимит пересылки flood (0–64) | `set flood.max` |
| `Save & exit` | выход из мастера | — |
Значения применяются сразу при выходе из пункта и сохраняются во флеш. Ответ устройства (`OK` или текст ошибки) показывается на экране — проверку выполняет тот же код, что и последовательный CLI, поэтому неверное значение не будет записано.
## Управление кнопкой
Экран состояния (обычный режим):
- **короткое** — включить или продлить подсветку экрана;
- **двойное** — войти в мастер настройки;
- **длинное** — выключить питание узла.
В меню:
- **короткое** — следующий пункт, **двойное** — предыдущий;
- **длинное** — войти в пункт.
В пункте с числом или списком:
- **короткое** — увеличить значение, **двойное** — уменьшить;
- **длинное** — применить и вернуться в меню.
Если узел прошит «с нуля» и ещё не имеет имени, мастер открывается сам после заставки.
## Ввод координат
Координаты показываются в формате `xx.xxxx yy.yyyy` — сначала широта, затем долгота. Активная цифра выделена инверсией.
| Действие | Что происходит |
| --- | --- |
| длинное нажатие | войти в изменение текущей цифры |
| короткое нажатие в режиме правки | цифра +1 |
| двойное нажатие в режиме правки | цифра −1 |
| длинное нажатие в режиме правки | применить цифру |
| короткое нажатие после применения | перейти к следующей цифре |
| длинное нажатие на экране `Save & exit?` | сохранить координаты и выйти |
| двойное нажатие на экране `Save & exit?` | вернуться к правке |
Всего перебираются 12 цифр: шесть для широты и шесть для долготы. Когда применены все, короткое нажатие выводит экран подтверждения. Координаты сохраняются двумя командами — `set lat` и `set lon`; после сохранения узел появится на карте MeshCoreTel в течение следующего advert.
Ограничение: мастер вводит положительные координаты (формат без знака). Для южного полушария и западной долготы используйте CLI (`set lat -33.1234`) или веб-панель.
## Ограничения
- На экранах без кириллицы подписи меню выводятся латиницей.
- Мастер не настраивает Wi-Fi, MQTT, регионы и список доступа: для них нужен последовательный CLI или веб-панель. На плате с Wi-Fi их удобнее задавать из веб-панели.
- Если дисплея нет, мастер не компилируется в прошивку и на поведение узла не влияет.