Moved docs and workflows to avoid conflicts while merging official repo
This commit is contained in:
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 |
@@ -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 |
@@ -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
@@ -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
@@ -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`.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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 или удалённого компаньона/приложения
|
||||
@@ -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/>
|
||||
@@ -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
|
||||
```
|
||||
@@ -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`
|
||||
@@ -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`
|
||||
|
||||

|
||||

|
||||
|
||||
### Скриншот `/stats`
|
||||
|
||||

|
||||

|
||||
|
||||
## Требования
|
||||
|
||||
Вам потребуется:
|
||||
|
||||
- поддерживаемая сборка прошивки 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)
|
||||
Reference in New Issue
Block a user