From 28d43e964df98b452c826a806e6b0999573be94e Mon Sep 17 00:00:00 2001 From: "Valentin V. Bartenev" Date: Sat, 2 May 2026 19:47:10 +0300 Subject: [PATCH] Adopt and translate documentation --- docs/api.md | 269 ++++++++++++------------- docs/boards.md | 282 +++++++++++++------------- docs/custom-cli.md | 184 +++++++---------- docs/index.md | 38 ++-- docs/local-builds.md | 77 ++----- docs/releases.md | 147 +++++--------- docs/web-panel.md | 470 +++++++++++++++++++++---------------------- 7 files changed, 673 insertions(+), 794 deletions(-) diff --git a/docs/api.md b/docs/api.md index eeddf44b..e3107f5e 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1,102 +1,102 @@ -# Repeater Web API +# Веб-API ретранслятора -This page documents the local HTTPS API exposed by MeshCoreTel-firmware `*_repeater_mqtt` builds that support the web panel. +На этой странице описывается локальный HTTPS API, предоставляемый сборками MeshCoreTel-firmware, который поддерживает веб-панель. -It is intended for: +Он предназначен для: -- lightweight automation on your local network -- dashboards or scripts that need current repeater status -- remote CLI access through the same authenticated path used by the web panel +- легковесной автоматизации в вашей локальной сети +- панелей мониторинга или скриптов, которым требуется текущее состояние ретранслятора +- удалённого доступа к CLI по тому же аутентифицированному пути, который используется веб-панелью -This is not a cloud API and not a separate backend service. The repeater firmware serves it directly. +Это не облачный API и не отдельный фоновый сервис. Прошивка ретранслятора предоставляет его напрямую. -## Scope And Availability +## Область применения и доступность -The API is available only when: +API доступно только при соблюдении следующих условий: -- you are running a supported `*_repeater_mqtt` firmware build -- the repeater web panel is enabled and running -- you can reach the repeater over the local network -- you have authenticated with the repeater admin password +- вы используете поддерживаемую сборку прошивки +- веб-панель ретранслятора включена и работает +- вы можете связаться с ретранслятором по локальной сети +- вы аутентифицировались с паролем администратора ретранслятора -The API is intended for trusted local-network administration. Do not expose it directly to the public internet. +API предназначен для администрирования в доверенной локальной сети. Не открывайте его напрямую в публичный интернет. -## Base URL +## Базовый URL -Use the repeater's local HTTPS address: +Используйте локальный HTTPS-адрес ретранслятора: ```text https:/// ``` -Example: +Пример: ```text https://192.168.1.123/ ``` -## Authentication +## Аутентификация -The API uses the same admin password as the repeater CLI and web panel. +API использует тот же пароль администратора, что и CLI ретранслятора, и веб-панель. -1. `POST` the password to `/login` -2. store the returned session token -3. send that token in the `X-Auth-Token` header on later requests +1. Отправьте пароль методом `POST` на `/login` +2. сохраните возвращённый токен сессии +3. передавайте этот токен в заголовке `X-Auth-Token` при последующих запросах -Example: +Пример: ```bash TOKEN=$(curl -sk -X POST https:///login --data '') ``` -Use the token: +Использование токена: ```bash curl -sk https:///api/stats -H "X-Auth-Token: $TOKEN" ``` -Notes: +Примечания: -- the repeater uses a self-signed certificate, so most tools will need `-k` or equivalent -- if the session expires or is locked, requests return `401 Unauthorized` -- logging in again gives you a fresh token +- ретранслятор использует самоподписанный сертификат, поэтому большинству инструментов потребуется `-k` или аналог +- если сессия истекает или блокируется, запросы возвращают `401 Unauthorized` +- повторный вход даст новый токен -## Performance Guidance +## Рекомендации по производительности -The API runs on the repeater itself, so polling frequency matters. +API работает на самом ретрансляторе, поэтому частота опроса имеет значение. -If the repeater is also running two MQTT connections, avoid frequent API polling. The current MeshCoreTel-firmware usage pattern is: +Если ретранслятор также поддерживает два MQTT-соединения, избегайте частого опроса API. Текущая модель использования MeshCoreTel-firmware: -- `60` second polling for stats -- on-demand requests for everything else +- опрос статистики раз в `60` секунд +- запросы по требованию для всего остального -That is the recommended baseline if you want to avoid overloading the board. Keep the request rate low, avoid bursty polling, and prefer manual refresh or event-triggered reads for heavier operations. +Это рекомендуемый базовый уровень, если вы хотите избежать перегрузки устройства. Держите частоту запросов низкой, избегайте шквального опроса и отдавайте предпочтение ручному обновлению или чтению по событиям для более тяжёлых операций. -Recommended practice: +Рекомендуемая практика: -- poll `/api/stats` no more than once per minute -- avoid scraping multiple endpoints in parallel -- use on-demand calls for configuration reads and CLI actions -- close out your session when you are finished and stop polling when not actively using the data +- опрашивайте `/api/stats` не чаще одного раза в минуту +- избегайте параллельного запроса нескольких конечных точек +- используйте вызовы по требованию для чтения конфигурации и действий CLI +- завершайте сессию, когда закончили, и прекращайте опрос, когда данные активно не используются -## Endpoints +## Конечные точки ### `POST /login` -Authenticate with the repeater admin password. +Аутентификация с паролем администратора ретранслятора. -Request body: +Тело запроса: ```text ``` -Response: +Ответ: -- plain-text session token on success -- `401` on bad password +- токен сессии в виде обычного текста при успехе +- `401` при неверном пароле -Example: +Пример: ```bash curl -sk -X POST https:///login --data '' @@ -104,26 +104,26 @@ curl -sk -X POST https:///login --data '' ### `POST /api/command` -Run a repeater CLI command remotely. +Удалённое выполнение команды CLI ретранслятора. -Headers: +Заголовки: ```text X-Auth-Token: ``` -Request body: +Тело запроса: ```text get wifi.status ``` -Response: +Ответ: -- plain-text CLI output -- `OK` if a command succeeds without returning text +- вывод CLI в виде обычного текста +- `OK`, если команда выполнена успешно и не возвращает текста -Example: +Пример: ```bash curl -sk https:///api/command \ @@ -133,33 +133,33 @@ curl -sk https:///api/command \ ### `GET /api/stats` -Fetch the current summary payload used by the dedicated `/stats` page. +Получить сводные данные, используемые на отдельной странице `/stats`. -Headers: +Заголовки: ```text X-Auth-Token: ``` -Example: +Пример: ```bash curl -sk https:///api/stats \ -H "X-Auth-Token: $TOKEN" ``` -Notes: +Примечания: -- this summary view is also what the repo's web panel requests first before loading trend series -- if `web.stats` is disabled, the endpoint returns `503 Service Unavailable` -- supported boards may also include an optional `sensors` object in the summary payload for current GPS and environmental telemetry -- the `core` object includes raw `battery_mv`, board-reported `battery_pct` when available, a UI-ready `battery_display_pct`, and board-specific `battery_min_mv` / `battery_max_mv` range hints used by `/stats` when the board does not expose its own battery percentage +- это сводное представление также запрашивается веб-панелью в первую очередь перед загрузкой серий трендов +- если `web.stats` отключён, конечная точка возвращает `503 Service Unavailable` +- поддерживаемые устройства могут также включать необязательный объект `sensors` в сводных данных с текущей телеметрией GPS и окружающей среды +- объект `core` включает исходное `battery_mv`, `battery_pct` (если устройство сообщает), готовый для интерфейса `battery_display_pct`, а также специфичные для устройства подсказки диапазона `battery_min_mv` / `battery_max_mv`, используемые `/stats`, когда устройство не предоставляет собственный процент заряда ### `GET /api/stats?series=` -Fetch one trend series. +Получить один ряд тренда. -Supported series: +Поддерживаемые ряды: - `battery` - `memory` @@ -175,39 +175,26 @@ Supported series: - `gps_altitude` - `gps_satellites` -Example: +Пример: ```bash curl -sk "https:///api/stats?series=memory" \ -H "X-Auth-Token: $TOKEN" ``` -Notes: +Примечания: -- use `?series=battery`, not just `?series` -- the built-in web panel loads these series sequentially rather than all at once to keep board memory pressure lower -- environment series are included only when the board reports those readings; if a series has no captured points yet, it returns an empty `points` array and `current:null` +- используйте `?series=battery`, а не просто `?series` +- встроенная веб-панель загружает эти ряды последовательно, а не все сразу, чтобы снизить нагрузку на память платы +- ряды окружения включаются только когда устройство передаёт эти показания; если ряд еще не накопил точек, он возвращает пустой массив `points` и `current:null` -### `GET /api/stats?view=legacy` +## Типовые сценарии использования -Fetch the older bundle-style stats payload. +### 1. Удалённый доступ к CLI -Example: +`/api/command` — самая гибкая конечная точка. Она позволяет выполнять те же команды CLI, которые принимает ретранслятор. -```bash -curl -sk "https:///api/stats?view=legacy" \ - -H "X-Auth-Token: $TOKEN" -``` - -This exists for compatibility and troubleshooting. For new integrations, prefer the summary endpoint plus specific `series` requests. - -## Common Use Cases - -### 1. Remote CLI Access - -`/api/command` is the most flexible endpoint. It lets you run the same CLI commands accepted by the repeater. - -Examples: +Примеры: - `get wifi.status` - `get mqtt.status` @@ -216,13 +203,13 @@ Examples: - `get repeat` - `get radio` -This is useful for: +Это полезно для: -- remote diagnostics from a laptop or phone -- simple scripts that collect operational state -- admin tools that want to reuse existing CLI behavior instead of adding new firmware endpoints +- удалённой диагностики с ноутбука или телефона +- простых скриптов, собирающих операционное состояние +- инструментов администрирования, желающих переиспользовать поведение CLI вместо добавления новых конечных точек в прошивке -Example: +Пример: ```bash curl -sk https:///api/command \ @@ -230,31 +217,31 @@ curl -sk https:///api/command \ --data 'get mqtt.status' ``` -### 2. Build A Lightweight Status Dashboard +### 2. Создание легковесной панели статуса -Use `/api/stats` for summary information and one `series` call at a time for trend lines. +Используйте `/api/stats` для сводной информации и по одному вызову `series` для линий трендов. -Recommended pattern: +Рекомендуемый шаблон: -1. fetch `/api/stats` -2. render current service state and summary fields -3. fetch one trend series only when needed -4. refresh at `60` second intervals, or slower if the repeater is busy +1. запросите `/api/stats` +2. отобразите текущее состояние служб и сводные поля +3. запрашивайте один ряд тренда только по необходимости +4. обновляйте с интервалом `60` секунд или реже, если ретранслятор загружен -This is the same basic pattern used by the built-in `/stats` page. +Это тот же базовый шаблон, что используется встроенной страницей `/stats`. -### 3. Reuse The API For Quick Health Checks +### 3. Использование API для быстрых проверок работоспособности -Because `/api/command` returns CLI output directly, it works well for small operational checks in scripts or home-lab monitoring. +Поскольку `/api/command` возвращает вывод CLI напрямую, он хорошо подходит для небольших операционных проверок в скриптах или домашнем мониторинге. -Examples: +Примеры: -- confirm the repeater still has Wi-Fi -- check MQTT broker connection state -- verify that the web panel is enabled before attempting stats reads -- confirm current radio settings before applying changes +- убедиться, что у ретранслятора всё ещё есть Wi-Fi +- проверить состояние подключения к MQTT-брокеру +- убедиться, что веб-панель включена перед попыткой чтения статистики +- проверить текущие настройки LoRa перед применением изменений -Example: +Пример: ```bash curl -sk https:///api/command \ @@ -262,11 +249,11 @@ curl -sk https:///api/command \ --data 'get web.status' ``` -### 4. Remote Admin Actions +### 4. Удалённые административные действия -The web panel also uses `/api/command` for operator actions, not just read-only queries. +Веб-панель также использует `/api/command` для действий оператора, не только для запросов только на чтение. -Examples: +Примеры: - `advert` - `reboot` @@ -274,9 +261,9 @@ Examples: - `time ` - `time.force ` -These are powerful commands. Treat them the same way you would treat direct serial CLI access. +Это мощные команды. Обращайтесь с ними так же, как с прямым доступом через последовательный CLI. -Example: +Пример: ```bash curl -sk https:///api/command \ @@ -284,23 +271,23 @@ curl -sk https:///api/command \ --data 'advert' ``` -### 5. Remote Configuration Helpers +### 5. Помощники удалённой конфигурации -The web panel saves settings by generating CLI commands and sending them through `/api/command`. +Веб-панель сохраняет настройки, генерируя CLI-команды и отправляя их через `/api/command`. -That means your own tools can do the same for MeshCoreTel-firmware specific settings such as: +Это означает, что ваши собственные инструменты могут делать то же самое для специфичных для MeshCoreTel-firmware настроек, таких как: -- repeater identity fields -- owner info -- MQTT broker toggles -- MQTT owner metadata -- radio settings supported by the repeater CLI +- поля идентификации ретранслятора +- информация о владельце +- переключатели MQTT-брокеров +- метаданные владельца MQTT +- LoRa-настройки, поддерживаемые CLI ретранслятора -This is a practical way to automate setup while preserving existing CLI semantics. +Это практичный способ автоматизировать настройку, сохраняя существующую семантику CLI. -## Example Script +## Пример скрипта -This shell example logs in, fetches summary stats, fetches one trend series, and runs a CLI command: +Этот shell-пример выполняет вход, получает сводную статистику, один ряд тренда и выполняет CLI-команду: ```bash #!/usr/bin/env bash @@ -311,41 +298,41 @@ PASSWORD="your-admin-password" TOKEN=$(curl -sk -X POST "$BASE_URL/login" --data "$PASSWORD") -echo "Summary:" +echo "Сводка:" curl -sk "$BASE_URL/api/stats" \ -H "X-Auth-Token: $TOKEN" echo -echo "Memory trend:" +echo "Тренд памяти:" curl -sk "$BASE_URL/api/stats?series=memory" \ -H "X-Auth-Token: $TOKEN" echo -echo "MQTT status:" +echo "Статус MQTT:" curl -sk "$BASE_URL/api/command" \ -H "X-Auth-Token: $TOKEN" \ --data 'get mqtt.status' ``` -## Error Cases +## Варианты ошибок -Common responses: +Типичные ответы: -- `401 Unauthorized`: missing or expired token -- `503 Service Unavailable`: stats are disabled -- `404 No stats data`: requested stats payload could not be built -- `400 Bad request`: malformed login or command request body +- `401 Unauthorized`: отсутствует или истёк токен +- `503 Service Unavailable`: статистика отключена +- `404 No stats data`: не удалось сформировать запрошенные данные статистики +- `400 Bad request`: некорректное тело запроса при входе или выполнении команды -If stats requests fail: +Если запросы статистики не удаются: -1. confirm the web panel is enabled -2. confirm `web.stats` is enabled -3. confirm the session token is still valid -4. reduce polling frequency if the board is under memory pressure +1. убедитесь, что веб-панель включена +2. убедитесь, что `web.stats` включён +3. убедитесь, что токен сессии всё ещё действителен +4. уменьшите частоту опроса, если устройство испытывает нехватку памяти -## Practical Recommendations +## Практические рекомендации -- prefer `/api/command` when you need exact CLI parity -- prefer `/api/stats` for dashboards and trend views -- keep polling conservative, especially on repeaters with two active MQTT connections -- if you are finished with troubleshooting, consider disabling the web panel with `set web off` to maximize heap headroom on constrained boards +- отдавайте предпочтение `/api/command`, когда нужно точное соответствие CLI +- отдавайте предпочтение `/api/stats` для панелей мониторинга и просмотра трендов +- делайте опрос консервативным, особенно на ретрансляторах с двумя активными MQTT-соединениями +- если вы закончили диагностику, рассмотрите отключение веб-панели командой `set web off`, чтобы максимизировать запас памяти на устройствах с ограниченными ресурсами diff --git a/docs/boards.md b/docs/boards.md index e57c87c1..c5d372e0 100644 --- a/docs/boards.md +++ b/docs/boards.md @@ -1,166 +1,166 @@ -# Board Comparison +# Сравнение устройств -This page is meant to help you choose a board, not just list every technical detail. +Эта страница поможет вам выбрать устройство, а не просто перечислит все технические детали. -If you only want a quick answer: +Если вам нужен короткий ответ: -- for a roof-mounted or set-and-forget MQTT repeater, start with `heltec_v4`, `heltec_v4_tft`, `Station_G2`, or `T_Beam_S3_Supreme_SX1262` -- for an app-first Wi-Fi companion, headless boards are fine and often simpler -- if you want an onboard screen people will actually use, prefer TFT boards -- if you want a low-power status screen, prefer e-paper boards +- для установки MQTT-ретранслятора на крышу по принципу «установил и забыл» начните с `heltec_v4`, `heltec_v4_tft`, `Station_G2` или `T_Beam_S3_Supreme_SX1262` +- для Wi-Fi-компаньона, ориентированного на приложение, бездисплейные устройства вполне подходят и зачастую проще +- если вам нужен встроенный экран, которым действительно будут пользоваться, отдавайте предпочтение TFT-платам +- если нужен экономичный экран состояния, выбирайте устройство с электронной бумагой -The tables below are built from the repo's PlatformIO board metadata and variant build flags. +Таблицы ниже построены на основе метаданных устройств из PlatformIO в репозитории и флагов сборки их вариантов. -- `Target` is the short board name used in this comparison page. Release filenames and local build commands still use the full env names such as `heltec_v4_repeater_mqtt`. -- `MCU` shows the chip family only. Actual runtime clock can vary by env and board configuration. -- `RAM` is the MCU's built-in RAM. -- `PSRAM` is extra memory on some boards. More PSRAM usually means more headroom for UI, MQTT, and future features. -- `GPS` uses `✅` when present and is blank when absent. -- `SD` uses `✅` when the board is currently known to support the SD-backed archive path in MeshCoreTel-firmware, `🧪` when the hardware likely supports TF/microSD but the board-specific integration still needs validation, and is blank when there is no current SD/archive support note. +- `Устройство` — это короткое имя, используемое на этой странице сравнения. Имена файлов релизов и команды локальной сборки по-прежнему используют полные имена окружений, например `heltec_v4_repeater_mqtt`. +- `Микроконтроллер` показывает только семейство чипа. Фактическая рабочая частота может варьироваться в зависимости от окружения и конфигурации устройства. +- `ОЗУ` — встроенная оперативная память микроконтроллера. +- `PSRAM` — дополнительная память на некоторых устройствах. Больше PSRAM обычно означает больше запаса для интерфейса, MQTT и будущих функций. +- `GPS`: `✅` — присутствует, пусто — отсутствует. +- `SD`: `✅` — устройство в настоящее время поддерживает архивацию на SD в прошивке MeshCoreTel-firmware, `🧪` — аппаратно поддерживает TF/microSD, но интеграция для конкретной платы ещё нуждается в проверке, пусто — информация о поддержке SD/архива отсутствует. -## Start Here +## С чего начать -- Pick an `ESP32-S3` board with `16MB` flash and PSRAM if you want strong overall headroom for MQTT plus UI: `heltec_v4_tft`, `heltec_v4`, `Station_G2`, `LilyGo_TBeam_1W`. -- Pick a TFT board if this will be used as a human-facing companion or field node: `heltec_v4_tft`, `heltec_tracker_v2`, `LilyGo_TDeck`, `Heltec_T190`. -- Pick e-paper if you want a status screen with lower idle draw and less frequent refresh: `Heltec_E213`, `Heltec_E290`, `Heltec_Wireless_Paper`, `ThinkNode_M5`. -- Pick a headless board if this is mainly a fixed MQTT gateway and screen space is not useful: `RAK_3112`, `Generic_E22`, `Meshimi`, `Xiao_C6`. -- Pick a headless Wi-Fi companion if the phone app will be the primary UI anyway: `RAK_3112_companion_radio_wifi`, `Xiao_S3_WIO_companion_radio_wifi`, `Station_G2_companion_radio_wifi`. -- Pick a GPS-capable board if location-aware/mobile use matters: the T-Beam family, `heltec_tracker_v2`, `Heltec_v3`, `heltec_v4`, `Station_G2`, `ThinkNode_M5`. -- If you want the most conservative, older radio family choices, the `SX1276` boards are `LilyGo_TLora_V2_1_1_6`, `Tbeam_SX1276`, and `Heltec_v2`. +- Выбирайте устройство `ESP32-S3` с `16 Мб` флеш-памяти и PSRAM, если вам нужен солидный запас как для MQTT, так и для интерфейса: `heltec_v4_tft`, `heltec_v4`, `Station_G2`, `LilyGo_TBeam_1W`. +- Выбирайте устройство с TFT, если устройство будет использоваться как персональный компаньон или полевой узел: `heltec_v4_tft`, `heltec_tracker_v2`, `LilyGo_TDeck`, `Heltec_T190`. +- Выбирайте электронную бумагу, если нужен экран состояния с низким энергопотреблением в режиме ожидания и редким обновлением: `Heltec_E213`, `Heltec_E290`, `Heltec_Wireless_Paper`, `ThinkNode_M5`. +- Выбирайте бездисплейное устройство, если это преимущественно стационарный MQTT-шлюз и экран не нужен: `RAK_3112`, `Generic_E22`, `Meshimi`, `Xiao_C6`. +- Выбирайте бездисплейный Wi-Fi-компаньон, если основным интерфейсом всё равно будет приложение на телефоне: `RAK_3112_companion_radio_wifi`, `Xiao_S3_WIO_companion_radio_wifi`, `Station_G2_companion_radio_wifi`. +- Выбирайте устройство с GPS, если важно определение местоположения / мобильное использование: семейство T-Beam, `heltec_tracker_v2`, `Heltec_v3`, `heltec_v4`, `Station_G2`, `ThinkNode_M5`. +- Если вам нужны самые консервативные, проверенные временем радиомодули, то устройства с `SX1276`: `LilyGo_TLora_V2_1_1_6`, `Tbeam_SX1276` и `Heltec_v2`. -## Additional Signals +## Дополнительные критерии -If you are deciding between otherwise similar boards, these target-level settings often matter more than flash alone. +Если вы выбираете между в остальном похожими устройствами, эти параметры могут быть часто важнее одной лишь флеш-памяти. -- `CPU cfg` is the runtime clock MeshCore sets for that target. `default` means MeshCore does not override the board's default clock. -- `TX cfg` is MeshCore's configured `LORA_TX_POWER`, not guaranteed antenna output. Boards with a PA or RF front-end may radiate much more than the configured value suggests. -- `Power` is how the target exposes power in the repo: `ADC batt`, `PMU`, `custom 2S`, `fixed/ext`, or `none`. -- `Extras` lists notable RF or peripheral extras exposed by the target, such as `PA/FEM`, `RF switch`, `BME280`, `NeoPixel`, or `ext ant`. +- `Конфиг ЦП` — рабочая частота, устанавливаемая MeshCore для данного устройства. `default` означает, что MeshCore не переопределяет стандартную частоту процессора. +- `Конфиг TX` — значение `LORA_TX_POWER`, заданное в MeshCore, не гарантированная мощность на выходе антенны. Платы с усилителем мощности (PA) или ВЧ-трактом могут выдавать значительно больше, чем указано в настройке. +- `Питание` — как плата реализует управление питанием: `ADC batt` (батарея через АЦП), `PMU`, `custom 2S` (свой 2S), `fixed/ext` (фиксированное/внешнее) или `none`. +- `Особенности` — заметные ВЧ или периферийные дополнения, такие как `PA/FEM`, `RF switch`, `BME280`, `NeoPixel` или `ext ant` (внешняя антенна). -| Target | CPU cfg | TX cfg | Power | Extras | -| ------------------------ | ------- | ------------ | --------- | --------- | -| Ebyte_EoRa-S3 | default | 22 dBm cfg | ADC batt | | -| Generic_E22_sx1262 | default | 22 dBm cfg | ADC batt | RF switch | -| Generic_E22_sx1268 | default | 22 dBm cfg | ADC batt | RF switch | -| Heltec_E213 | default | 22 dBm cfg | ADC batt | | -| Heltec_E290 | default | 22 dBm cfg | ADC batt | | -| Heltec_T190 | default | 22 dBm cfg | ADC batt | | -| heltec_tracker_v2 | 160 MHz | 9 dBm cfg\* | ADC batt | PA/FEM | -| Heltec_v2 | default | 20 dBm cfg | ADC batt | | -| Heltec_v3 | 80 MHz | 22 dBm cfg | ADC batt | | -| heltec_v4 | 80 MHz | 10 dBm cfg\* | ADC batt | PA/FEM | -| heltec_v4_tft | 80 MHz | 10 dBm cfg\* | ADC batt | PA/FEM | -| Heltec_Wireless_Paper | default | 22 dBm cfg | ADC batt | | -| Heltec_Wireless_Tracker | 80 MHz | 22 dBm cfg | none | | -| Heltec_WSL3 | 80 MHz | 22 dBm cfg | ADC batt | | -| LilyGo_T3S3_sx1262 | default | 22 dBm cfg | ADC batt | | -| LilyGo_T3S3_sx1276 | default | 20 dBm cfg | ADC batt | RF switch | -| LilyGo_TBeam_1W | default | 22 dBm cfg\* | custom 2S | PA/FEM | -| LilyGo_TDeck | default | 22 dBm cfg | ADC batt | | -| LilyGo_Tlora_C6 | default | 22 dBm cfg | none | RF switch | -| LilyGo_TLora_V2_1_1_6 | default | 20 dBm cfg | ADC batt | | -| M5Stack_Unit_C6L | default | 22 dBm cfg | none | RF switch | -| Meshadventurer_sx1262 | default | 22 dBm cfg | ADC batt | RF switch | -| Meshadventurer_sx1268 | default | 22 dBm cfg | ADC batt | RF switch | -| Meshimi | default | 22 dBm cfg | none | ext ant | -| nibble_screen_connect | default | 22 dBm cfg | none | NeoPixel | -| RAK_3112 | 80 MHz | 22 dBm cfg | ADC batt | | -| Station_G2 | default | 7 dBm cfg\* | fixed/ext | PA/FEM | -| Station_G2_logging | default | 7 dBm cfg\* | fixed/ext | PA/FEM | -| T_Beam_S3_Supreme_SX1262 | default | 22 dBm cfg | PMU | BME280 | -| Tbeam_SX1262 | default | 22 dBm cfg | PMU | | -| Tbeam_SX1276 | default | 20 dBm cfg | PMU | | -| ThinkNode_M2 | default | 22 dBm cfg | ADC batt | | -| ThinkNode_M5 | default | 22 dBm cfg | ADC batt | | -| WHY2025_badge | default | 22 dBm cfg | none | | -| Xiao_C6 | default | 22 dBm cfg | none | RF switch | -| Xiao_S3_WIO | default | 22 dBm cfg | none | RF switch | +| Устройство | Конфиг ЦП | Конфиг TX | Питание | Особенности | +| ------------------------ | --------- | ------------- | --------- | ----------- | +| Ebyte_EoRa-S3 | default | 22 dBm cfg | ADC batt | | +| Generic_E22_sx1262 | default | 22 dBm cfg | ADC batt | RF switch | +| Generic_E22_sx1268 | default | 22 dBm cfg | ADC batt | RF switch | +| Heltec_E213 | default | 22 dBm cfg | ADC batt | | +| Heltec_E290 | default | 22 dBm cfg | ADC batt | | +| Heltec_T190 | default | 22 dBm cfg | ADC batt | | +| heltec_tracker_v2 | 160 MHz | 9 dBm cfg\* | ADC batt | PA/FEM | +| Heltec_v2 | default | 20 dBm cfg | ADC batt | | +| Heltec_v3 | 80 MHz | 22 dBm cfg | ADC batt | | +| heltec_v4 | 80 MHz | 10 dBm cfg\* | ADC batt | PA/FEM | +| heltec_v4_tft | 80 MHz | 10 dBm cfg\* | ADC batt | PA/FEM | +| Heltec_Wireless_Paper | default | 22 dBm cfg | ADC batt | | +| Heltec_Wireless_Tracker | 80 MHz | 22 dBm cfg | none | | +| Heltec_WSL3 | 80 MHz | 22 dBm cfg | ADC batt | | +| LilyGo_T3S3_sx1262 | default | 22 dBm cfg | ADC batt | | +| LilyGo_T3S3_sx1276 | default | 20 dBm cfg | ADC batt | RF switch | +| LilyGo_TBeam_1W | default | 22 dBm cfg\* | custom 2S | PA/FEM | +| LilyGo_TDeck | default | 22 dBm cfg | ADC batt | | +| LilyGo_Tlora_C6 | default | 22 dBm cfg | none | RF switch | +| LilyGo_TLora_V2_1_1_6 | default | 20 dBm cfg | ADC batt | | +| M5Stack_Unit_C6L | default | 22 dBm cfg | none | RF switch | +| Meshadventurer_sx1262 | default | 22 dBm cfg | ADC batt | RF switch | +| Meshadventurer_sx1268 | default | 22 dBm cfg | ADC batt | RF switch | +| Meshimi | default | 22 dBm cfg | none | ext ant | +| nibble_screen_connect | default | 22 dBm cfg | none | NeoPixel | +| RAK_3112 | 80 MHz | 22 dBm cfg | ADC batt | | +| Station_G2 | default | 7 dBm cfg\* | fixed/ext | PA/FEM | +| Station_G2_logging | default | 7 dBm cfg\* | fixed/ext | PA/FEM | +| T_Beam_S3_Supreme_SX1262 | default | 22 dBm cfg | PMU | BME280 | +| Tbeam_SX1262 | default | 22 dBm cfg | PMU | | +| Tbeam_SX1276 | default | 20 dBm cfg | PMU | | +| ThinkNode_M2 | default | 22 dBm cfg | ADC batt | | +| ThinkNode_M5 | default | 22 dBm cfg | ADC batt | | +| WHY2025_badge | default | 22 dBm cfg | none | | +| Xiao_C6 | default | 22 dBm cfg | none | RF switch | +| Xiao_S3_WIO | default | 22 dBm cfg | none | RF switch | -\* These targets use a PA or RF front-end, so effective output can be much higher than the configured `LORA_TX_POWER`. +\* Эти платы используют усилитель мощности (PA), поэтому эффективная выходная мощность может быть значительно выше настроенного значения `LORA_TX_POWER`. -## `repeater_mqtt` Boards +## Устройства `repeater_mqtt` -This table includes all repeater MQTT targets currently defined in `variants/eastmesh_mqtt/platformio.ini`. +В этой таблице перечислены все сборки MQTT-ретранслятора, определённые в `variants/eastmesh_mqtt/platformio.ini`. -| Target | MCU | RAM | PSRAM | Flash | LoRa | Display | GPS | SD | -| ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- | --- | -| Ebyte_EoRa-S3 | ESP32S3 | 512 KB | 2 MB | 4 MB | SX1262 | OLED (SSD1306) | | | -| Generic_E22_sx1262 | ESP32 | 520 KB | No | 4 MB | SX1262 | None | | | -| Generic_E22_sx1268 | ESP32 | 520 KB | No | 4 MB | SX1268 | None | | | -| Heltec_E213 | ESP32S3 | 512 KB | 8 MB | 16 MB | SX1262 | E-paper (2.13") | | | -| Heltec_E290 | ESP32S3 | 512 KB | 8 MB | 16 MB | SX1262 | E-paper (2.9") | | | -| Heltec_T190 | ESP32S3 | 512 KB | 8 MB | 16 MB | SX1262 | TFT (ST7789) | | | -| heltec_tracker_v2 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | TFT (ST7735) | ✅ | | -| Heltec_v2 | ESP32 | 520 KB | No | 8 MB | SX1276 | OLED (SSD1306) | | | -| Heltec_v3 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | OLED (SSD1306) | ✅ | | -| heltec_v4 | ESP32S3 | 512 KB | 2 MB | 16 MB | SX1262 | OLED (SSD1306) | ✅ | | -| heltec_v4_tft | ESP32S3 | 512 KB | 2 MB | 16 MB | SX1262 | TFT (ST7789) | ✅ | | -| Heltec_Wireless_Paper | ESP32S3 | 512 KB | No | 8 MB | SX1262 | E-paper (2.13") | | | -| Heltec_Wireless_Tracker | ESP32S3 | 512 KB | No | 8 MB | SX1262 | TFT (ST7735) | ✅ | | -| Heltec_WSL3 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | None | ✅ | | -| LilyGo_T3S3_sx1262 | ESP32S3 | 512 KB | 2 MB | 4 MB | SX1262 | OLED (SSD1306) | | 🧪 | -| LilyGo_T3S3_sx1276 | ESP32S3 | 512 KB | 2 MB | 4 MB | SX1276 | OLED (SSD1306) | | 🧪 | -| LilyGo_TBeam_1W | ESP32S3 | 512 KB | 8 MB | 16 MB | SX1262 | OLED (SH1106) | ✅ | ✅ | -| LilyGo_TDeck | ESP32S3 | 512 KB | No | 16 MB | SX1262 | TFT (ST7789) | ✅ | 🧪 | -| LilyGo_Tlora_C6 | ESP32C6 | 512 KB | No | 4 MB | SX1262 | None | | | -| M5Stack_Unit_C6L | ESP32C6 | 512 KB | No | 4 MB | SX1262 | None | ✅ | | -| Meshadventurer_sx1262 | ESP32 | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | ✅ | | -| Meshadventurer_sx1268 | ESP32 | 520 KB | No | 4 MB | SX1268 | OLED (SSD1306) | ✅ | | -| Meshimi | ESP32C6 | 512 KB | No | 4 MB | SX1262 | None | | | -| nibble_screen_connect | ESP32S3 | 512 KB | No | 4 MB | SX1262 | OLED (SSD1306) | | | -| RAK_3112 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | None | ✅ | | -| Station_G2 | ESP32S3 | 512 KB | 8 MB | 16 MB | SX1262 | OLED (SH1106) | ✅ | | -| Station_G2_logging | ESP32S3 | 512 KB | 8 MB | 16 MB | SX1262 | OLED (SH1106) | ✅ | | -| T_Beam_S3_Supreme_SX1262 | ESP32S3 | 512 KB | 8 MB | 8 MB | SX1262 | OLED (SH1106) | ✅ | ✅ | -| Tbeam_SX1262 | ESP32 | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | ✅ | | -| Tbeam_SX1276 | ESP32 | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | ✅ | | -| ThinkNode_M2 | ESP32S3 | 512 KB | No | 4 MB | SX1262 | OLED (SH1106) | | | -| ThinkNode_M5 | ESP32S3 | 512 KB | No | 4 MB | SX1262 | E-paper (GxEPD) | ✅ | | -| WHY2025_badge | ESP32C6 | 512 KB | No | 4 MB | SX1262 | None | | | -| Xiao_C6 | ESP32C6 | 512 KB | No | 4 MB | SX1262 | None | | | -| Xiao_S3_WIO | ESP32S3 | 512 KB | No | 8 MB | SX1262 | None | ✅ | | +| Устройство | Микроконтроллер | ОЗУ | PSRAM | Флеш | LoRa | Дисплей | GPS | SD | +| ------------------------ | --------------- | ------ | ----- | ------ | ------ | ---------------- | --- | --- | +| Ebyte_EoRa-S3 | ESP32S3 | 512 Кб | 2 Мб | 4 Мб | SX1262 | OLED (SSD1306) | | | +| Generic_E22_sx1262 | ESP32 | 520 Кб | Нет | 4 Мб | SX1262 | Нет | | | +| Generic_E22_sx1268 | ESP32 | 520 Кб | Нет | 4 Мб | SX1268 | Нет | | | +| Heltec_E213 | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | E-paper (2.13") | | | +| Heltec_E290 | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | E-paper (2.9") | | | +| Heltec_T190 | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | TFT (ST7789) | | | +| heltec_tracker_v2 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | TFT (ST7735) | ✅ | | +| Heltec_v2 | ESP32 | 520 Кб | Нет | 8 Мб | SX1276 | OLED (SSD1306) | | | +| Heltec_v3 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | OLED (SSD1306) | ✅ | | +| heltec_v4 | ESP32S3 | 512 Кб | 2 Мб | 16 Мб | SX1262 | OLED (SSD1306) | ✅ | | +| heltec_v4_tft | ESP32S3 | 512 Кб | 2 Мб | 16 Мб | SX1262 | TFT (ST7789) | ✅ | | +| Heltec_Wireless_Paper | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | E-paper (2.13") | | | +| Heltec_Wireless_Tracker | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | TFT (ST7735) | ✅ | | +| Heltec_WSL3 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | Нет | ✅ | | +| LilyGo_T3S3_sx1262 | ESP32S3 | 512 Кб | 2 Мб | 4 Мб | SX1262 | OLED (SSD1306) | | 🧪 | +| LilyGo_T3S3_sx1276 | ESP32S3 | 512 Кб | 2 Мб | 4 Мб | SX1276 | OLED (SSD1306) | | 🧪 | +| LilyGo_TBeam_1W | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | OLED (SH1106) | ✅ | ✅ | +| LilyGo_TDeck | ESP32S3 | 512 Кб | Нет | 16 Мб | SX1262 | TFT (ST7789) | ✅ | 🧪 | +| LilyGo_Tlora_C6 | ESP32C6 | 512 Кб | Нет | 4 Мб | SX1262 | Нет | | | +| M5Stack_Unit_C6L | ESP32C6 | 512 Кб | Нет | 4 Мб | SX1262 | Нет | ✅ | | +| Meshadventurer_sx1262 | ESP32 | 520 Кб | Нет | 4 Мб | SX1262 | OLED (SSD1306) | ✅ | | +| Meshadventurer_sx1268 | ESP32 | 520 Кб | Нет | 4 Мб | SX1268 | OLED (SSD1306) | ✅ | | +| Meshimi | ESP32C6 | 512 Кб | Нет | 4 Мб | SX1262 | Нет | | | +| nibble_screen_connect | ESP32S3 | 512 Кб | Нет | 4 Мб | SX1262 | OLED (SSD1306) | | | +| RAK_3112 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | Нет | ✅ | | +| Station_G2 | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | OLED (SH1106) | ✅ | | +| Station_G2_logging | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | OLED (SH1106) | ✅ | | +| T_Beam_S3_Supreme_SX1262 | ESP32S3 | 512 Кб | 8 Мб | 8 Мб | SX1262 | OLED (SH1106) | ✅ | ✅ | +| Tbeam_SX1262 | ESP32 | 520 Кб | Нет | 4 Мб | SX1262 | OLED (SSD1306) | ✅ | | +| Tbeam_SX1276 | ESP32 | 520 Кб | Нет | 4 Мб | SX1276 | OLED (SSD1306) | ✅ | | +| ThinkNode_M2 | ESP32S3 | 512 Кб | Нет | 4 Мб | SX1262 | OLED (SH1106) | | | +| ThinkNode_M5 | ESP32S3 | 512 Кб | Нет | 4 Мб | SX1262 | E-paper (GxEPD) | ✅ | | +| WHY2025_badge | ESP32C6 | 512 Кб | Нет | 4 Мб | SX1262 | Нет | | | +| Xiao_C6 | ESP32C6 | 512 Кб | Нет | 4 Мб | SX1262 | Нет | | | +| Xiao_S3_WIO | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | Нет | ✅ | | -SD notes: +Примечания по SD: -- `✅` means the board is currently known to work with the SD-backed archive path in MeshCoreTel-firmware. -- `🧪` means the board hardware likely supports TF/microSD, but the MeshCoreTel-firmware board-specific integration still needs validation before it should be treated as supported. -- For the current stats archive, a `4 GB` `FAT32` microSD card is more than sufficient. Larger cards are also supported. +- `✅` — устройство в настоящее время поддерживает архивацию на SD в прошивке MeshCoreTel-firmware. +- `🧪` — аппаратно устройство, вероятно, поддерживает TF/microSD, но интеграция в прошивке MeshCoreTel-firmware ещё нуждается в проверке, прежде чем считать функцию поддерживаемой. +- Для текущего архива статистики достаточно карты microSD `4 ГБ` с `FAT32`. Карты большего объёма также поддерживаются. -## `companion_radio_wifi` Boards With A Display +## Устройства `companion_radio_wifi` с дисплеем -These are the Wi-Fi companion targets that have a display configured for local status, setup help, or occasional direct interaction. +Это варианты сборки Wi-Fi-компаньона, у которых настроен дисплей для локального статуса, помощи при настройке или периодического прямого взаимодействия. -| Target | MCU | RAM | PSRAM | Flash | LoRa | Display | GPS | -| ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- | -| Heltec_v2 | ESP32 | 520 KB | No | 8 MB | SX1276 | OLED (SSD1306) | | -| Heltec_v3 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | OLED (SSD1306) | ✅ | -| heltec_tracker_v2 | ESP32S3 | 512 KB | No | 8MB | SX1262 | TFT (ST7735) | ✅ | -| heltec_v4 | ESP32S3 | 512 KB | 2 MB | 16MB | SX1262 | OLED (SSD1306) | ✅ | -| heltec_v4_tft | ESP32S3 | 512 KB | 2 MB | 16MB | SX1262 | TFT (ST7789) | ✅ | -| LilyGo_TBeam_1W | ESP32S3 | 512 KB | 8 MB | 16MB | SX1262 | OLED (SH1106) | ✅ | -| LilyGo_TLora_V2_1_1_6 | ESP32 | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | ✅ | -| nibble_screen_connect | ESP32S3 | 512 KB | No | 4MB | SX1262 | OLED (SSD1306) | | -| Station_G2 | ESP32S3 | 512 KB | 8 MB | 16MB | SX1262 | OLED (SH1106) | ✅ | -| T_Beam_S3_Supreme_SX1262 | ESP32S3 | 512 KB | 8 MB | 8MB | SX1262 | OLED (SH1106) | ✅ | -| ThinkNode_M2 | ESP32S3 | 512 KB | No | 4MB | SX1262 | OLED (SH1106) | | -| ThinkNode_M5 | ESP32S3 | 512 KB | No | 4MB | SX1262 | E-paper (GxEPD) | ✅ | +| Устройство | Микроконтроллер | ОЗУ | PSRAM | Флеш | LoRa | Дисплей | GPS | +| ------------------------- | --------------- | ------ | ----- | ----- | ------ | ---------------- | --- | +| Heltec_v2 | ESP32 | 520 Кб | Нет | 8 Мб | SX1276 | OLED (SSD1306) | | +| Heltec_v3 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | OLED (SSD1306) | ✅ | +| heltec_tracker_v2 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | TFT (ST7735) | ✅ | +| heltec_v4 | ESP32S3 | 512 Кб | 2 Мб | 16 Мб | SX1262 | OLED (SSD1306) | ✅ | +| heltec_v4_tft | ESP32S3 | 512 Кб | 2 Мб | 16 Мб | SX1262 | TFT (ST7789) | ✅ | +| LilyGo_TBeam_1W | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | OLED (SH1106) | ✅ | +| LilyGo_TLora_V2_1_1_6 | ESP32 | 520 Кб | Нет | 4 Мб | SX1276 | OLED (SSD1306) | ✅ | +| nibble_screen_connect | ESP32S3 | 512 Кб | Нет | 4 Мб | SX1262 | OLED (SSD1306) | | +| Station_G2 | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | OLED (SH1106) | ✅ | +| T_Beam_S3_Supreme_SX1262 | ESP32S3 | 512 Кб | 8 Мб | 8 Мб | SX1262 | OLED (SH1106) | ✅ | +| ThinkNode_M2 | ESP32S3 | 512 Кб | Нет | 4 Мб | SX1262 | OLED (SH1106) | | +| ThinkNode_M5 | ESP32S3 | 512 Кб | Нет | 4 Мб | SX1262 | E-paper (GxEPD) | ✅ | -## `companion_radio_wifi` Headless Boards +## Бездисплейные устройства `companion_radio_wifi` -These are the Wi-Fi companion targets that rely on the companion app as the primary interface. For many users, this is the best everyday option. +Это варианты сборки Wi-Fi-компаньона, которые полагаются на сопутствующее приложение как на основной интерфейс. Для многих пользователей это лучший повседневный вариант. -| Target | MCU | RAM | PSRAM | Flash | LoRa | GPS | -| ----------- | ------- | ------ | ----- | ----- | ------ | --- | -| Heltec_WSL3 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | ✅ | -| RAK_3112 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | ✅ | -| Xiao_S3_WIO | ESP32S3 | 512 KB | No | 8 MB | SX1262 | ✅ | +| Устройство | Микроконтроллер | ОЗУ | PSRAM | Флеш | LoRa | GPS | +| ----------- | --------------- | ------ | ----- | ---- | ------ | --- | +| Heltec_WSL3 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | ✅ | +| RAK_3112 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | ✅ | +| Xiao_S3_WIO | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | ✅ | -## Practical Picks +## Практические рекомендации -- Best all-round MQTT repeater with screen and overall headroom: `heltec_v4_repeater_mqtt`, `heltec_v4_tft_repeater_mqtt`, `Station_G2_repeater_mqtt`, `LilyGo_TBeam_1W_repeater_mqtt`. -- Best MQTT repeater if you want a simple headless install: `RAK_3112_repeater_mqtt`, `Generic_E22_sx1262_repeater_mqtt`, `Meshimi_repeater_mqtt`, `Xiao_C6_repeater_mqtt`. -- Best low-power display MQTT builds: `Heltec_E213_repeater_mqtt`, `Heltec_E290_repeater_mqtt`, `Heltec_Wireless_Paper_repeater_mqtt`, `ThinkNode_M5_Repeater_mqtt`. -- Best companion choices if you want the richest local UI: `heltec_v4_tft_companion_radio_wifi` and `heltec_tracker_v2_companion_radio_wifi`. -- Best companion choices if you want maximum memory headroom: `T_Beam_S3_Supreme_SX1262_companion_radio_wifi`, `Station_G2_companion_radio_wifi`, `LilyGo_TBeam_1W_companion_radio_wifi`. -- Best companion choices if you are happy with an app-first, mostly headless setup: `RAK_3112_companion_radio_wifi`, `Xiao_S3_WIO_companion_radio_wifi`, `Station_G2_companion_radio_wifi`. -- Best companion choices if you prefer OLED over TFT: `T_Beam_S3_Supreme_SX1262_companion_radio_wifi`, `heltec_v4_companion_radio_wifi`, `LilyGo_TBeam_1W_companion_radio_wifi`. +- Лучший универсальный MQTT-ретранслятор с экраном и хорошим запасом ресурсов: `heltec_v4_repeater_mqtt`, `heltec_v4_tft_repeater_mqtt`, `Station_G2_repeater_mqtt`, `LilyGo_TBeam_1W_repeater_mqtt`. +- Лучший MQTT-ретранслятор для простой бездисплейной установки: `RAK_3112_repeater_mqtt`, `Generic_E22_sx1262_repeater_mqtt`, `Meshimi_repeater_mqtt`, `Xiao_C6_repeater_mqtt`. +- Лучшие сборки MQTT с экономичным дисплеем: `Heltec_E213_repeater_mqtt`, `Heltec_E290_repeater_mqtt`, `Heltec_Wireless_Paper_repeater_mqtt`, `ThinkNode_M5_Repeater_mqtt`. +- Лучший выбор компаньона для максимально богатого локального интерфейса: `heltec_v4_tft_companion_radio_wifi` и `heltec_tracker_v2_companion_radio_wifi`. +- Лучший выбор компаньона с максимальным запасом памяти: `T_Beam_S3_Supreme_SX1262_companion_radio_wifi`, `Station_G2_companion_radio_wifi`, `LilyGo_TBeam_1W_companion_radio_wifi`. +- Лучший выбор компаньона, если вас устраивает работа в основном через приложение и бездисплейная конфигурация: `RAK_3112_companion_radio_wifi`, `Xiao_S3_WIO_companion_radio_wifi`, `Station_G2_companion_radio_wifi`. +- Лучший выбор компаньона, если вы предпочитаете OLED вместо TFT: `T_Beam_S3_Supreme_SX1262_companion_radio_wifi`, `heltec_v4_companion_radio_wifi`, `LilyGo_TBeam_1W_companion_radio_wifi`. diff --git a/docs/custom-cli.md b/docs/custom-cli.md index f44d2c93..78a5f4b7 100644 --- a/docs/custom-cli.md +++ b/docs/custom-cli.md @@ -1,42 +1,42 @@ -# Custom CLI Commands +# Пользовательские команды CLI -This page covers the MeshCoreTel-specific CLI commands added in this repository. +На этой странице описаны толко специфичные для MeshCoreTel-firmware команды CLI, добавленные в этой прошивке. -It does not try to repeat the full upstream MeshCore CLI surface. +Она не пытается повторить весь интерфейс CLI оригинального MeshCore. Документацией по остальным командам смотрите на официальном сайте MeshCore: -## Repeater MQTT Commands + - -These commands are available on `*_repeater_mqtt` firmware targets. +## Команды Repeater MQTT -### MQTT Status And Routing +### Статус MQTT и маршрутизация -- `get mqtt.status`: shows WiFi, NTP, IATA, endpoint status, status publishing state, and TX state. -- `get mqtt.statuscfg`: shows whether periodic status messages are enabled as a simple `on` or `off` value. Most users can just use `get mqtt.status`. -- `get mqtt.client_version`: shows the MQTT `client_version` string published by the repeater. -- `get mqtt.iata`: shows the IATA/location code used in MQTT topics. -- `set mqtt.iata `: sets the IATA/location code, for example `MOW`. -- `set mqtt.iata UNSET`: marks MQTT IATA as not configured yet. While it is `UNSET`, enabled MQTT brokers stay disconnected until a real code is saved. +- `get mqtt.status`: показывает состояние Wi-Fi, NTP, код IATA, статус конечных точек, статус публикации состояния и статус отправки. +- `get mqtt.statuscfg`: показывает, включена ли периодическая отправка сообщений о состоянии, в виде простого значения `on` или `off`. Большинству пользователей достаточно `get mqtt.status`. +- `get mqtt.client_version`: показывает строку `client_version` MQTT, публикуемую ретранслятором. +- `get mqtt.iata`: показывает код IATA/локации, используемый в топиках MQTT. +- `set mqtt.iata `: устанавливает код IATA/локации, например `MOW`. +- `set mqtt.iata UNSET`: помечает код IATA как ещё не настроенный. Пока он `UNSET`, включённые MQTT брокеры не подключаются, пока не будет сохранён реальный код. -### MQTT Identity +### Идентификация в MQTT -- `get mqtt.owner`: shows the configured owner public key. -- `set mqtt.owner <64-hex-char-public-key>`: sets the owner public key used in JWT metadata. -- `mqtt.owner <64-hex-char-public-key>`: shorthand for setting the owner public key. -- `get mqtt.email`: shows the configured owner email. -- `set mqtt.email `: sets the owner email used in JWT metadata. -- `mqtt.email `: shorthand for setting the owner email. +- `get mqtt.owner`: показывает сохранённый публичный ключ владельца. +- `set mqtt.owner <64-символьный-шестнадцатеричный-публичный-ключ>`: задаёт публичный ключ владельца, используемый в метаданных JWT. +- `mqtt.owner <64-символьный-шестнадцатеричный-публичный-ключ>`: краткая форма для установки публичного ключа владельца. +- `get mqtt.email`: показывает сохранённый email владельца. +- `set mqtt.email `: задаёт email владельца, используемый в метаданных JWT. +- `mqtt.email `: краткая форма для установки email владельца. -### MQTT Message Controls +### Управление сообщениями MQTT -- `get mqtt.packets`: shows whether packet messages are published. -- `set mqtt.packets on|off`: enables or disables packet publishing. -- `get mqtt.raw`: shows whether raw packet payloads are published. -- `set mqtt.raw on|off`: enables or disables the separate `raw` MQTT topic. -- `set mqtt.status on|off`: enables or disables periodic MQTT status publishing. -- `get mqtt.tx`: shows whether TX packets are included. -- `set mqtt.tx on|off`: enables or disables TX packet publishing. +- `get mqtt.packets`: показывает, публикуются ли сообщения о пакетах. +- `set mqtt.packets on|off`: включает или отключает публикацию пакетов. +- `get mqtt.raw`: показывает, публикуются ли сырые данные пакетов. +- `set mqtt.raw on|off`: включает или отключает отдельный топик `raw` в MQTT. +- `set mqtt.status on|off`: включает или отключает периодическую публикацию статуса MQTT. +- `get mqtt.tx`: показывает, включены ли передаваемые (TX) пакеты. +- `set mqtt.tx on|off`: включает или отключает публикацию переданных пакетов. -### MQTT Endpoints +### Конечные точки MQTT - `get mqtt.meshcoretel` - `set mqtt.meshcoretel on|off` @@ -45,109 +45,81 @@ These commands are available on `*_repeater_mqtt` firmware targets. - `get mqtt.letsmesh-us` - `set mqtt.letsmesh-us on|off` -Notes: +Примечания: -- new repeater MQTT installs default `mqtt.iata` to `UNSET` -- `letsmesh-eu` and `letsmesh-us` remain off by default unless already configured in saved prefs -- if `mqtt.iata` is `UNSET`, `meshcoretel`, `letsmesh-eu`, and `letsmesh-us` will not connect even if they are toggled on +- новые установки MQTT ретранслятора по умолчанию имеют `mqtt.iata = UNSET` +- `letsmesh-eu` и `letsmesh-us` по умолчанию выключены, если они уже не были настроены в сохранённых настройках +- если `mqtt.iata` имеет значение `UNSET`, `meshcoretel`, `letsmesh-eu` и `letsmesh-us` не будут подключаться, даже если они включены -Legacy dotted aliases are also accepted: +Также принимаются устаревшие псевдонимы с точкой: - `mqtt.letsmesh.eu` - `mqtt.letsmesh.us` -### WiFi Settings For MQTT Repeaters +### Настройки Wi-Fi для MQTT ретрансляторов -- `get wifi.status`: shows SSID, connection state, raw WiFi status code, and IP when connected. -- `get wifi.ssid`: shows the configured WiFi SSID. -- `set wifi.ssid `: sets the WiFi SSID. -- `set wifi.pwd `: sets the WiFi password. -- `get wifi.powersaving`: shows the current WiFi power save mode. -- `set wifi.powersaving none|min|max`: sets WiFi power saving mode. +- `get wifi.status`: показывает SSID, состояние подключения, код статуса Wi-Fi и IP-адрес при подключении. +- `get wifi.ssid`: показывает настроенный SSID Wi-Fi. +- `set wifi.ssid `: задаёт SSID Wi-Fi. +- `set wifi.pwd `: задаёт пароль Wi-Fi. +- `get wifi.powersaving`: показывает текущий режим энергосбережения Wi-Fi. +- `set wifi.powersaving none|min|max`: задаёт режим энергосбережения Wi-Fi. -### Web Panel Controls +### Управление веб-панелью - `get web` -- `get web.status`: shows whether the local HTTPS panel is available. -- `get web.stats.status`: shows whether the dedicated stats page and history subsystem are enabled, whether recent history is active, whether PSRAM-backed history is available, and whether the SD-backed archive is mounted. When enabled, the history capture now covers supported environment telemetry too, not just the original battery/radio series. GPS-enabled boards also record per-minute satellites samples for the `/stats` history view. +- `get web.status`: показывает, доступна ли локальная HTTPS панель. +- `get web.stats.status`: показывает, включены ли страница `/stats` и подсистема истории, активна ли недавняя история, доступна ли история с поддержкой PSRAM и смонтирован ли архив на SD-карте. Если он включён, сбор истории теперь охватывает и поддерживаемую телеметрию окружения, а не только исходные ряды батареи/радио. Устройства с GPS также записывают ежесекундные данные о спутниках для представления истории в `/stats`. - `set web on|off` -- `set.web on|off`: enables or disables the local HTTPS panel. +- `set.web on|off`: включает или отключает локальную HTTPS панель. - `set web.stats on|off` -- `set.web.stats on|off`: enables or disables the dedicated `/stats` page and historical stats collection. +- `set.web.stats on|off`: включает или отключает страницу `/stats` и сбор исторической статистики. -### Runtime Diagnostics +### Диагностика времени выполнения -- `memory`: shows current heap and PSRAM usage. -- `stats-core`: shows battery, uptime, sticky error count, and outbound queue depth. -- `stats-radio`: shows radio noise floor, last RSSI, last SNR, and TX/RX airtime. -- `stats-packets`: shows packet receive/send totals, flood/direct breakdown, and receive errors. +- `memory`: показывает использование heap и PSRAM. +- `stats-core`: показывает батарею, время работы, число зафиксированных ошибок и глубину очереди исходящих сообщений. +- `stats-radio`: показывает уровень собственных шумов радио, последний RSSI, последний SNR и эфирное время TX/RX. +- `stats-packets`: показывает общее количество принятых/отправленных пакетов, разбивку на лавинные/прямые сообщения и ошибки приёма. -> If `noise_floor` reports `0`, check `get agc.reset.interval`; if it is not `0`, try `set agc.reset.interval 0` and test again. +> Если `noise_floor` сообщает `0`, проверьте `get agc.reset.interval`; если он не равен `0`, попробуйте выполнить `set agc.reset.interval 0` и проверьте снова. -### Board Battery Reporting +### Отчёт о батарее устройства -- On repeater MQTT builds, background battery sampling used for MQTT/status history is rate-limited to about once per minute. Explicit status and telemetry requests still refresh the reading immediately. +- В сборках repeater MQTT фоновый сбор данных о батарее, используемый для истории MQTT/статуса, ограничен примерно одним замером в минуту. Явные запросы статуса и телеметрии по-прежнему обновляют показания немедленно. -### T-Beam 1W Fan Control +### Управление вентилятором T-Beam 1W -These commands are only available on `LilyGo_TBeam_1W_*` repeater builds. +Эти команды доступны только в сборках `LilyGo_TBeam_1W_*` ретранслятора. -- `get fan`: shows the current fan mode, current fan state, and the last NTC-based board temperature when available. -- `set fan auto`: returns the fan to automatic control and persists that mode across reboot. -- `set fan on`: forces the fan on and persists that mode across reboot. -- `set fan off`: forces the fan off and persists that mode across reboot. -- `set fan timeout `: changes the automatic post-TX hold window in seconds and persists it across reboot, for example `set fan timeout 45s`. +- `get fan`: показывает текущий режим вентилятора, его состояние и последнюю температуру устройства с NTC-датчика, если доступна. +- `set fan auto`: возвращает вентилятор в автоматический режим и сохраняет этот режим после перезагрузки. +- `set fan on`: принудительно включает вентилятор и сохраняет этот режим после перезагрузки. +- `set fan off`: принудительно выключает вентилятор и сохраняет этот режим после перезагрузки. +- `set fan timeout `: изменяет время автоматической работы вентилятора после TX (в секундах) и сохраняет его после перезагрузки, например `set fan timeout 45s`. -Auto mode behavior: +Поведение автоматического режима: -- forces the fan on during TX and keeps it on for the configured timeout afterward -- otherwise turns the fan on at `48C` -- turns it back off at `42C` -- keeps the fan on if the NTC reading is unavailable +- принудительно включает вентилятор во время передачи и удерживает его включённым в течение заданного тайм-аута после TX +- в остальное время включает вентилятор при `48°C` +- выключает при `42°C` +- оставляет вентилятор включённым, если показания NTC недоступны -Notes: +Примечания: -- default repeater fan mode is `auto` -- default post-TX timeout is `30s` -- fan mode and timeout are stored in repeater prefs and survive reboot -- only `LilyGo_TBeam_1W_*` repeater builds use these persisted fan settings -- accepted range is `0s` to `600s` +- режим вентилятора по умолчанию для ретранслятора: `auto` +- тайм-аут после TX по умолчанию: `30s` +- режим и тайм-аут сохраняются в настройках ретранслятора и переживают перезагрузку +- только сборки `LilyGo_TBeam_1W_*` ретранслятора используют эти сохранённые настройки вентилятора +- допустимый диапазон: от `0s` до `600s` -## Web Panel CLI Access +## Доступ к CLI через веб-панель -When the repeater web panel is enabled and you are authenticated, the browser CLI panel can run the same CLI commands accepted by the repeater. +Когда веб-панель ретранслятора включена и вы аутентифицированы, CLI-панель в браузере может выполнять те же команды, которые принимает ретранслятор. -Notes: +Примечания: -- the panel still uses the repeater admin password for access -- commands run with the same care as if you typed them into the repeater CLI directly -- this is intended for local admin use on a trusted network -- `start ota` releases the local HTTP redirect listener on port `80` so the OTA HTTP listener can take over without stopping the rest of the repeater services, regardless of whether the command is run from the web panel, serial CLI, or a remote companion/app CLI session - -## Companion WiFi Rescue Commands - -These commands are available in the serial rescue CLI for `*_companion_radio_wifi` builds. - -To enter `CLI Rescue`: - -- open a serial monitor at `115200` baud -- reboot the device -- long-press the user button within the first 8 seconds after boot -- wait for `========= CLI Rescue =========` - -- `get wifi.status`: shows configured SSID, connection status, raw WiFi status code, and IP when connected. -- `get wifi.ssid`: shows the configured WiFi SSID. -- `get wifi.powersaving`: shows the current WiFi power saving mode. -- `set wifi.ssid `: saves a WiFi SSID and immediately retries connection. -- `set wifi.pwd `: saves a WiFi password and immediately retries connection. -- `set wifi.powersaving none|min|max`: changes the WiFi power save mode. - -Companion WiFi builds also still support the existing rescue commands such as: - -- `set pin <6-digit-pin>` -- `rebuild` -- `erase` -- `ls ...` -- `cat ...` -- `rm ...` -- `reboot` +- панель по-прежнему использует пароль администратора ретранслятора для доступа +- команды выполняются с той же осторожностью, как если бы вы вводили их непосредственно в CLI ретранслятора +- это предназначено для локального администрирования в доверенной сети +- команда `start ota` освобождает локальный HTTP-редирект на порту 80, чтобы HTTP-приёмник OTA мог занять порт, не останавливая остальные службы ретранслятора, независимо от того, выполняется ли команда из веб-панели, последовательного CLI или удалённого компаньона/приложения diff --git a/docs/index.md b/docs/index.md index 4f21fb0a..b3e6c9a1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,32 +1,32 @@ -# MeshCoreTel-firmware Docs +# Документация по прошивке MeshCoreTel -MeshCoreTel-firmware keeps the upstream MeshCore firmware intact and adds an additional layer on top for: +Прошивка MeshCoreTel сохраняет исходную прошивку MeshCore нетронутой и добавляет поверх неё дополнительный слой для: -- `repeater_mqtt` builds with native WiFi, MQTT, and the optional local web panel -- `companion_radio_wifi` builds for Wi-Fi-connected companion devices -- MeshCoreTel-firmware release automation and versioning on top of upstream MeshCore releases +- сборок `repeater_mqtt` со встроенной поддержкой Wi-Fi, MQTT и опциональной локальной веб-панелью +- сборок `companion_radio_wifi` для подключаемых по Wi-Fi сопутствующих устройств +- автоматизации выпусков и версионирования прошивки MeshCoreTel поверх релизов исходного MeshCore -If you are just trying to pick a board or download firmware, start with: +Если вам нужно просто выбрать устройство или скачать прошивку, начните с: -- [Compare Boards](./boards.md) -- [Download and Flash Releases](./releases.md) +- [Сравнение устройств](./boards.md) +- [Загрузка и прошивка релизов](./releases.md) -## End User Guides +## Руководства для пользователей -- [Compare Boards](./boards.md) -- [Download and Flash Releases](./releases.md) -- [Use the Repeater Web Panel](./web-panel.md) -- [Use the Repeater Web API](./api.md) -- [Custom CLI Commands](./custom-cli.md) +- [Сравнение устройств](./boards.md) +- [Загрузка и прошивка релизов](./releases.md) +- [Использование веб-панели ретранслятора](./web-panel.md) +- [Использование веб-API ретранслятора](./api.md) +- [Пользовательские команды CLI](./custom-cli.md) -## Developer Notes +## Заметки для разработчиков -- [Build Locally With uv](./local-builds.md) +- [Локальная сборка с помощью uv](./local-builds.md) -## Current Scope +## Текущий охват -This docs site only covers the MeshCoreTel-firmware specific pieces in this repository. +Данный сайт документации охватывает только специфичные для MeshCoreTel-firmware части этого репозитория. -For general MeshCore behavior, radio operation, and upstream firmware concepts, refer to the upstream project: +За общей информацией о поведении MeshCore, работе радио и концепциях исходной прошивки обращайтесь к исходному проекту: - [meshcore-dev/MeshCore](https://github.com/meshcore-dev/MeshCore) diff --git a/docs/local-builds.md b/docs/local-builds.md index 4951b478..94b87c74 100644 --- a/docs/local-builds.md +++ b/docs/local-builds.md @@ -1,68 +1,68 @@ -# Build Locally With uv +# Локальная сборка с помощью uv -This repo uses `uv` for Python tooling and runs PlatformIO through `uv run`. +В этом репозитории для инструментов Python используется `uv`, а PlatformIO запускается через `uv run`. -This page is for building from source. If you just want firmware to flash, start with [Download and Flash Releases](./releases.md) instead. +Эта страница предназначена для сборки из исходников. Если вам нужна готовая прошивка, начните с [Загрузка и прошивка релизов](./releases.md). -## Setup +## Настройка -From the repo root: +Из корневого каталога репозитория: ```bash uv sync ``` -## Useful Commands +## Полезные команды -List build targets: +Список вариантов сборки: ```bash bash build.sh list ``` -Plain PlatformIO build for a single target: +Обычная сборка PlatformIO для одного варианта: ```bash uv run pio run -e heltec_v4_repeater_mqtt uv run pio run -e heltec_v4_companion_radio_wifi ``` -Flash a target: +Прошивка сборки: ```bash uv run pio run -e heltec_v4_repeater_mqtt -t upload --upload-port /dev/tty.usbmodemXXXX ``` -Serial monitor: +Монитор последовательного порта: ```bash uv run pio device monitor --port /dev/tty.usbmodemXXXX --baud 115200 ``` -## Release-Style Local Builds +## Локальные сборки в стиле релизов -If you want the same version metadata used by the release workflows, export the version variables first. +Если вам нужны те же метаданные версий, что и в рабочих процессах релизов, сначала экспортируйте переменные версий. Companion WiFi: ```bash -export FIRMWARE_VERSION=v1.14.1 +export FIRMWARE_VERSION=v1.15.0 bash build.sh build-firmware heltec_v4_companion_radio_wifi ``` Repeater MQTT: ```bash -export FIRMWARE_VERSION=v1.14.1 -export EASTMESH_VERSION=v1.0.1 +export FIRMWARE_VERSION=v1.15.0 +export MESHCORETEL_VERSION=v1.0.0 bash build.sh build-firmware heltec_v4_repeater_mqtt ``` -This produces versioned artifacts in `out/`. +В результате в `out/` появятся версионированные артефакты. -## Supported `repeater_mqtt` Boards +## Поддерживаемые устройства `repeater_mqtt` -These are the full PlatformIO env names used for local source builds and release artifact naming. +Это полные имена окружений PlatformIO, используемые для локальных сборок из исходников и для имён релизных файлов. ```text Generic_E22_sx1262_repeater_mqtt @@ -98,44 +98,3 @@ WHY2025_badge_repeater_mqtt Xiao_C6_repeater_mqtt Xiao_S3_WIO_repeater_mqtt ``` - -## Supported `companion_radio_wifi` Boards - -These are the full PlatformIO env names used for local source builds and release artifact naming. - -```text -heltec_tracker_v2_companion_radio_wifi -Heltec_v2_companion_radio_wifi -Heltec_v3_companion_radio_wifi -heltec_v4_companion_radio_wifi -heltec_v4_tft_companion_radio_wifi -Heltec_WSL3_companion_radio_wifi -LilyGo_TBeam_1W_companion_radio_wifi -LilyGo_TLora_V2_1_1_6_companion_radio_wifi -nibble_screen_connect_companion_radio_wifi -RAK_3112_companion_radio_wifi -Station_G2_companion_radio_wifi -T_Beam_S3_Supreme_SX1262_companion_radio_wifi -ThinkNode_M2_companion_radio_wifi -ThinkNode_M5_companion_radio_wifi -Xiao_S3_WIO_companion_radio_wifi -``` - -## Companion WiFi CLI - -Current companion WiFi builds support persisted WiFi rescue commands: - -- open a serial monitor at `115200` baud -- reboot the device -- long-press the user button within the first 8 seconds after boot to enter `CLI Rescue` -- wait for `========= CLI Rescue =========` -- then run the WiFi rescue commands below from the serial monitor - -```text -get wifi.status -get wifi.ssid -get wifi.powersaving -set wifi.ssid -set wifi.pwd -set wifi.powersaving none|min|max -``` diff --git a/docs/releases.md b/docs/releases.md index 26405290..b696b3e2 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -1,128 +1,91 @@ -# Download And Flash Releases +# Загрузка и прошивка релизов -MeshCoreTel-firmware release assets are published on: +Релизные файлы прошивки MeshCoreTel-firmware публикуются здесь: - -There are currently two release tracks in this repo: +## Выбор нужного файла -- `companion-wifi` -- `repeater-mqtt` +Скачайте файл, соответствующий вашему устройству и типу прошивки. -## Pick The Right Asset +Примеры: -Download the asset that matches your board and firmware type. +- `heltec_v4_repeater_mqtt-v1.15.0-vbart-meshcoretel-v1.0.0-79550a7f.bin` +- `heltec_v4_repeater_mqtt-v1.15.0-vbart-meshcoretel-v1.0.0-79550a7f-merged.bin` -Examples: +## Какой файл прошивать -- `heltec_v4_companion_radio_wifi-v1.14.1-abcdef.bin` -- `heltec_v4_repeater_mqtt-v1.14.1-vbart-meshcoretel-v1.0.1-abcdef.bin` -- `heltec_v4_repeater_mqtt-v1.14.1-vbart-meshcoretel-v1.0.1-abcdef-merged.bin` +Используйте обычный `.bin`-файл при обновлении существующего устройства того же типа и той же раскладкой разделов. -The important part is the board/env prefix: +Используйте `-merged.bin`-файл, когда нужна чистая установка после полной очистки флеш-памяти. Это полный образ ESP32, предназначенный для прошивки с адреса `0x0`. -- `*_companion_radio_wifi` -- `*_repeater_mqtt` +Практическое правило: -## Which File To Flash +- `.bin` = инкрементальное обновление +- `-merged.bin` = очистка и чистая прошивка -Use the standard `.bin` file when you are updating an existing device with the same target and partition layout. +## Порядок прошивки -Use the `-merged.bin` file when you want a clean install after erasing flash. This is the full ESP32 image and is intended to be flashed from address `0x0`. +1. Откройте страницу релиза и скачайте файл для вашего устройства. +2. Убедитесь, что название в имени файла соответствует вашему устройству. +3. Выберите один из вариантов: обновить существующую прошивку обычным `.bin`-файлом, либо сначала полностью очистить устройство и прошить `-merged.bin`. +4. Перезагрузите устройство и завершите настройку после прошивки (Wi-Fi, MQTT, радио и т.п.). -Practical rule: +## Рекомендуемый прошивальщик -- `.bin` = incremental update -- `-merged.bin` = erase and clean flash - -## Flashing Flow - -1. Open the release page and download the file for your board. -2. Confirm the board name in the filename matches your hardware. -3. Choose one of the following: update existing firmware with the normal `.bin`, or erase the device first and flash the `-merged.bin`. -4. Reboot the device and complete any post-flash setup such as WiFi, MQTT, or radio settings. - -## Recommended Flasher - -The recommended flasher is: +Рекомендуемый инструмент для прошивки: - -It includes native support for: +Он уже содержит каталог прошивок под заголовком _Прошивки наблюдателя от VBart_. -- `companion_radio_wifi` firmware -- `repeater_mqtt` firmware -- custom firmware files +Рекомендации по использованию: -Recommended usage: +- применяйте обычный `.bin` при обновлении существующего устройства +- используйте `-merged.bin` после очистки, когда нужна чистая прошивка с нуля -- use the normal `.bin` there when you are updating an existing device -- use the `-merged.bin` there after an erase when you want a clean flash +## Начальная настройка для новичков -## Beginner Setup +Если вы прошиваете MeshCoreTel-firmware впервые, самый простой путь: -If this is your first time flashing MeshCoreTel-firmware, the easiest path is: +1. Откройте . +2. Выберите подходящую прошивку для вашего устройства из раздела _Прошивки наблюдателя от VBart_. +3. Отметьте пункт _Очистить устройство_, если устанавливаете новую прошивку впервые +4. Используйте встроенные инструменты настройки, такие как _Настройка репитера_ и _Консоль_ на сайте прошивальщика для завершения первоначальной конфигурации. -1. Open . -2. Select the firmware type you want: `Companion WiFi`, `Repeater MQTT`, or `Custom`. -3. Flash the correct firmware for your board. -4. Use the built-in setup tools in the flasher site to finish first-time configuration. +### Настройка репитера -The flasher site includes two especially useful actions after flashing: +_Настройка репитера_ — это пошаговый мастер первой настройки ретранслятора. -- `Repeater Setup` -- `Console` +Это традиционный способ сконфигурировать ретранслятор после прошивки, включая: -### Repeater Setup +- имя устройства +- широту и долготу +- пароли администратора и гостя +- настройки радио, в том числе выбор пресета +- интервал объявлений (advert interval) +- интервал массовых объявлений (flood advert interval) +- максимальное количество массовых сообщений (flood max) +- некоторые расширенные настройки ретранслятора -`Repeater Setup` is the guided first-time repeater flow. +[Локальная веб-панель](./web-panel.md) прошивки MeshCoreTel-firmware также содержит те же самые основные настройки, поэтому пользователи могут выполнить начальную настройку там, а к мастеру возвращаться лишь для диагностики или эпизодических изменений. На MQTT-ретрансляторах, где важен максимальный запас ресурсов, всё же лучше отключить веб-панель после завершения настройки, особенно если у вас на устройстве мало памяти. -It is the traditional way to configure a repeater after flashing, including: +### Консоль -- device name -- latitude and longitude -- admin and guest passwords -- radio settings, including preset selection -- advert interval -- flood advert interval -- flood max -- some advanced repeater settings +_Консоль_ — это прямой интерфейс командной строки (CLI). -As of `v1.2.1`, the local repeater web panel also includes the same common repeater settings, so users can complete initial setup there and return for occasional troubleshooting or configuration changes. On MQTT repeaters that need maximum headroom, it is still best to disable the panel again when you are finished. +Он особенно полезен, а часто и необходим, для первичной настройки Wi-Fi: -### Console +- `set wifi.ssid <ваш-ssid>` +- `set wifi.pwd <ваш-пароль>` -`Console` is the raw CLI interface. +Прошивки MeshCoreTel-firmware включает MQTT-дополнения. В зависимости от устройства, они также могут включать [локальную веб-панель](./web-panel.md). -It is especially useful, and often required, for the initial Wi-Fi setup on both firmware tracks: +Типичные первые шаги после прошивки: -- `set wifi.ssid ` -- `set wifi.pwd ` - -This applies to: - -- `companion_radio_wifi` -- `repeater_mqtt` - -## Repeater MQTT Notes - -`repeater_mqtt` builds include the MeshCoreTel-firmware MQTT additions. Depending on the board, they may also include the local web panel. - -Typical first steps after flashing: - -- set `wifi.ssid` -- set `wifi.pwd` -- set `mqtt.iata` -- confirm `get mqtt.status` -- optionally set `mqtt.owner` and `mqtt.email` -- optionally enable `letsmesh-eu` or `letsmesh-us` - -## Companion WiFi Notes - -`companion_radio_wifi` builds are for companion devices that expose the app interface over WiFi instead of BLE or USB. - -Typical first steps after flashing: - -- set WiFi credentials -- confirm `get wifi.status` -- connect your client app to the companion over WiFi +- задать `wifi.ssid` +- задать `wifi.pwd` +- задать `mqtt.iata` +- проверить `get mqtt.status` +- опционально задать `mqtt.owner` и `mqtt.email` +- опционально включить `letsmesh-eu` или `letsmesh-us` diff --git a/docs/web-panel.md b/docs/web-panel.md index 9fadc660..1ec33623 100644 --- a/docs/web-panel.md +++ b/docs/web-panel.md @@ -1,384 +1,382 @@ -# Repeater Web Panel +# Веб-панель ретранслятора -This page is for end users running an MeshCoreTel-firmware `*_repeater_mqtt` build with the local web panel enabled. +Эта страница предназначена для конечных пользователей, использующих сборку MeshCoreTel-firmware с включённой локальной веб-панелью. -It covers how to reach the panel, what each section does, and what to expect when using it on desktop or mobile. +Здесь описано, как открыть панель, за что отвечает каждый раздел и чего ожидать при использовании на компьютере или мобильном устройстве. -## What It Is +## Что это такое -The repeater web panel is a local HTTPS configuration page served directly by the repeater over WiFi. +Веб-панель ретранслятора — это локальная страница конфигурации по HTTPS, обслуживаемая непосредственно самим ретранслятором через Wi-Fi. -It gives you: +Она предоставляет: -- a password-gated local admin page at `/app` -- a dedicated stats and trends page at `/stats` -- quick `get` commands for common repeater and MQTT checks -- a terminal-style CLI panel for full repeater CLI access -- editable repeater settings -- editable MQTT settings -- a historical stats view with trends, neighbours, and recent events +- защищённую паролем страницу локального администратора по адресу `/app` +- отдельную страницу статистики и трендов по адресу `/stats` +- быстрые команды `get` для типовых проверок ретранслятора и MQTT +- панель CLI в стиле терминала для полного доступа к командной строке ретранслятора +- редактируемые настройки ретранслятора +- редактируемые настройки MQTT +- исторический обзор статистики с трендами, соседями и недавними событиями -Operational guidance: +Рекомендации по использованию: -- use it for initial setup, occasional configuration changes, and troubleshooting -- when you are finished, prefer `set web off` on MQTT repeaters that need maximum headroom -- this leaves more internal heap available for MQTT/WSS activity, especially on dual-broker setups +- используйте панель для первоначальной настройки, эпизодических изменений конфигурации и устранения неполадок +- после завершения работы отдавайте предпочтение команде `set web off` на MQTT-ретрансляторах, где важен максимальный запас ресурсов +- это оставляет больше памяти, доступной для работы MQTT/WSS, особенно в конфигурациях с двумя WSS-брокерами -## Screenshot Overview +## Обзор скриншотов -The screenshots below show the current split between the lighter `/app` admin page and the dedicated `/stats` status page. +Скриншоты ниже показывают текущее разделение на облегчённую страницу администратора `/app` и отдельную страницу статуса `/stats`. -### `/app` screenshot +### Скриншот `/app` -![Repeater web panel `/app` overview](./_assets/repeater_web_panel_app_light.webp#only-light) -![Repeater web panel `/app` overview](./_assets/repeater_web_panel_app_dark.webp#only-dark) +![Обзор веб-панели ретранслятора `/app`](./_assets/repeater_web_panel_app_light.webp#only-light) +![Обзор веб-панели ретранслятора `/app`](./_assets/repeater_web_panel_app_dark.webp#only-dark) -### `/stats` screenshot +### Скриншот `/stats` -![Repeater web panel `/stats` overview](./_assets/repeater_web_panel_stats_light.webp#only-light) -![Repeater web panel `/stats` overview](./_assets/repeater_web_panel_stats_dark.webp#only-dark) +![Обзор веб-панели ретранслятора `/stats`](./_assets/repeater_web_panel_stats_light.webp#only-light) +![Обзор веб-панели ретранслятора `/stats`](./_assets/repeater_web_panel_stats_dark.webp#only-dark) -## Requirements +## Требования -You need: +Вам потребуется: -- a supported `*_repeater_mqtt` firmware build -- WiFi configured on the repeater -- the repeater connected to your local network -- the repeater admin password +- поддерживаемая сборка прошивки MeshCoreTel +- настроенный Wi-Fi на ретрансляторе +- ретранслятор, подключённый к вашей локальной сети +- пароль администратора ретранслятора -Some constrained targets disable the web panel to stay within flash limits. If your board does not support it, `get web.status` will not show it as available. +На некоторых платформах с ограниченными ресурсами веб-панель отключена, чтобы уложиться в лимиты флеш-памяти. Если ваше устройство её не поддерживает, `get web.status` не покажет её как доступную. -## How To Open It +## Как открыть панель -1. Connect the repeater to WiFi. -2. Find its IP address. -3. Open `https:///` in a browser. -4. Accept the browser warning for the self-signed certificate. -5. Enter the repeater admin password. +1. Подключите ретранслятор к Wi-Fi. +2. Узнайте его IP-адрес. +3. Откройте `https:///` в браузере. +4. Примите предупреждение браузера о самоподписанном сертификате. +5. Введите пароль администратора ретранслятора. -Useful CLI commands: +Полезные команды CLI: -- `get wifi.status`: shows WiFi state and IP address when connected. -- `get web.status`: shows whether the web panel is up and which URL to use. +- `get wifi.status`: показывает состояние Wi-Fi и IP-адрес при подключении. +- `get web.status`: показывает, запущена ли веб-панель и по какому URL она доступна. -Example: +Пример: - `https://10.33.135.208/` -## Login And Security +## Вход и безопасность -- the panel uses the same admin password as the repeater CLI -- the connection is HTTPS, but the certificate is self-signed -- browsers will warn the first time you connect -- the panel exposes the repeater CLI after login +- панель использует тот же пароль администратора, что и CLI ретранслятора +- соединение по HTTPS, но сертификат самоподписанный +- браузеры будут выдавать предупреждение при первом подключении +- после входа панель открывает доступ к CLI ретранслятора -This is intended for local admin use on a trusted network, not for open internet exposure. +Панель предназначена для локального администрирования в доверенной сети и не рассчитана на использование в открытом интернете. -## Performance Notes +## Замечания по производительности -The panel is designed to load more gently than earlier versions. On login it now fetches sections in sequence instead of requesting one large bootstrap payload up front. +Панель использует HTTPS и расходует память. На устройствах, работающих с одним или двумя WSS MQTT-брокерами, открытие панели уменьшает запас ресурсов для MQTT, пока сессия активна. -Even with that change, the panel still uses HTTPS and internal heap. On boards running one or two WSS MQTT brokers, opening the panel reduces MQTT headroom while the session is active. +Рекомендуемая практика для развёртывания ретрансляторов: -Recommended practice for repeater deployments: +- включайте панель для первоначальной настройки +- используйте её снова для периодических проверок или устранения неполадок +- отключайте командой `set web off` после завершения, чтобы у MQTT был максимальный запас ресурсов -- enable the panel for initial configuration -- use it again for occasional checks or troubleshooting -- disable it with `set web off` when finished so MQTT has the most headroom available +## Навигация и действия -## Navigation And Actions +Веб-панель состоит из двух основных страниц: -The web console now has two main pages: +- `/app`: облегчённый вид для управления и конфигурации +- `/stats`: текущий статус, тренды, соседи и недавние события -- `/app`: lighter-weight control and configuration view -- `/stats`: current status, trends, neighbours, and recent events - -Both pages share the same top navigation and utility actions. +Обе страницы имеют одинаковую верхнюю навигацию и служебные действия. ### `/app` -The `/app` page is the main admin and configuration surface. +Страница `/app` — это основной интерфейс администратора и конфигурации. -It includes: +Она включает: -- navigation to `App` and `Stats` -- `Advert` -- `Start OTA` -- `Reboot` -- theme toggle -- `Logout` +- навигацию: `App` и `Stats` +- `Advert` (Объявление) +- `Start OTA` (Запустить OTA) +- `Reboot` (Перезагрузка) +- переключатель темы +- `Logout` (Выход) -Use `Start OTA` only when you intend to update firmware. +Используйте `Start OTA` только тогда, когда намереваетесь обновить прошивку дистанционно. ### `/stats` -The `/stats` page is the home for current status and historical visibility. +Страница `/stats` — это раздел для текущего статуса и хронологии данных. -It includes: +Она включает: -- navigation to `App` and `Stats` -- `Refresh` -- `Reboot` -- theme toggle -- `Logout` +- навигацию: `App` и `Stats` +- `Refresh` (Обновить) +- `Reboot` (Перезагрузка) +- переключатель темы +- `Logout` (Выход) -## Quick "get" Commands +## Быстрые команды "get" -This section runs common read-only commands for: +Этот раздел выполняет стандартные команды только для чтения для: - Wi-Fi - MQTT -These are useful for quick checks without typing into the CLI field. The MQTT quick actions include `mqtt.status`, `mqtt.client_version`, `mqtt.iata`, `mqtt.owner`, and `mqtt.email`. +Они удобны для быстрых проверок без ввода команд в поле CLI. Быстрые действия MQTT включают `mqtt.status`, `mqtt.client_version`, `mqtt.iata`, `mqtt.owner` и `mqtt.email`. -## Run CLI Command +## Выполнение команд CLI -This is a small terminal for the repeater CLI. +Это мини-терминал для CLI ретранслятора. -- press `Enter` to run the command -- command history is shown in the terminal box below -- save buttons elsewhere in the page also show the generated command and the reply here -- `clock` is available here if you want to check the repeater's current board time -- authenticated sessions can run the same CLI commands accepted by the repeater +- нажмите `Enter`, чтобы выполнить команду +- история команд отображается в окне терминала ниже +- кнопки сохранения в других местах страницы также показывают сгенерированную команду и ответ здесь +- здесь доступна команда `clock`, если нужно узнать текущее время платы ретранслятора +- авторизованные сессии могут выполнять те же команды CLI, которые принимает ретранслятор -This makes it easy to see exactly what the panel sent to the repeater. +Это позволяет легко увидеть, что именно панель отправила ретранслятору. -## Repeater Settings +## Настройки ретранслятора -This section includes: +Этот раздел включает: -- Device Name -- Clock UTC -- Latitude -- Longitude -- Guest Password -- Private Key -- Advert Interval -- Flood Interval -- Flood Max -- Owner Info +- Имя устройства (Device Name) +- UTC часы (Clock UTC) +- Широта (Latitude) +- Долгота (Longitude) +- Гостевой пароль (Guest Password) +- Приватный ключ (Private Key) +- Интервал объявлений (Advert Interval) +- Интервал массовой рассылки (Flood Interval) +- Макс. массовых сообщений (Flood Max) +- Информация о владельце (Owner Info) -Notes: +Примечания: -- `Latitude` and `Longitude` default to `0.0` as placeholders -- changing the private key requires a reboot to apply -- the refresh buttons load the current value from the repeater -- the save buttons send the matching CLI command immediately +- `Latitude` и `Longitude` по умолчанию равны `0.0` как заполнители +- изменение приватного ключа требует перезагрузки для применения +- кнопки обновления загружают текущее значение с ретранслятора +- кнопки сохранения немедленно отправляют соответствующую команду CLI -## Info +## Информация -This section shows: +В этом разделе отображается: -- `Version`: firmware version with build date -- `Client Version`: MQTT client version string -- `Public Key` +- `Version`: версия прошивки с датой сборки +- `Client Version`: строка версии MQTT-клиента +- `Public Key` (Публичный ключ) -## Ghost Node Mode +## Режим скрытого узла (Ghost Node Mode) -Ghost Node Mode is a convenience control on `/app` for a repeater that should stay on Wi-Fi and MQTT, but should not actively behave like another nearby repeater. +Режим скрытого узла — это удобный элемент управления на `/app` для ретранслятора, который должен оставаться в Wi-Fi и MQTT, но не должен активно вести себя как ещё один близлежащий ретранслятор. -Typical use case: +Типичный сценарий использования: -- an indoor or colocated MQTT observer where another repeater nearby is already doing the RF relay work -- a node you want feeding MQTT, web status, and troubleshooting data without also adding extra repeat traffic or adverts +- комнатный или расположенный рядом MQTT-наблюдатель, когда другой ретранслятор поблизости уже выполняет радио-ретрансляцию +- узел, который должен передавать данные MQTT, веб-статус и диагностику, не добавляя лишнего ретрансляционного трафика или объявлений -When enabled, Ghost Node Mode: +При включении Режим скрытого узла: -- turns `repeat` off -- sets `advert.interval` to `0` -- sets `flood.advert.interval` to `0` -- leaves the local web panel and MQTT features running +- выключает `repeat` +- устанавливает `advert.interval` в `0` +- устанавливает `flood.advert.interval` в `0` +- оставляет локальную веб-панель и функции MQTT работающими -When disabled, the panel restores the prior repeat and advert settings if it still knows them from the current browser session. If not, it falls back to: +При отключении панель восстанавливает предыдущие настройки повтора и объявлений, если они ещё известны из текущей сессии браузера. Если нет, она возвращается к: - `repeat on` - `advert.interval 60` - `flood.advert.interval 12` -This mode is useful when you want the device to observe and publish, not to act as an additional RF repeater. It does not create a separate firmware role; it is just a grouped web-panel shortcut for those existing settings. +Этот режим полезен, когда нужно, чтобы устройство наблюдало и публиковало данные, а не действовало как дополнительный передающий ретранслятор. Он не создаёт отдельную роль прошивки; это просто сгруппированное сокращение в веб-панели для существующих настроек. -## MQTT Settings +## Настройки MQTT -This section includes: +Этот раздел включает: -- `mqtt.iata`: selected from a curated east-coast/south-east list. -- `mqtt.owner`: owner public key. -- `mqtt.email`: owner contact email. -- MQTT server toggles: `meshcoretel`, `letsmesh-eu`, and `letsmesh-us`. +- `mqtt.iata`: выбирается из подготовленного списка. +- `mqtt.owner`: публичный ключ владельца. +- `mqtt.email`: контактный email владельца. +- Переключатели MQTT-брокеров: `meshcoretel`, `letsmesh-eu` и `letsmesh-us`. -`UNSET - To be configured` is the default for new repeater MQTT installs until a real saved value exists. +`UNSET - To be configured` — значение по умолчанию для новых установок MQTT ретранслятора, пока не появится реальное сохранённое значение. -Notes: +Примечания: -- when `mqtt.iata` is `UNSET`, the panel shows a banner at the top reminding you to set it under MQTT Settings -- while `mqtt.iata` is `UNSET`, enabled MQTT brokers do not attempt to connect -- the current MQTT server states are loaded when the page opens -- you can toggle each MQTT server on or off from this panel -- if all three servers are enabled at once, the panel shows a warning recommending two at most +- если `mqtt.iata` имеет значение `UNSET`, панель показывает баннер вверху с напоминанием задать его в разделе MQTT Settings +- пока `mqtt.iata` имеет значение `UNSET`, включённые MQTT-брокеры не пытаются подключиться +- состояние MQTT-брокер загружается при открытии страницы +- вы можете включать или выключать каждый MQTT-брокер из этой панели +- включить можно не более двух MQTT-брокеров одновременно -## `/stats` Overview +## Обзор `/stats` -The stats page is loaded separately from `/app` and is intended to keep the main admin page lighter. +Страница статистики загружается отдельно от `/app` и предназначена для того, чтобы основная страница администратора оставалась легче. -The `/stats` page currently shows: +Страница `/stats` в настоящее время показывает: -- `Services`: MQTT, web, archive, neighbour count, and, when mounted, card and archive capacity -- optional full-width `Environment` summary card on boards that report GPS or environmental telemetry -- `Trends`: battery, heap free, packet activity, signal, noise floor, and, when GPS is enabled, satellites -- `Neighbours`: current neighbour table with ID, SNR, heard age, and advert age -- `Events`: current boot/session events +- `Services`: MQTT, web, архив, количество соседей и, если SD-карта смонтирована, ёмкость карты и архива +- опциональную полноширинную сводную карточку `Environment` на платах, передающих GPS или данные телеметрии окружающей среды +- `Trends`: заряд батареи, свободная куча, пакетная активность, сигнал, уровень шума и, если включён GPS, спутники +- `Neighbours`: текущая таблица соседей с ID, SNR, возрастом последнего приёма и возрастом объявления +- `Events`: события текущей загрузки/сессии -For boards that expose extra telemetry, the optional `Environment` summary card can show current values such as GPS fix state, latitude, longitude, GPS altitude, voltage, sensor temperature, humidity, barometer, pressure-derived altitude, and MCU temperature. +Для устройств, передающих дополнительную телеметрию, опциональная сводная карточка `Environment` может показывать текущие значения, такие как состояние GPS-фиксации, широту, долготу, высоту по GPS, напряжение, температуру с датчика, влажность, давление, высоту по давлению и температуру MCU. -Metrics with no current value are hidden rather than showing placeholder rows, so the cards vary by board and by current sensor state. +Метрики, не имеющие текущего значения, скрываются, а не показывают строки-заполнители, поэтому карточки меняются в зависимости от устройства и текущего состояния датчиков. -The `Core` battery meter prefers a board-reported battery percentage when the target exposes one. On those boards, the meter detail shows the live battery millivolt reading only. Otherwise it scales the displayed percentage from the board's configured battery voltage range and shows that range in the detail text rather than assuming a fixed single-cell `3000-4200 mV` pack. +Индикатор батареи `Core` предпочитает отображаемый устройством процент заряда, если устройство его предоставляет. На таких устройствах детализация показывает только текущее напряжение батареи в милливольтах. В противном случае отображаемый процент вычисляется из настроенного диапазона напряжения батареи устройства, и этот диапазон показывается в детализации, а не предполагается фиксированный одноэлементный диапазон `3000-4200 мВ`. -The trend graphs load sequentially rather than as one large payload: +Графики трендов загружаются последовательно, а не одним большим пакетом: -1. summary/status -2. battery -3. memory -4. packet activity -5. signal -6. satellites when GPS is enabled +1. сводка / статус +2. батарея +3. память +4. пакетная активность +5. сигнал +6. спутники, когда GPS включён -This keeps browser-side and device-side memory use lower than the previous in-page stats view. +Это позволяет снизить потребление памяти как на стороне браузера, так и на устройстве по сравнению с предыдущим внутристраничным просмотром статистики. -If `web.stats` is enabled and an SD archive is mounted, trends can restore archived summary points after reboot from the latest SD snapshot. Recent live points are still added from in-memory history. +Если `web.stats` включён и SD-архив смонтирован, тренды могут восстанавливать архивные сводные точки после перезагрузки из последнего снимка на SD. Недавние актуальные точки по-прежнему добавляются из истории в памяти. -### Stats History Capacity +### Объём истории статистики -Stats samples are collected once per minute. +Сэмплы статистики собираются раз в минуту. -Current in-memory history caps are: +Текущие лимиты истории в памяти: -| Board class | Sample cap | Event cap | Approx. sampled history | -| -------------------------------- | ---------: | --------: | ------------------------ | -| No PSRAM | `24` | `8` | Live-only recent history | -| Less than `4 MB` PSRAM | `240` | `96` | About `4` hours | -| `4 MB` to less than `8 MB` PSRAM | `480` | `192` | About `8` hours | -| `8 MB` PSRAM or more | `720` | `288` | About `12` hours | +| Класс устройства | Лимит сэмплов | Лимит событий | Период истории | +| -------------------------------- | ------------: | ------------: | -------------------------- | +| Без PSRAM | `24` | `8` | Только недавняя оперативная история | +| Менее `4 Мб` PSRAM | `240` | `96` | Примерно `4` часа | +| От `4 Мб` до менее `8 Мб` PSRAM | `480` | `192` | Примерно `8` часов | +| `8 Мб` PSRAM или больше | `720` | `288` | Примерно `12` часов | -On boards with roughly `2 MB` PSRAM or more, stats history starts capturing from boot when `web.stats` is enabled, even if `/stats` has not been opened yet. +На устройствах с объёмом PSRAM примерно от `2 Мб` и выше история статистики начинает записываться с момента загрузки, когда `web.stats` включён, даже если `/stats` ещё не открывали. -Archive-backed restore requires `web.stats` enabled plus a mounted SD card on boards that support the MeshCoreTel-firmware archive path. +Для восстановления из архива требуется включённый `web.stats` и смонтированная SD-карта на платах, которые поддерживают архивацию на MeshCoreTel-firmware. -The main purpose of the SD card is to let the repeater retain and restore stats history for `/stats`. The archive keeps fast `.latest` snapshot files for quick restore and UTC-dated daily `.log` files for longer-term history. As a secondary option, those files can also be removed and inspected on a computer for deeper manual review. +Основное назначение SD-карты — позволить ретранслятору сохранять и восстанавливать историю для `/stats`. Архив хранит файлы снимков `.latest` для быстрого восстановления и ежедневные файлы `.log` с датой по UTC для долгосрочной истории. В качестве дополнительной опции эти файлы также можно извлечь и проанализировать на компьютере для более глубокого ручного анализа. -On no-PSRAM boards, `/stats` can still show recent graphs while the stats view is active, but the history is smaller and does not provide the same archive-backed behaviour as PSRAM-capable boards. +На устройствах без PSRAM `/stats` всё ещё может показывать недавние графики, пока активен просмотр статистики, но история меньше и не поддерживает такое же поведение с резервным копированием в архив, как на платах с PSRAM. -Useful CLI commands: +Полезные команды CLI: - `set web.stats on` - `set web.stats off` - `get web.stats.status` -## Mobile Use +## Использование на мобильных устройствах -The page is responsive and should work cleanly on a phone. +Страница адаптивна и должна корректно работать на телефоне. -On mobile: +На мобильных устройствах: -- quick command buttons collapse into a two-column layout -- top navigation and action groups stay compact and touch-friendly -- input rows stay usable for touch interaction -- trend cards reorganize into single-column sections where needed +- кнопки быстрых команд сворачиваются в двухколоночный макет +- верхняя навигация и группы действий остаются компактными и удобными для касаний +- строки ввода остаются пригодными для сенсорного взаимодействия +- карточки трендов перестраиваются в одноколоночные секции, где это необходимо -## Common Tasks +## Типовые задачи -### Check WiFi And MQTT +### Проверка Wi-Fi и MQTT -1. Open the panel. -2. Press `wifi.status` in Quick `get` Commands. -3. Press `mqtt.status` in Quick `get` Commands. -4. Open `/stats` from the top navigation for the historical stats view. +1. Откройте панель. +2. Нажмите `wifi.status` в быстрых командах `get`. +3. Нажмите `mqtt.status` в быстрых командах `get`. +4. Откройте `/stats` из верхней навигации для просмотра истории статистики. -### Change Device Name +### Изменение имени устройства -1. Edit `Device Name`. -2. Press `Save`. -3. Confirm the generated command and reply in the CLI terminal box. +1. Отредактируйте `Device Name`. +2. Нажмите `Save`. +3. Проверьте сгенерированную команду и ответ в окне терминала CLI. -### Update MQTT Owner Or Email +### Обновление MQTT Owner или Email -1. Go to `MQTT Settings`. -2. Enter the new value. -3. Press `Save`. -4. Use the refresh button if you want to re-read the stored value from the repeater. +1. Перейдите в `MQTT Settings`. +2. Введите новое значение. +3. Нажмите `Save`. +4. Используйте кнопку обновления, если хотите перечитать сохранённое значение с ретранслятора. -### Start OTA +### Запуск OTA -1. Press `Start OTA`. -2. Confirm the action. -3. The local HTTP redirect listener on port `80` is released so OTA can take over that port. -4. Continue with your normal OTA workflow. +1. Нажмите `Start OTA`. +2. Подтвердите действие. +3. Локальный HTTP-редирект на порту `80` освобождается, чтобы OTA мог занять этот порт. +4. Продолжите стандартную процедуру OTA. -### Use Historical Stats +### Использование истории статистики -1. Enable stats if needed with `set web.stats on`. -2. Open `/stats` from the top navigation. -3. Review `Services` for archive and runtime state. -4. Review `Trends` for recent graph history. -5. Use `Refresh` to reload the stats page. +1. При необходимости включите статистику командой `set web.stats on`. +2. Откройте `/stats` из верхней навигации. +3. Проверьте `Services` на предмет состояния архива и среды выполнения. +4. Просмотрите `Trends` для недавней истории графиков. +5. Используйте `Refresh` для перезагрузки страницы статистики. -## Troubleshooting +## Устранение неполадок -### The browser warns about the certificate +### Браузер предупреждает о сертификате -That is expected. The panel uses a self-signed certificate generated for local use. +Это ожидаемо. Панель использует самоподписанный сертификат, сгенерированный для локального использования. -### I cannot reach the page +### Не могу открыть страницу -Check: +Проверьте: -- the repeater is on WiFi -- the IP address from `get wifi.status` -- `get web.status` reports the panel as up -- your board/firmware target supports the web panel +- подключён ли ретранслятор к Wi-Fi +- IP-адрес из `get wifi.status` +- `get web.status` сообщает, что панель запущена +- ваше устройство / сборка прошивки поддерживает веб-панель -### The panel opens but login fails +### Панель открывается, но не удаётся войти -Use the repeater admin password, not the guest password. +Используйте пароль администратора ретранслятора, а не гостевой пароль. -### MQTT becomes unstable when I log in +### MQTT становится нестабильным при входе -The web panel now loads settings section-by-section to reduce startup pressure, but HTTPS still consumes internal heap. +Веб-панель загружает настройки посекционно, чтобы снизить нагрузку при запуске, но HTTPS всё ещё потребляет внутреннюю память. -Check: +Проверьте: -- whether one or two MQTT brokers are enabled -- `memory` before and after login -- whether stability improves after `set web off` +- сколько MQTT-брокеров включено (один или два) +- `memory` до и после входа +- улучшается ли стабильность после `set web off` -For fixed installations where MQTT uptime matters more than browser access, use the panel briefly and then disable it again. +Для стационарных установок, где время безотказной работы MQTT важнее доступа через браузер, используйте панель кратковременно, а затем снова отключайте её. -### HTTP opens instead of HTTPS +### Открывается HTTP вместо HTTPS -The repeater now redirects plain `http://` requests to the local `https://` panel URL. If the browser still shows a connection problem after redirecting, open `https:///` directly and accept the self-signed certificate warning first. +Ретранслятор перенаправляет простые запросы `http://` на локальный URL панели `https://`. Если браузер всё ещё показывает проблему с подключением после перенаправления, откройте `https:///` напрямую и сначала примите предупреждение о самоподписанном сертификате. -### Stats or settings do not refresh +### Статистика или настройки не обновляются -Try: +Попробуйте: -- refreshing the browser tab -- using `Refresh` on `/stats` -- logging out and back in -- checking WiFi stability with `get wifi.status` +- обновить вкладку браузера +- использовать `Refresh` на `/stats` +- выйти и войти снова +- проверить стабильность Wi-Fi с помощью `get wifi.status` -### `/stats` is unavailable +### `/stats` недоступна -Check: +Проверьте: - `get web.status` - `get web.stats.status` -- whether `set web.stats on` has been applied +- была ли применена команда `set web.stats on` -If `web.stats` is off, `/stats` will stay disabled and the historical graph requests will not run. +Если `web.stats` выключен, `/stats` останется отключённой, и запросы истории графиков выполняться не будут. -## Related Docs +## Связанная документация -- [Custom CLI Commands](./custom-cli.md) -- [Download and Flash Releases](./releases.md) -- [Build Locally With uv](./local-builds.md) +- [Пользовательские команды CLI](./custom-cli.md) +- [Загрузка и прошивка релизов](./releases.md) +- [Локальная сборка с помощью uv](./local-builds.md)