Moved docs and workflows to avoid conflicts while merging official repo

This commit is contained in:
Valentin V. Bartenev
2026-06-06 20:18:03 +03:00
parent 86154ce8d0
commit b9bd0fc270
19 changed files with 15 additions and 14 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

-10
View File
@@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 72" role="img" aria-labelledby="title desc">
<title id="title">VBart</title>
<desc id="desc">VBart wordmark for documentation branding.</desc>
<text x="8" y="47"
fill="#FFFFFF"
font-family="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace"
font-size="30"
font-weight="700"
letter-spacing="0.8">VBart</text>
</svg>

Before

Width:  |  Height:  |  Size: 450 B

-255
View File
@@ -1,255 +0,0 @@
[data-md-color-scheme="default"] {
--web-accent: #2f8f4e;
--web-accent-hover: #3fae61;
--web-background: #f4f6f9;
--web-text: #1f2937;
--web-text-muted: #4b5563;
--web-border: rgba(0, 0, 0, 0.08);
--web-surface-1: #ffffff;
--web-surface-2: #f0f3f7;
--web-terminal: #f0f3f7;
--web-header-bg: #303030;
--web-header-fg: #e6eaf0;
--md-primary-fg-color: var(--web-header-bg);
--md-primary-fg-color--light: var(--web-header-bg);
--md-primary-fg-color--dark: #111827;
--md-primary-bg-color: var(--web-header-fg);
--md-primary-bg-color--light: rgba(230, 234, 240, 0.72);
--md-accent-fg-color: var(--web-accent);
--md-accent-fg-color--transparent: rgba(47, 143, 78, 0.12);
--md-default-bg-color: var(--web-background);
--md-default-bg-color--light: #fbfcfd;
--md-default-bg-color--lighter: #ffffff;
--md-default-bg-color--lightest: #ffffff;
--md-default-fg-color: var(--web-text);
--md-default-fg-color--light: var(--web-text-muted);
--md-default-fg-color--lighter: rgba(75, 85, 99, 0.7);
--md-default-fg-color--lightest: rgba(75, 85, 99, 0.35);
--md-code-bg-color: #e9eef4;
--md-code-fg-color: #1f2937;
--md-typeset-a-color: var(--web-accent);
}
[data-md-color-scheme="slate"] {
--web-accent: #36a167;
--web-accent-hover: #49c27d;
--web-background: #222222;
--web-text: #e6eaf0;
--web-text-muted: #9aa4b2;
--web-border: rgba(255, 255, 255, 0.08);
--web-surface-1: #303030;
--web-surface-2: #343434;
--web-terminal: #222222;
--web-header-bg: #303030;
--web-header-fg: #e6eaf0;
--md-primary-fg-color: var(--web-header-bg);
--md-primary-fg-color--light: #3a3a3a;
--md-primary-fg-color--dark: #242424;
--md-primary-bg-color: var(--web-header-fg);
--md-primary-bg-color--light: rgba(230, 234, 240, 0.72);
--md-accent-fg-color: var(--web-accent-hover);
--md-accent-fg-color--transparent: rgba(73, 194, 125, 0.14);
--md-default-bg-color: var(--web-background);
--md-default-bg-color--light: #2b2b2b;
--md-default-bg-color--lighter: #313131;
--md-default-bg-color--lightest: #343434;
--md-default-fg-color: var(--web-text);
--md-default-fg-color--light: var(--web-text-muted);
--md-default-fg-color--lighter: rgba(154, 164, 178, 0.72);
--md-default-fg-color--lightest: rgba(154, 164, 178, 0.35);
--md-code-bg-color: #242424;
--md-code-fg-color: #e6eaf0;
--md-typeset-a-color: var(--web-accent-hover);
}
body {
background: linear-gradient(180deg, var(--web-background), var(--web-surface-2));
background-attachment: fixed;
}
.md-header,
.md-tabs {
background: var(--web-header-bg);
color: var(--web-header-fg);
}
.md-header {
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.18);
}
[data-md-color-scheme="default"] .md-header {
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.18);
}
[data-md-color-scheme="default"] .md-header__topic,
[data-md-color-scheme="default"] .md-tabs__link,
[data-md-color-scheme="default"] .md-search__icon,
[data-md-color-scheme="default"] .md-header__button {
color: var(--web-header-fg);
}
[data-md-color-scheme="default"] .md-search__form {
background: rgba(255, 255, 255, 0.08);
}
[data-md-color-scheme="default"] .md-search__input::placeholder {
color: rgba(230, 234, 240, 0.72);
}
.md-header__button.md-logo img,
.md-header__button.md-logo svg {
height: 1.85rem;
width: auto;
}
.md-search__form,
.md-search__output {
border-radius: 12px;
}
.md-main {
background: transparent;
}
@media screen and (min-width: 76.25em) {
.md-grid {
max-width: 80rem;
}
}
.md-content__inner {
background: linear-gradient(180deg, var(--web-surface-2), var(--web-surface-1));
border: 1px solid var(--web-border);
border-radius: 18px;
box-shadow: 0 18px 36px rgba(0, 0, 0, 0.08);
margin: 0.4rem 0 1.2rem;
padding: 1.4rem 1.35rem;
}
[data-md-color-scheme="slate"] .md-content__inner {
box-shadow: none;
}
.md-search__output,
.md-dialog {
background: linear-gradient(180deg, var(--web-surface-2), var(--web-surface-1));
border: 1px solid var(--web-border);
border-radius: 16px;
}
.md-sidebar__scrollwrap {
padding: 0;
background: transparent;
border: none;
border-radius: 0;
box-shadow: none;
}
.md-nav__title,
.md-nav__link,
.md-typeset h1,
.md-typeset h2,
.md-typeset h3,
.md-typeset h4,
.md-typeset code,
.md-button {
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
.md-typeset h1,
.md-typeset h2,
.md-typeset h3 {
letter-spacing: 0.02em;
}
.md-nav__link--active,
.md-nav__link:focus,
.md-nav__link:hover,
.md-typeset a:hover {
color: var(--web-accent-hover);
}
.md-typeset a {
text-decoration: underline;
text-decoration-thickness: 0.08em;
text-underline-offset: 0.18em;
}
.md-typeset .md-button {
border-radius: 10px;
border: none;
background: var(--web-accent);
color: #ffffff;
font-weight: 700;
padding: 0.7em 1.1em;
}
.md-typeset .md-button:hover {
background: var(--web-accent-hover);
color: #ffffff;
}
.md-typeset code,
.md-typeset pre>code {
border-radius: 10px;
}
.highlight,
.md-typeset pre {
background: var(--web-terminal);
border: 1px solid var(--web-border);
border-radius: 14px;
}
.md-typeset table:not([class]) {
border: 1px solid var(--web-border);
border-radius: 14px;
overflow: hidden;
}
.md-typeset table:not([class]) th {
background: var(--web-surface-2);
}
.md-typeset table:not([class]) tr:hover {
background: color-mix(in srgb, var(--web-accent) 8%, transparent);
}
.md-typeset hr {
border-bottom-color: var(--web-border);
}
.md-typeset blockquote {
border-left: 0.18rem solid var(--web-accent);
color: var(--md-default-fg-color--light);
}
.md-footer {
background: transparent;
}
.md-footer-meta,
.md-footer__inner {
background: transparent;
}
/* Hide git repo version */
.md-source__fact--version {
display: none;
}
@media screen and (max-width: 76.2344em) {
.md-content__inner,
.md-sidebar__scrollwrap {
border-radius: 14px;
}
}
-340
View File
@@ -1,340 +0,0 @@
# Веб-API ретранслятора
На этой странице описывается локальный HTTPS API, предоставляемый сборками MeshCoreTel-firmware, который поддерживает веб-панель.
Он предназначен для:
- легковесной автоматизации в вашей локальной сети
- панелей мониторинга или скриптов, которым требуется текущее состояние ретранслятора
- удалённого доступа к CLI по тому же аутентифицированному пути, который используется веб-панелью
Это не облачный API и не отдельный фоновый сервис. Прошивка ретранслятора предоставляет его напрямую.
## Область применения и доступность
API доступно только при соблюдении следующих условий:
- вы используете поддерживаемую сборку прошивки
- веб-панель ретранслятора включена и работает
- вы можете связаться с ретранслятором по локальной сети
- вы аутентифицировались с паролем администратора ретранслятора
API предназначен для администрирования в доверенной локальной сети. Не открывайте его напрямую в публичный интернет.
## Базовый URL
Используйте локальный HTTPS-адрес ретранслятора:
```text
https://<repeater-ip>/
```
Пример:
```text
https://192.168.1.123/
```
## Аутентификация
API использует тот же пароль администратора, что и CLI ретранслятора, и веб-панель.
1. Отправьте пароль методом `POST` на `/login`
2. сохраните возвращённый токен сессии
3. передавайте этот токен в заголовке `X-Auth-Token` при последующих запросах
Пример:
```bash
TOKEN=$(curl -sk -X POST https://<repeater-ip>/login --data '<admin-password>')
```
Использование токена:
```bash
curl -sk https://<repeater-ip>/api/stats -H "X-Auth-Token: $TOKEN"
```
Примечания:
- ретранслятор использует самоподписанный сертификат, поэтому большинству инструментов потребуется `-k` или аналог
- если сессия истекает или блокируется, запросы возвращают `401 Unauthorized`
- повторный вход даст новый токен
## Рекомендации по производительности
API работает на самом ретрансляторе, поэтому частота опроса имеет значение.
Если ретранслятор также поддерживает два MQTT-соединения, избегайте частого опроса API. Текущая модель использования MeshCoreTel-firmware:
- опрос статистики раз в `60` секунд
- запросы по требованию для всего остального
Это рекомендуемый базовый уровень, если вы хотите избежать перегрузки устройства. Держите частоту запросов низкой, избегайте шквального опроса и отдавайте предпочтение ручному обновлению или чтению по событиям для более тяжёлых операций.
Рекомендуемая практика:
- опрашивайте `/api/stats` не чаще одного раза в минуту
- избегайте параллельного запроса нескольких конечных точек
- используйте вызовы по требованию для чтения конфигурации и действий CLI
- завершайте сессию, когда закончили, и прекращайте опрос, когда данные активно не используются
## Конечные точки
### `POST /login`
Аутентификация с паролем администратора ретранслятора.
Тело запроса:
```text
<admin-password>
```
Ответ:
- токен сессии в виде обычного текста при успехе
- `401` при неверном пароле
Пример:
```bash
curl -sk -X POST https://<repeater-ip>/login --data '<admin-password>'
```
### `POST /api/command`
Удалённое выполнение команды CLI ретранслятора.
Заголовки:
```text
X-Auth-Token: <token>
```
Тело запроса:
```text
get wifi.status
```
Ответ:
- вывод CLI в виде обычного текста
- `OK`, если команда выполнена успешно и не возвращает текста
Пример:
```bash
curl -sk https://<repeater-ip>/api/command \
-H "X-Auth-Token: $TOKEN" \
--data 'get wifi.status'
```
### `GET /api/stats`
Получить сводные данные, используемые на отдельной странице `/stats`.
Заголовки:
```text
X-Auth-Token: <token>
```
Пример:
```bash
curl -sk https://<repeater-ip>/api/stats \
-H "X-Auth-Token: $TOKEN"
```
Примечания:
- это сводное представление также запрашивается веб-панелью в первую очередь перед загрузкой серий трендов
- если `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=<name>`
Получить один ряд тренда.
Поддерживаемые ряды:
- `battery`
- `memory`
- `signal`
- `noise_floor`
- `packets`
- `error_rate`
- `core0_util`
- `voltage`
- `sensor_temp`
- `humidity`
- `pressure`
- `pressure_altitude`
- `mcu_temp`
- `gps_altitude`
- `gps_satellites`
Пример:
```bash
curl -sk "https://<repeater-ip>/api/stats?series=memory" \
-H "X-Auth-Token: $TOKEN"
```
Примечания:
- используйте `?series=battery`, а не просто `?series`
- встроенная веб-панель загружает эти ряды последовательно, а не все сразу, чтобы снизить нагрузку на память платы
- ряды окружения включаются только когда устройство передаёт эти показания; если ряд еще не накопил точек, он возвращает пустой массив `points` и `current:null`
## Типовые сценарии использования
### 1. Удалённый доступ к CLI
`/api/command` — самая гибкая конечная точка. Она позволяет выполнять те же команды CLI, которые принимает ретранслятор.
Примеры:
- `get wifi.status`
- `get mqtt.status`
- `get web.status`
- `get web.stats.status`
- `get repeat`
- `get radio`
Это полезно для:
- удалённой диагностики с ноутбука или телефона
- простых скриптов, собирающих операционное состояние
- инструментов администрирования, желающих переиспользовать поведение CLI вместо добавления новых конечных точек в прошивке
Пример:
```bash
curl -sk https://<repeater-ip>/api/command \
-H "X-Auth-Token: $TOKEN" \
--data 'get mqtt.status'
```
### 2. Создание легковесной панели статуса
Используйте `/api/stats` для сводной информации и по одному вызову `series` для линий трендов.
Рекомендуемый шаблон:
1. запросите `/api/stats`
2. отобразите текущее состояние служб и сводные поля
3. запрашивайте один ряд тренда только по необходимости
4. обновляйте с интервалом `60` секунд или реже, если ретранслятор загружен
Это тот же базовый шаблон, что используется встроенной страницей `/stats`.
### 3. Использование API для быстрых проверок работоспособности
Поскольку `/api/command` возвращает вывод CLI напрямую, он хорошо подходит для небольших операционных проверок в скриптах или домашнем мониторинге.
Примеры:
- убедиться, что у ретранслятора всё ещё есть Wi-Fi
- проверить состояние подключения к MQTT-брокеру
- убедиться, что веб-панель включена перед попыткой чтения статистики
- проверить текущие настройки LoRa перед применением изменений
Пример:
```bash
curl -sk https://<repeater-ip>/api/command \
-H "X-Auth-Token: $TOKEN" \
--data 'get web.status'
```
### 4. Удалённые административные действия
Веб-панель также использует `/api/command` для действий оператора, не только для запросов только на чтение.
Примеры:
- `advert`
- `reboot`
- `start ota`
- `time <epoch>`
- `time.force <epoch>`
Это мощные команды. Обращайтесь с ними так же, как с прямым доступом через последовательный CLI.
Пример:
```bash
curl -sk https://<repeater-ip>/api/command \
-H "X-Auth-Token: $TOKEN" \
--data 'advert'
```
### 5. Помощники удалённой конфигурации
Веб-панель сохраняет настройки, генерируя CLI-команды и отправляя их через `/api/command`.
Это означает, что ваши собственные инструменты могут делать то же самое для специфичных для MeshCoreTel-firmware настроек, таких как:
- поля идентификации ретранслятора
- информация о владельце
- переключатели MQTT-брокеров
- метаданные владельца MQTT
- LoRa-настройки, поддерживаемые CLI ретранслятора
Это практичный способ автоматизировать настройку, сохраняя существующую семантику CLI.
## Пример скрипта
Этот shell-пример выполняет вход, получает сводную статистику, один ряд тренда и выполняет CLI-команду:
```bash
#!/usr/bin/env bash
set -euo pipefail
BASE_URL="https://192.168.1.123"
PASSWORD="your-admin-password"
TOKEN=$(curl -sk -X POST "$BASE_URL/login" --data "$PASSWORD")
echo "Сводка:"
curl -sk "$BASE_URL/api/stats" \
-H "X-Auth-Token: $TOKEN"
echo
echo "Тренд памяти:"
curl -sk "$BASE_URL/api/stats?series=memory" \
-H "X-Auth-Token: $TOKEN"
echo
echo "Статус MQTT:"
curl -sk "$BASE_URL/api/command" \
-H "X-Auth-Token: $TOKEN" \
--data 'get mqtt.status'
```
## Варианты ошибок
Типичные ответы:
- `401 Unauthorized`: отсутствует или истёк токен
- `503 Service Unavailable`: статистика отключена
- `404 No stats data`: не удалось сформировать запрошенные данные статистики
- `400 Bad request`: некорректное тело запроса при входе или выполнении команды
Если запросы статистики не удаются:
1. убедитесь, что веб-панель включена
2. убедитесь, что `web.stats` включён
3. убедитесь, что токен сессии всё ещё действителен
4. уменьшите частоту опроса, если устройство испытывает нехватку памяти
## Практические рекомендации
- отдавайте предпочтение `/api/command`, когда нужно точное соответствие CLI
- отдавайте предпочтение `/api/stats` для панелей мониторинга и просмотра трендов
- делайте опрос консервативным, особенно на ретрансляторах с двумя активными MQTT-соединениями
- если вы закончили диагностику, рассмотрите отключение веб-панели командой `set web off`, чтобы максимизировать запас памяти на устройствах с ограниченными ресурсами
-167
View File
@@ -1,167 +0,0 @@
# Сравнение устройств
Эта страница поможет вам выбрать устройство, а не просто перечислит все технические детали.
Если вам нужен короткий ответ:
- для установки MQTT-ретранслятора на крышу по принципу «установил и забыл» начните с `heltec_v4`, `heltec_v4_tft`, `Station_G2` или `T_Beam_S3_Supreme_SX1262`
- для Wi-Fi-компаньона, ориентированного на приложение, бездисплейные устройства вполне подходят и зачастую проще
- если вам нужен встроенный экран, которым действительно будут пользоваться, отдавайте предпочтение TFT-платам
- если нужен экономичный экран состояния, выбирайте устройство с электронной бумагой
Таблицы ниже построены на основе метаданных устройств из PlatformIO в репозитории и флагов сборки их вариантов.
- `Устройство` — это короткое имя, используемое на этой странице сравнения. Имена файлов релизов и команды локальной сборки по-прежнему используют полные имена окружений, например `heltec_v4_repeater_mqtt`.
- `Микроконтроллер` показывает только семейство чипа. Фактическая рабочая частота может варьироваться в зависимости от окружения и конфигурации устройства.
- `ОЗУ` — встроенная оперативная память микроконтроллера.
- `PSRAM` — дополнительная память на некоторых устройствах. Больше PSRAM обычно означает больше запаса для интерфейса, MQTT и будущих функций.
- `GPS`: `✅` — присутствует, пусто — отсутствует.
- `SD`: `✅` — устройство в настоящее время поддерживает архивацию на SD в прошивке MeshCoreTel-firmware, `🧪` — аппаратно поддерживает TF/microSD, но интеграция для конкретной платы ещё нуждается в проверке, пусто — информация о поддержке SD/архива отсутствует.
## С чего начать
- Выбирайте устройство `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`.
## Дополнительные критерии
Если вы выбираете между в остальном похожими устройствами, эти параметры могут быть часто важнее одной лишь флеш-памяти.
- `Конфиг ЦП` — рабочая частота, устанавливаемая 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` (внешняя антенна).
| Устройство | Конфиг ЦП | Конфиг 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 |
\* Эти платы используют усилитель мощности (PA), поэтому эффективная выходная мощность может быть значительно выше настроенного значения `LORA_TX_POWER`.
## Устройства `repeater_mqtt`
В этой таблице перечислены все сборки MQTT-ретранслятора, определённые в `variants/eastmesh_mqtt/platformio.ini`.
| Устройство | Микроконтроллер | ОЗУ | PSRAM | Флеш | LoRa | Дисплей | GPS | SD |
| ------------------------ | --------------- | ------ | ----- | ------ | ------ | ---------------- | --- | --- |
| DIY_ESP32S3_N16R8_E22_Back2back | ESP32S3 | 512 Кб | 8 Мб | 16 Мб | SX1262 | Нет | | |
| 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:
- `✅` — устройство в настоящее время поддерживает архивацию на SD в прошивке MeshCoreTel-firmware.
- `🧪` — аппаратно устройство, вероятно, поддерживает TF/microSD, но интеграция в прошивке MeshCoreTel-firmware ещё нуждается в проверке, прежде чем считать функцию поддерживаемой.
- Для текущего архива статистики достаточно карты microSD `4 ГБ` с `FAT32`. Карты большего объёма также поддерживаются.
## Устройства `companion_radio_wifi` с дисплеем
Это варианты сборки Wi-Fi-компаньона, у которых настроен дисплей для локального статуса, помощи при настройке или периодического прямого взаимодействия.
| Устройство | Микроконтроллер | ОЗУ | 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`
Это варианты сборки Wi-Fi-компаньона, которые полагаются на сопутствующее приложение как на основной интерфейс. Для многих пользователей это лучший повседневный вариант.
| Устройство | Микроконтроллер | ОЗУ | PSRAM | Флеш | LoRa | GPS |
| ----------- | --------------- | ------ | ----- | ---- | ------ | --- |
| Heltec_WSL3 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | ✅ |
| RAK_3112 | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | ✅ |
| Xiao_S3_WIO | ESP32S3 | 512 Кб | Нет | 8 Мб | SX1262 | ✅ |
## Практические рекомендации
- Лучший универсальный 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`.
-1264
View File
File diff suppressed because it is too large Load Diff
-125
View File
@@ -1,125 +0,0 @@
# Пользовательские команды CLI
На этой странице описаны толко специфичные для MeshCoreTel-firmware команды CLI, добавленные в этой прошивке.
Она не пытается повторить весь интерфейс CLI оригинального MeshCore. Документацией по остальным командам смотрите на официальном сайте MeshCore:
- <https://docs.meshcore.io/cli_commands/>
## Команды Repeater MQTT
### Статус MQTT и маршрутизация
- `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 <code>`: устанавливает код IATA/локации, например `MOW`.
- `set mqtt.iata UNSET`: помечает код IATA как ещё не настроенный. Пока он `UNSET`, включённые MQTT брокеры не подключаются, пока не будет сохранён реальный код.
### Идентификация в MQTT
- `get mqtt.owner`: показывает сохранённый публичный ключ владельца.
- `set mqtt.owner <64-символьный-шестнадцатеричный-публичный-ключ>`: задаёт публичный ключ владельца, используемый в метаданных JWT.
- `mqtt.owner <64-символьный-шестнадцатеричный-публичный-ключ>`: краткая форма для установки публичного ключа владельца.
- `get mqtt.email`: показывает сохранённый email владельца.
- `set mqtt.email <email>`: задаёт email владельца, используемый в метаданных JWT.
- `mqtt.email <email>`: краткая форма для установки email владельца.
### Управление сообщениями MQTT
- `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
- `get mqtt.meshcoretel`
- `set mqtt.meshcoretel on|off`
- `get mqtt.letsmesh-eu`
- `set mqtt.letsmesh-eu on|off`
- `get mqtt.letsmesh-us`
- `set mqtt.letsmesh-us on|off`
Примечания:
- новые установки MQTT ретранслятора по умолчанию имеют `mqtt.iata = UNSET`
- `letsmesh-eu` и `letsmesh-us` по умолчанию выключены, если они уже не были настроены в сохранённых настройках
- если `mqtt.iata` имеет значение `UNSET`, `meshcoretel`, `letsmesh-eu` и `letsmesh-us` не будут подключаться, даже если они включены
Также принимаются устаревшие псевдонимы с точкой:
- `mqtt.letsmesh.eu`
- `mqtt.letsmesh.us`
### Настройки Wi-Fi для MQTT ретрансляторов
- `get wifi.status`: показывает SSID, состояние подключения, код статуса Wi-Fi и IP-адрес при подключении.
- `get wifi.ssid`: показывает настроенный SSID Wi-Fi.
- `set wifi.ssid <ssid>`: задаёт SSID Wi-Fi.
- `set wifi.pwd <password>`: задаёт пароль Wi-Fi.
- `get wifi.powersaving`: показывает текущий режим энергосбережения Wi-Fi.
- `set wifi.powersaving none|min|max`: задаёт режим энергосбережения Wi-Fi.
### Управление веб-панелью
- `get web`
- `get web.status`: показывает, доступна ли локальная HTTPS панель.
- `get web.stats.status`: показывает, включены ли страница `/stats` и подсистема истории, активна ли недавняя история, доступна ли история с поддержкой PSRAM и смонтирован ли архив на SD-карте. Если он включён, сбор истории теперь охватывает и поддерживаемую телеметрию окружения, а не только исходные ряды батареи/радио. Устройства с GPS также записывают ежесекундные данные о спутниках для представления истории в `/stats`.
- `set web on|off`
- `set.web on|off`: включает или отключает локальную HTTPS панель.
- `set web.stats on|off`
- `set.web.stats on|off`: включает или отключает страницу `/stats` и сбор исторической статистики.
### Диагностика времени выполнения
- `memory`: показывает использование heap и PSRAM.
- `stats-core`: показывает батарею, время работы, число зафиксированных ошибок и глубину очереди исходящих сообщений.
- `stats-radio`: показывает уровень собственных шумов радио, последний RSSI, последний SNR и эфирное время TX/RX.
- `stats-packets`: показывает общее количество принятых/отправленных пакетов, разбивку на лавинные/прямые сообщения и ошибки приёма.
> Если `noise_floor` сообщает `0`, проверьте `get agc.reset.interval`; если он не равен `0`, попробуйте выполнить `set agc.reset.interval 0` и проверьте снова.
### Отчёт о батарее устройства
- В сборках repeater MQTT фоновый сбор данных о батарее, используемый для истории MQTT/статуса, ограничен примерно одним замером в минуту. Явные запросы статуса и телеметрии по-прежнему обновляют показания немедленно.
### Управление вентилятором T-Beam 1W
Эти команды доступны только в сборках `LilyGo_TBeam_1W_*` ретранслятора.
- `get fan`: показывает текущий режим вентилятора, его состояние и последнюю температуру устройства с NTC-датчика, если доступна.
- `set fan auto`: возвращает вентилятор в автоматический режим и сохраняет этот режим после перезагрузки.
- `set fan on`: принудительно включает вентилятор и сохраняет этот режим после перезагрузки.
- `set fan off`: принудительно выключает вентилятор и сохраняет этот режим после перезагрузки.
- `set fan timeout <Ns>`: изменяет время автоматической работы вентилятора после TX (в секундах) и сохраняет его после перезагрузки, например `set fan timeout 45s`.
Поведение автоматического режима:
- принудительно включает вентилятор во время передачи и удерживает его включённым в течение заданного тайм-аута после TX
- в остальное время включает вентилятор при `48°C`
- выключает при `42°C`
- оставляет вентилятор включённым, если показания NTC недоступны
Примечания:
- режим вентилятора по умолчанию для ретранслятора: `auto`
- тайм-аут после TX по умолчанию: `30s`
- режим и тайм-аут сохраняются в настройках ретранслятора и переживают перезагрузку
- только сборки `LilyGo_TBeam_1W_*` ретранслятора используют эти сохранённые настройки вентилятора
- допустимый диапазон: от `0s` до `600s`
## Доступ к CLI через веб-панель
Когда веб-панель ретранслятора включена и вы аутентифицированы, CLI-панель в браузере может выполнять те же команды, которые принимает ретранслятор.
Примечания:
- панель по-прежнему использует пароль администратора ретранслятора для доступа
- команды выполняются с той же осторожностью, как если бы вы вводили их непосредственно в CLI ретранслятора
- это предназначено для локального администрирования в доверенной сети
- команда `start ota` освобождает локальный HTTP-редирект на порту 80, чтобы HTTP-приёмник OTA мог занять порт, не останавливая остальные службы ретранслятора, независимо от того, выполняется ли команда из веб-панели, последовательного CLI или удалённого компаньона/приложения
-35
View File
@@ -1,35 +0,0 @@
# Документация по прошивке MeshCoreTel
Прошивка MeshCoreTel сохраняет исходную прошивку MeshCore нетронутой и добавляет поверх неё дополнительный слой для:
- сборок `repeater_mqtt` со встроенной поддержкой Wi-Fi, MQTT и опциональной локальной веб-панелью
- автоматизации выпусков и версионирования прошивки MeshCoreTel поверх релизов исходного MeshCore
Если вам нужно просто выбрать устройство или скачать прошивку, начните с:
- [Сравнение устройств](./boards.md)
- [Загрузка и прошивка релизов](./releases.md)
## Руководства для пользователей
- [Сравнение устройств](./boards.md)
- [Загрузка и прошивка релизов](./releases.md)
- [Пользовательские команды CLI](./custom-cli.md)
- [Использование веб-панели ретранслятора](./web-panel.md)
- [Использование веб-API ретранслятора](./api.md)
## Заметки для разработчиков
- [Локальная сборка с помощью uv](./local-builds.md)
## Текущий охват
Данный сайт документации охватывает только специфичные для MeshCoreTel-firmware части этого репозитория.
За общей информацией о поведении MeshCore, работе LoRa и концепциях исходной прошивки обращайтесь к исходному проекту:
- [meshcore-dev/MeshCore](https://github.com/meshcore-dev/MeshCore)
За настройками для вашего региона, а также просмотра информации о MeshCore-сети, обращайтесь на сайт MeshCoreTel:
- <https://meshcoretel.ru/>
-104
View File
@@ -1,104 +0,0 @@
# Локальная сборка с помощью uv
В этом репозитории для инструментов Python используется `uv`, а PlatformIO запускается через `uv run`.
Эта страница предназначена для сборки из исходников. Если вам нужна готовая прошивка, начните с [Загрузка и прошивка релизов](./releases.md).
## Настройка
Из корневого каталога репозитория:
```bash
uv sync
```
## Полезные команды
Список вариантов сборки:
```bash
bash build.sh list
```
Обычная сборка PlatformIO для одного варианта:
```bash
uv run pio run -e heltec_v4_repeater_mqtt
uv run pio run -e heltec_v4_companion_radio_wifi
```
Прошивка сборки:
```bash
uv run pio run -e heltec_v4_repeater_mqtt -t upload --upload-port /dev/tty.usbmodemXXXX
```
Монитор последовательного порта:
```bash
uv run pio device monitor --port /dev/tty.usbmodemXXXX --baud 115200
```
## Локальные сборки в стиле релизов
Если вам нужны те же метаданные версий, что и в рабочих процессах релизов, сначала экспортируйте переменные версий.
Companion WiFi:
```bash
export FIRMWARE_VERSION=v1.15.0
bash build.sh build-firmware heltec_v4_companion_radio_wifi
```
Repeater MQTT:
```bash
export FIRMWARE_VERSION=v1.15.0
export MESHCORETEL_VERSION=v1.0.0
bash build.sh build-firmware heltec_v4_repeater_mqtt
```
В результате в `out/` появятся версионированные артефакты.
## Поддерживаемые устройства `repeater_mqtt`
Это полные имена окружений PlatformIO, используемые для локальных сборок из исходников и для имён релизных файлов.
```text
DIY_ESP32S3_N16R8_E22_Back2back_repeater_mqtt
Ebyte_EoRa-S3_Repeater_mqtt
Generic_E22_sx1262_repeater_mqtt
Generic_E22_sx1268_repeater_mqtt
Heltec_E213_repeater_mqtt
Heltec_E290_repeater_mqtt
Heltec_T190_repeater_mqtt
heltec_tracker_v2_repeater_mqtt
Heltec_v2_repeater_mqtt
Heltec_v3_repeater_mqtt
heltec_v4_repeater_mqtt
heltec_v4_tft_repeater_mqtt
Heltec_Wireless_Paper_repeater_mqtt
Heltec_Wireless_Tracker_repeater_mqtt
Heltec_WSL3_repeater_mqtt
LilyGo_T3S3_sx1262_repeater_mqtt
LilyGo_T3S3_sx1276_repeater_mqtt
LilyGo_TBeam_1W_repeater_mqtt
LilyGo_TDeck_repeater_mqtt
LilyGo_Tlora_C6_repeater_mqtt
M5Stack_Unit_C6L_repeater_mqtt
Meshadventurer_sx1262_repeater_mqtt
Meshadventurer_sx1268_repeater_mqtt
Meshimi_repeater_mqtt
nibble_screen_connect_repeater_mqtt
RAK_3112_repeater_mqtt
Station_G2_logging_repeater_mqtt
Station_G2_repeater_mqtt
T_Beam_S3_Supreme_SX1262_repeater_mqtt
Tbeam_SX1262_repeater_mqtt
Tbeam_SX1276_repeater_mqtt
ThinkNode_M2_Repeater_mqtt
ThinkNode_M5_Repeater_mqtt
WHY2025_badge_repeater_mqtt
Xiao_C6_repeater_mqtt
Xiao_S3_WIO_repeater_mqtt
```
-91
View File
@@ -1,91 +0,0 @@
# Загрузка и прошивка релизов
Релизные файлы прошивки MeshCoreTel-firmware публикуются здесь:
- <https://github.com/VBart/MeshCoreTel-firmware/releases>
## Выбор нужного файла
Скачайте файл, соответствующий вашему устройству и типу прошивки.
Примеры:
- `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`
## Какой файл прошивать
Используйте обычный `.bin`-файл при обновлении существующего устройства того же типа и той же раскладкой разделов.
Используйте `-merged.bin`-файл, когда нужна чистая установка после полной очистки флеш-памяти. Это полный образ ESP32, предназначенный для прошивки с адреса `0x0`.
Практическое правило:
- `.bin` = инкрементальное обновление
- `-merged.bin` = очистка и чистая прошивка
## Порядок прошивки
1. Откройте страницу релиза и скачайте файл для вашего устройства.
2. Убедитесь, что название в имени файла соответствует вашему устройству.
3. Выберите один из вариантов: обновить существующую прошивку обычным `.bin`-файлом, либо сначала полностью очистить устройство и прошить `-merged.bin`.
4. Перезагрузите устройство и завершите настройку после прошивки (Wi-Fi, MQTT, радио и т.п.).
## Рекомендуемый прошивальщик
Рекомендуемый инструмент для прошивки:
- <https://meshcoretel.ru/ru/flasher>
Он уже содержит каталог прошивок под заголовком _Прошивки наблюдателя от VBart_.
Рекомендации по использованию:
- применяйте обычный `.bin` при обновлении существующего устройства
- используйте `-merged.bin` после очистки, когда нужна чистая прошивка с нуля
## Начальная настройка для новичков
Если вы прошиваете MeshCoreTel-firmware впервые, самый простой путь:
1. Откройте <https://meshcoretel.ru/ru/flasher>.
2. Выберите подходящую прошивку для вашего устройства из раздела _Прошивки наблюдателя от VBart_.
3. Отметьте пункт _Очистить устройство_, если устанавливаете новую прошивку впервые
4. Используйте встроенные инструменты настройки, такие как _Настройка репитера_ и _Консоль_ на сайте прошивальщика для завершения первоначальной конфигурации.
### Настройка репитера
_Настройка репитера_ — это пошаговый мастер первой настройки ретранслятора.
Это традиционный способ сконфигурировать ретранслятор после прошивки, включая:
- имя устройства
- широту и долготу
- пароли администратора и гостя
- настройки радио, в том числе выбор пресета
- интервал объявлений (advert interval)
- интервал массовых объявлений (flood advert interval)
- максимальное количество массовых сообщений (flood max)
- некоторые расширенные настройки ретранслятора
[Локальная веб-панель](./web-panel.md) прошивки MeshCoreTel-firmware также содержит те же самые основные настройки, поэтому пользователи могут выполнить начальную настройку там, а к мастеру возвращаться лишь для диагностики или эпизодических изменений. На MQTT-ретрансляторах, где важен максимальный запас ресурсов, всё же лучше отключить веб-панель после завершения настройки, особенно если у вас на устройстве мало памяти.
### Консоль
_Консоль_ — это прямой интерфейс командной строки (CLI).
Он особенно полезен, а часто и необходим, для первичной настройки Wi-Fi:
- `set wifi.ssid <ваш-ssid>`
- `set wifi.pwd <ваш-пароль>`
Прошивки MeshCoreTel-firmware включает MQTT-дополнения. В зависимости от устройства, они также могут включать [локальную веб-панель](./web-panel.md).
Типичные первые шаги после прошивки:
- задать `wifi.ssid`
- задать `wifi.pwd`
- задать `mqtt.iata`
- проверить `get mqtt.status`
- опционально задать `mqtt.owner` и `mqtt.email`
- опционально включить `letsmesh-eu` или `letsmesh-us`
-394
View File
@@ -1,394 +0,0 @@
# Веб-панель ретранслятора
Эта страница предназначена для конечных пользователей, использующих сборку MeshCoreTel-firmware с включённой локальной веб-панелью.
Здесь описано, как открыть панель, за что отвечает каждый раздел и чего ожидать при использовании на компьютере или мобильном устройстве.
## Что это такое
Веб-панель ретранслятора — это локальная страница конфигурации по HTTPS, обслуживаемая непосредственно самим ретранслятором через Wi-Fi.
Она предоставляет:
- защищённую паролем страницу локального администратора по адресу `/app`
- отдельную страницу статистики и трендов по адресу `/stats`
- быстрые команды `get` для типовых проверок ретранслятора и MQTT
- панель CLI в стиле терминала для полного доступа к командной строке ретранслятора
- редактируемые настройки ретранслятора
- редактируемые настройки MQTT
- исторический обзор статистики с трендами, соседями и недавними событиями
Рекомендации по использованию:
- используйте панель для первоначальной настройки, эпизодических изменений конфигурации и устранения неполадок
- после завершения работы отдавайте предпочтение команде `set web off` на MQTT-ретрансляторах, где важен максимальный запас ресурсов
- это оставляет больше памяти, доступной для работы MQTT/WSS, особенно в конфигурациях с двумя WSS-брокерами
## Обзор скриншотов
Скриншоты ниже показывают текущее разделение на облегчённую страницу администратора `/app` и отдельную страницу статуса `/stats`.
### Скриншот `/app`
![Обзор веб-панели ретранслятора `/app`](./_assets/repeater_web_panel_app_light.webp#only-light)
![Обзор веб-панели ретранслятора `/app`](./_assets/repeater_web_panel_app_dark.webp#only-dark)
### Скриншот `/stats`
![Обзор веб-панели ретранслятора `/stats`](./_assets/repeater_web_panel_stats_light.webp#only-light)
![Обзор веб-панели ретранслятора `/stats`](./_assets/repeater_web_panel_stats_dark.webp#only-dark)
## Требования
Вам потребуется:
- поддерживаемая сборка прошивки MeshCoreTel
- настроенный Wi-Fi на ретрансляторе
- ретранслятор, подключённый к вашей локальной сети
- пароль администратора ретранслятора
На некоторых платформах с ограниченными ресурсами веб-панель отключена, чтобы уложиться в лимиты флеш-памяти. Если ваше устройство её не поддерживает, `get web.status` не покажет её как доступную.
## Как открыть панель
1. Подключите ретранслятор к Wi-Fi.
2. Узнайте его IP-адрес.
3. Откройте `https://<IP-репитера>/` в браузере.
4. Примите предупреждение браузера о самоподписанном сертификате.
5. Введите пароль администратора ретранслятора.
Полезные команды CLI:
- `get wifi.status`: показывает состояние Wi-Fi и IP-адрес при подключении.
- `get web.status`: показывает, запущена ли веб-панель и по какому URL она доступна.
Пример:
- `https://10.33.135.208/`
## Вход и безопасность
- панель использует тот же пароль администратора, что и CLI ретранслятора
- соединение по HTTPS, но сертификат самоподписанный
- браузеры будут выдавать предупреждение при первом подключении
- после входа панель открывает доступ к CLI ретранслятора
Панель предназначена для локального администрирования в доверенной сети и не рассчитана на использование в открытом интернете.
## Замечания по производительности
Панель использует HTTPS и расходует память. На устройствах, работающих с одним или двумя WSS MQTT-брокерами, открытие панели уменьшает запас ресурсов для MQTT, пока сессия активна.
Рекомендуемая практика для развёртывания ретрансляторов:
- включайте панель для первоначальной настройки
- используйте её снова для периодических проверок или устранения неполадок
- отключайте командой `set web off` после завершения, чтобы у MQTT был максимальный запас ресурсов
## Навигация и действия
Веб-панель состоит из двух основных страниц:
- `/app`: облегчённый вид для управления и конфигурации
- `/stats`: текущий статус, тренды, соседи и недавние события
Обе страницы имеют одинаковую верхнюю навигацию и служебные действия.
### `/app`
Страница `/app` — это основной интерфейс администратора и конфигурации.
Она включает:
- навигацию: `App` и `Stats`
- `Advert` (Объявление)
- `Reboot` (Перезагрузка)
- переключатель темы
- `Logout` (Выход)
Используйте `Start OTA` только тогда, когда намереваетесь обновить прошивку дистанционно.
### `/stats`
Страница `/stats` — это раздел для текущего статуса и хронологии данных.
Она включает:
- навигацию: `App` и `Stats`
- `Refresh` (Обновить)
- переключатель автообновления `↻`
- `Reboot` (Перезагрузка)
- переключатель темы `☀`/`☾`
- `Logout` (Выход)
## Быстрые команды "get"
Этот раздел выполняет стандартные команды только для чтения для:
- Wi-Fi
- MQTT
Они удобны для быстрых проверок без ввода команд в поле CLI. Быстрые действия MQTT включают `mqtt.status`, `mqtt.client_version`, `mqtt.iata`, `mqtt.owner` и `mqtt.email`.
## Выполнение команд CLI
Это мини-терминал для CLI ретранслятора.
- нажмите `Enter`, чтобы выполнить команду
- история команд отображается в окне терминала ниже
- кнопки сохранения в других местах страницы также показывают сгенерированную команду и ответ здесь
- здесь доступна команда `clock`, если нужно узнать текущее время платы ретранслятора
- авторизованные сессии могут выполнять те же команды CLI, которые принимает ретранслятор
Это позволяет легко увидеть, что именно панель отправила ретранслятору.
## Информация
В этом разделе отображается:
- `Hardware`: модель устройства
- `Firmware`: версия прошивки с датой сборки
- `Public Key` (Публичный ключ)
## Обновление прошивки (OTA)
Этот раздел позволяет безопасно загружать прошивку на устройство по Wi-Fi.
Чтобы перепрошить устройство, нажмите на поле выбора файла и выберите файл прошивки с расширением `.bin`, при этом кнопка `Upload` активируется.
Нажмите кнопку `Upload` и после подтверждения начнётся загрузка прошивки с индикацией в процентах.
После успешного завершения устройство автоматически перезагрузится с новой прошивкой.
## Настройки ретранслятора
Этот раздел включает:
- Имя устройства (Device Name)
- UTC часы (Clock UTC)
- Широта (Latitude)
- Долгота (Longitude)
- Гостевой пароль (Guest Password)
- Приватный ключ (Private Key)
- Интервал объявлений (Advert Interval)
- Интервал массовой рассылки (Flood Interval)
- Макс. массовых сообщений (Flood Max)
- Информация о владельце (Owner Info)
Примечания:
- `Latitude` и `Longitude` по умолчанию равны `0.0` как заполнители
- изменение приватного ключа требует перезагрузки для применения
- кнопки обновления загружают текущее значение с ретранслятора
- кнопки сохранения немедленно отправляют соответствующую команду CLI
## Режим скрытого узла (Ghost Node Mode)
Режим скрытого узла — это удобный элемент управления на `/app` для ретранслятора, который должен оставаться в Wi-Fi и MQTT, но не должен активно вести себя как ещё один близлежащий ретранслятор.
Типичный сценарий использования:
- комнатный или расположенный рядом MQTT-наблюдатель, когда другой ретранслятор поблизости уже выполняет радио-ретрансляцию
- узел, который должен передавать данные MQTT, веб-статус и диагностику, не добавляя лишнего ретрансляционного трафика или объявлений
При включении Режим скрытого узла:
- выключает `repeat`
- устанавливает `advert.interval` в `0`
- устанавливает `flood.advert.interval` в `0`
- оставляет локальную веб-панель и функции MQTT работающими
При отключении панель восстанавливает предыдущие настройки повтора и объявлений, если они ещё известны из текущей сессии браузера. Если нет, она возвращается к:
- `repeat on`
- `advert.interval 60`
- `flood.advert.interval 12`
Этот режим полезен, когда нужно, чтобы устройство наблюдало и публиковало данные, а не действовало как дополнительный передающий ретранслятор. Он не создаёт отдельную роль прошивки; это просто сгруппированное сокращение в веб-панели для существующих настроек.
## Настройки MQTT
Этот раздел включает:
- `mqtt.iata`: выбирается из подготовленного списка.
- `mqtt.owner`: публичный ключ владельца.
- `mqtt.email`: контактный email владельца.
- Переключатели MQTT-брокеров: `meshcoretel`, `letsmesh-eu` и `letsmesh-us`.
`UNSET - To be configured` — значение по умолчанию для новых установок MQTT ретранслятора, пока не появится реальное сохранённое значение.
Примечания:
- если `mqtt.iata` имеет значение `UNSET`, панель показывает баннер вверху с напоминанием задать его в разделе MQTT Settings
- пока `mqtt.iata` имеет значение `UNSET`, включённые MQTT-брокеры не пытаются подключиться
- состояние MQTT-брокер загружается при открытии страницы
- вы можете включать или выключать каждый MQTT-брокер из этой панели
- включить можно не более двух MQTT-брокеров одновременно
## Обзор `/stats`
Страница статистики загружается отдельно от `/app` и предназначена для того, чтобы основная страница администратора оставалась легче.
Страница `/stats` в настоящее время показывает:
- `Services`: MQTT, web, архив, количество соседей и, если SD-карта смонтирована, ёмкость карты и архива
- опциональную полноширинную сводную карточку `Environment` на платах, передающих GPS или данные телеметрии окружающей среды
- `Trends`: заряд батареи, свободная память, пакетная активность (RX/TX в виде составного графика), частота ошибок приёма (RX error rate), сигнал, уровень шума, загрузка ядра процессора, температура MCU (с цветовой индикацией теплового порога) и, если включён GPS, спутники; карточки графиков показывают диапазон `min`/`max`, подсветка при наведении синхронизирована по всем графикам
- `Neighbours`: текущая таблица соседей с ID, SNR, возрастом последнего приёма и возрастом объявления
- `Events`: события текущей загрузки/сессии
Для устройств, передающих дополнительную телеметрию, опциональная сводная карточка `Environment` может показывать текущие значения, такие как состояние GPS-фиксации, широту, долготу, высоту по GPS, напряжение, температуру с датчика, влажность, давление, высоту по давлению и температуру MCU.
Метрики, не имеющие текущего значения, скрываются, а не показывают строки-заполнители, поэтому карточки меняются в зависимости от устройства и текущего состояния датчиков.
Индикатор батареи `Core` предпочитает отображаемый устройством процент заряда, если устройство его предоставляет. На таких устройствах детализация показывает только текущее напряжение батареи в милливольтах. В противном случае отображаемый процент вычисляется из настроенного диапазона напряжения батареи устройства, и этот диапазон показывается в детализации, а не предполагается фиксированный одноэлементный диапазон `3000-4200 мВ`.
Графики трендов загружаются последовательно, а не одним большим пакетом:
1. сводка / статус
2. батарея
3. память
4. пакетная активность
5. частота ошибок приёма
6. загрузка ядра процессора
7. сигнал
8. спутники, когда GPS включён
Это позволяет снизить потребление памяти как на стороне браузера, так и на устройстве по сравнению с предыдущим внутристраничным просмотром статистики.
Если `web.stats` включён и SD-архив смонтирован, тренды могут восстанавливать архивные сводные точки после перезагрузки из последнего снимка на SD. Недавние актуальные точки по-прежнему добавляются из истории в памяти.
### Объём истории статистики
Сэмплы статистики собираются раз в минуту.
Текущие лимиты истории в памяти:
| Класс устройства | Лимит сэмплов | Лимит событий | Период истории |
| -------------------------------- | ------------: | ------------: | -------------------------- |
| Без PSRAM | `24` | `8` | Только недавняя оперативная история |
| Менее `4 Мб` PSRAM | `240` | `96` | Примерно `4` часа |
| От `4 Мб` до менее `8 Мб` PSRAM | `480` | `192` | Примерно `8` часов |
| `8 Мб` PSRAM или больше | `720` | `288` | Примерно `12` часов |
На устройствах с объёмом PSRAM примерно от `2 Мб` и выше история статистики начинает записываться с момента загрузки, когда `web.stats` включён, даже если `/stats` ещё не открывали.
Для восстановления из архива требуется включённый `web.stats` и смонтированная SD-карта на платах, которые поддерживают архивацию на MeshCoreTel-firmware.
Основное назначение SD-карты — позволить ретранслятору сохранять и восстанавливать историю для `/stats`. Архив хранит файлы снимков `.latest` для быстрого восстановления и ежедневные файлы `.log` с датой по UTC для долгосрочной истории. В качестве дополнительной опции эти файлы также можно извлечь и проанализировать на компьютере для более глубокого ручного анализа.
На устройствах без PSRAM `/stats` всё ещё может показывать недавние графики, пока активен просмотр статистики, но история меньше и не поддерживает такое же поведение с резервным копированием в архив, как на платах с PSRAM.
Полезные команды CLI:
- `set web.stats on`
- `set web.stats off`
- `get web.stats.status`
## Использование на мобильных устройствах
Страница адаптивна и должна корректно работать на телефоне.
На мобильных устройствах:
- кнопки быстрых команд сворачиваются в двухколоночный макет
- верхняя навигация и группы действий остаются компактными и удобными для касаний
- строки ввода остаются пригодными для сенсорного взаимодействия
- карточки трендов перестраиваются в одноколоночные секции, где это необходимо
## Типовые задачи
### Проверка Wi-Fi и MQTT
1. Откройте панель.
2. Нажмите `wifi.status` в быстрых командах `get`.
3. Нажмите `mqtt.status` в быстрых командах `get`.
4. Откройте `/stats` из верхней навигации для просмотра истории статистики.
### Изменение имени устройства
1. Отредактируйте `Device Name`.
2. Нажмите `Save`.
3. Проверьте сгенерированную команду и ответ в окне терминала CLI.
### Обновление MQTT Owner или Email
1. Перейдите в `MQTT Settings`.
2. Введите новое значение.
3. Нажмите `Save`.
4. Используйте кнопку обновления, если хотите перечитать сохранённое значение с ретранслятора.
### Дистанционное обновление прошивки (OTA)
1. Откройте панель
2. Найдите `Firmware Update` и нажмите на поле выбора файла
3. Выберите файл с прошивкой `.bin`
4. Нажмите `Upload` и подтвердите действие
5. Дождитесь загрузки прошивки и перезагрузки устройства
### Использование истории статистики
1. При необходимости включите статистику командой `set web.stats on`.
2. Откройте `/stats` из верхней навигации.
3. Проверьте `Services` на предмет состояния архива и среды выполнения.
4. Просмотрите `Trends` для недавней истории графиков.
5. Используйте `Refresh` для перезагрузки страницы статистики.
## Устранение неполадок
### Браузер предупреждает о сертификате
Это ожидаемо. Панель использует самоподписанный сертификат, сгенерированный для локального использования.
### Не могу открыть страницу
Проверьте:
- подключён ли ретранслятор к Wi-Fi
- IP-адрес из `get wifi.status`
- `get web.status` сообщает, что панель запущена
- ваше устройство / сборка прошивки поддерживает веб-панель
### Панель открывается, но не удаётся войти
Используйте пароль администратора ретранслятора, а не гостевой пароль.
### MQTT становится нестабильным при входе
Веб-панель загружает настройки посекционно, чтобы снизить нагрузку при запуске, но HTTPS всё ещё потребляет внутреннюю память.
Проверьте:
- сколько MQTT-брокеров включено (один или два)
- `memory` до и после входа
- улучшается ли стабильность после `set web off`
Для стационарных установок, где время безотказной работы MQTT важнее доступа через браузер, используйте панель кратковременно, а затем снова отключайте её.
### Открывается HTTP вместо HTTPS
Ретранслятор перенаправляет простые запросы `http://` на локальный URL панели `https://`. Если браузер всё ещё показывает проблему с подключением после перенаправления, откройте `https://<repeater-ip>/` напрямую и сначала примите предупреждение о самоподписанном сертификате.
### Статистика или настройки не обновляются
Попробуйте:
- обновить вкладку браузера
- использовать `Refresh` на `/stats`
- выйти и войти снова
- проверить стабильность Wi-Fi с помощью `get wifi.status`
### `/stats` недоступна
Проверьте:
- `get web.status`
- `get web.stats.status`
- была ли применена команда `set web.stats on`
Если `web.stats` выключен, `/stats` останется отключённой, и запросы истории графиков выполняться не будут.
## Связанная документация
- [Пользовательские команды CLI](./custom-cli.md)
- [Загрузка и прошивка релизов](./releases.md)
- [Локальная сборка с помощью uv](./local-builds.md)