feat: manual Gitea build workflow, release publishing, README and docs update
- добавлен ручной workflow Gitea Actions (.gitea/workflows/build-mqtt-firmwares.yml): сборка MQTT-прошивок на сервере и публикация релиза - добавлен posadmesh-tools/publish-gitea-release.sh для выгрузки собранных файлов в релиз Gitea (идемпотентно, фильтр по треку) - README: происхождение проекта переписано (форк EastMesh, доработка энтузиастов из Сергиева Посада, ориентация на meshcoretel.ru), добавлены раздел «Отличия от upstream MeshCore» и журнал «Изменения в проекте» - убраны упоминания Австралии, ссылки на eastmesh.au и региональные материалы; руководство по прошивке переведено на файлы релизов и esptool.py - posadmesh-build.sh: вывод PlatformIO очищается от \r — на Windows групповые команды сборки не находили ни одной цели; companion-команды удалены, добавлены build-mqtt-firmwares и list-mqtt - release-notes.yml: треки repeater-mqtt*, запись 2026.10.0 дополнена удалением companion и исправлением сборки, companion-wifi помечен как снятый с выпуска - AGENTS.md: правило дописывать изменения в README - .gitignore: .pio-home
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
# Ручная сборка MQTT-прошивок PosadMesh на сервере (Gitea Actions).
|
||||
#
|
||||
# Требования к раннеру (act_runner):
|
||||
# - Linux, Docker, доступ в интернет;
|
||||
# - python3 >= 3.11, git, curl;
|
||||
# - свободного места >= 20 ГБ: PlatformIO скачает тулчейны ESP32 (~1 ГБ) при первой сборке;
|
||||
# - кэш ~/.platformio между запусками сильно ускоряет сборку (шаг cache ниже).
|
||||
#
|
||||
# Запуск: Actions -> "Build MQTT firmwares" -> Run workflow.
|
||||
# Полная сборка всех 109 MQTT-таргетов идёт долго — удобнее запускать по группам
|
||||
# (uplink / espnow / bridge) или по одному таргету (group=single).
|
||||
#
|
||||
# Публикация в релиз Gitea требует секрета репозитория GITEA_TOKEN
|
||||
# (personal access token с правом write:repository).
|
||||
|
||||
name: Build MQTT firmwares
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
firmware_version:
|
||||
description: "Версия upstream MeshCore для метаданных (например v1.17.1)"
|
||||
required: true
|
||||
default: "v1.17.1"
|
||||
posadmesh_version:
|
||||
description: "Версия релиза PosadMesh (например v2026.10.0)"
|
||||
required: true
|
||||
default: "v2026.10.0"
|
||||
group:
|
||||
description: "Что собирать: all | uplink | espnow | bridge | single"
|
||||
required: true
|
||||
default: "all"
|
||||
target:
|
||||
description: "Имя окружения PlatformIO для group=single (например heltec_v4_repeater_mqtt)"
|
||||
required: false
|
||||
default: ""
|
||||
publish:
|
||||
description: "Создать релиз в Gitea и загрузить файлы: true | false"
|
||||
required: true
|
||||
default: "false"
|
||||
tag:
|
||||
description: "Тег релиза при publish=true (например repeater-mqtt-v2026.10.0)"
|
||||
required: false
|
||||
default: ""
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 360
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install uv
|
||||
run: |
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install uv
|
||||
|
||||
- name: Cache PlatformIO
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.platformio
|
||||
key: platformio-${{ hashFiles('platformio.ini', 'variants/**/platformio.ini') }}
|
||||
restore-keys: platformio-
|
||||
|
||||
- name: Build MQTT firmwares
|
||||
env:
|
||||
FIRMWARE_VERSION: ${{ github.event.inputs.firmware_version }}
|
||||
POSADMESH_VERSION: ${{ github.event.inputs.posadmesh_version }}
|
||||
GROUP: ${{ github.event.inputs.group }}
|
||||
TARGET: ${{ github.event.inputs.target }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
echo "FIRMWARE_VERSION=$FIRMWARE_VERSION POSADMESH_VERSION=$POSADMESH_VERSION GROUP=$GROUP TARGET=$TARGET"
|
||||
case "$GROUP" in
|
||||
all) bash posadmesh-build.sh build-mqtt-firmwares ;;
|
||||
uplink) bash posadmesh-build.sh build-repeater-mqtt-firmwares ;;
|
||||
espnow) bash posadmesh-build.sh build-repeater-mqtt-espnow-firmwares ;;
|
||||
bridge) bash posadmesh-build.sh build-repeater-mqtt-bridge-firmwares ;;
|
||||
single)
|
||||
if [ -z "$TARGET" ]; then
|
||||
echo "group=single requires the target input" >&2
|
||||
exit 1
|
||||
fi
|
||||
bash posadmesh-build.sh build-firmware "$TARGET"
|
||||
;;
|
||||
*)
|
||||
echo "unknown group: $GROUP (expected all|uplink|espnow|bridge|single)" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: mqtt-firmwares-${{ github.event.inputs.group }}
|
||||
path: out
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Publish Gitea release
|
||||
if: ${{ github.event.inputs.publish == 'true' }}
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
GITEA_URL: ${{ github.server_url }}
|
||||
TAG: ${{ github.event.inputs.tag }}
|
||||
GROUP: ${{ github.event.inputs.group }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [ -z "$TAG" ]; then
|
||||
echo "publish=true requires the tag input" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "${GITEA_TOKEN:-}" ]; then
|
||||
echo "secret GITEA_TOKEN is not configured" >&2
|
||||
exit 1
|
||||
fi
|
||||
case "$GROUP" in
|
||||
uplink) export ASSET_GLOB='*_repeater_mqtt-v*' ;;
|
||||
espnow) export ASSET_GLOB='*_repeater_mqtt_espnow-v*' ;;
|
||||
bridge) export ASSET_GLOB='*_repeater_mqtt_bridge-v*' ;;
|
||||
*) unset ASSET_GLOB || true ;;
|
||||
esac
|
||||
bash posadmesh-tools/publish-gitea-release.sh "$TAG" out "$TAG"
|
||||
@@ -32,7 +32,7 @@ body:
|
||||
attributes:
|
||||
label: Firmware Target
|
||||
description: Firmware environment or binary name, if known.
|
||||
placeholder: e.g. Heltec_v3_repeater_observer
|
||||
placeholder: e.g. Heltec_v3_repeater_mqtt
|
||||
validations:
|
||||
required: false
|
||||
|
||||
|
||||
@@ -41,19 +41,19 @@ runs:
|
||||
echo "$GITHUB_WORKSPACE/.venv/bin" >> "$GITHUB_PATH"
|
||||
|
||||
# Active release tag formats:
|
||||
# companion-wifi-v1.15.0
|
||||
# repeater-bridge-espnow-v1.15.0
|
||||
# observer-posadmesh-bridge-espnow-v2026.5.1
|
||||
# observer-posadmesh-bridge-mqtt-v2026.7.0
|
||||
# observer-posadmesh-v2026.5.1
|
||||
# repeater-mqtt-espnow-v2026.5.1
|
||||
# repeater-mqtt-bridge-v2026.7.0
|
||||
# repeater-mqtt-v2026.5.1
|
||||
# with OFFICIAL_MESHCORE_VERSION=v1.15.0 configured as a GitHub variable.
|
||||
#
|
||||
# This exports:
|
||||
# companion-wifi-v1.15.0 -> FIRMWARE_VERSION=v1.15.0, RELEASE_VERSION=v1.15.0
|
||||
# repeater-bridge-espnow-v1.15.0 -> FIRMWARE_VERSION=v1.15.0, RELEASE_VERSION=v1.15.0
|
||||
# observer-posadmesh-bridge-espnow-v2026.5.1 -> FIRMWARE_VERSION=v1.15.0, POSADMESH_VERSION=v2026.5.1,
|
||||
# repeater-mqtt-espnow-v2026.5.1 -> FIRMWARE_VERSION=v1.15.0, POSADMESH_VERSION=v2026.5.1,
|
||||
# RELEASE_VERSION=v1.15.0-posadmesh-v2026.5.1
|
||||
# observer-posadmesh-v2026.5.1 -> FIRMWARE_VERSION=v1.15.0, POSADMESH_VERSION=v2026.5.1,
|
||||
# repeater-mqtt-bridge-v2026.7.0 -> FIRMWARE_VERSION=v1.15.0, POSADMESH_VERSION=v2026.7.0,
|
||||
# RELEASE_VERSION=v1.15.0-posadmesh-v2026.7.0
|
||||
# repeater-mqtt-v2026.5.1 -> FIRMWARE_VERSION=v1.15.0, POSADMESH_VERSION=v2026.5.1,
|
||||
# RELEASE_VERSION=v1.15.0-posadmesh-v2026.5.1
|
||||
- name: Extract Version Info
|
||||
shell: bash
|
||||
@@ -74,26 +74,24 @@ runs:
|
||||
POSADMESH_VERSION=""
|
||||
FIRMWARE_VERSION="$STATIC_OFFICIAL_VERSION"
|
||||
|
||||
if [[ "$GIT_TAG_NAME" =~ ^observer-posadmesh-(v[[:alnum:]._-]+)$ ]]; then
|
||||
if [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-(v[[:alnum:]._-]+)$ ]]; then
|
||||
if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
|
||||
echo "OFFICIAL_MESHCORE_VERSION must be set for PosadMesh release tags" >&2
|
||||
exit 1
|
||||
fi
|
||||
POSADMESH_VERSION="${BASH_REMATCH[1]}"
|
||||
elif [[ "$GIT_TAG_NAME" =~ ^observer-posadmesh-bridge-espnow-(v[[:alnum:]._-]+)$ ]]; then
|
||||
elif [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-espnow-(v[[:alnum:]._-]+)$ ]]; then
|
||||
if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
|
||||
echo "OFFICIAL_MESHCORE_VERSION must be set for PosadMesh release tags" >&2
|
||||
exit 1
|
||||
fi
|
||||
POSADMESH_VERSION="${BASH_REMATCH[1]}"
|
||||
elif [[ "$GIT_TAG_NAME" =~ ^observer-posadmesh-bridge-mqtt-(v[[:alnum:]._-]+)$ ]]; then
|
||||
elif [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-bridge-(v[[:alnum:]._-]+)$ ]]; then
|
||||
if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
|
||||
echo "OFFICIAL_MESHCORE_VERSION must be set for PosadMesh release tags" >&2
|
||||
exit 1
|
||||
fi
|
||||
POSADMESH_VERSION="${BASH_REMATCH[1]}"
|
||||
elif [[ "$GIT_TAG_NAME" =~ ^companion-wifi-(v[[:alnum:]._-]+)$ ]]; then
|
||||
FIRMWARE_VERSION="${BASH_REMATCH[1]}"
|
||||
elif [[ "$GIT_TAG_NAME" =~ ^repeater-bridge-espnow-(v[[:alnum:]._-]+)$ ]]; then
|
||||
FIRMWARE_VERSION="${BASH_REMATCH[1]}"
|
||||
else
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
.direnv
|
||||
.pio
|
||||
.pio-home
|
||||
.vscode/.browse.c_cpp.db*
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/launch.json
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
**По умолчанию:** сохраняем поведение upstream.
|
||||
Изменяем код только для чётко ограниченных возможностей PosadMesh:
|
||||
|
||||
- `*_repeater_observer`
|
||||
- `*_companion_radio_wifi`
|
||||
- `*_repeater_mqtt`
|
||||
- MQTT-аплинк/брокер
|
||||
- веб-панель репитера
|
||||
- документация, релизы, автоматизация
|
||||
@@ -87,10 +86,10 @@ bash posadmesh-build.sh list
|
||||
Собрать один таргет:
|
||||
|
||||
```bash
|
||||
uv run pio run -e heltec_v4_repeater_observer
|
||||
uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_observer
|
||||
uv run pio run -e heltec_v4_companion_radio_wifi
|
||||
uv run pio run -e T_Beam_S3_Supreme_SX1262_companion_radio_wifi
|
||||
uv run pio run -e heltec_v4_repeater_mqtt
|
||||
uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_mqtt
|
||||
uv run pio run -e heltec_v4_repeater_mqtt_espnow
|
||||
uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_mqtt_bridge
|
||||
```
|
||||
|
||||
Сборка с релизными метаданными:
|
||||
@@ -98,15 +97,15 @@ uv run pio run -e T_Beam_S3_Supreme_SX1262_companion_radio_wifi
|
||||
```bash
|
||||
export FIRMWARE_VERSION=v1.15.0
|
||||
export POSADMESH_VERSION=v2026.5.1
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_observer
|
||||
bash posadmesh-build.sh build-firmware T_Beam_S3_Supreme_SX1262_repeater_observer
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_mqtt
|
||||
bash posadmesh-build.sh build-firmware T_Beam_S3_Supreme_SX1262_repeater_mqtt
|
||||
```
|
||||
|
||||
Прошить таргет:
|
||||
|
||||
```bash
|
||||
uv run pio run -e heltec_v4_repeater_observer -t upload --upload-port /dev/tty.usbmodemXXXX
|
||||
uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_observer -t upload --upload-port /dev/tty.usbmodemXXXX
|
||||
uv run pio run -e heltec_v4_repeater_mqtt -t upload --upload-port /dev/tty.usbmodemXXXX
|
||||
uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_mqtt -t upload --upload-port /dev/tty.usbmodemXXXX
|
||||
```
|
||||
|
||||
## Ключевые файлы
|
||||
@@ -123,14 +122,22 @@ uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_observer -t upload --upload-
|
||||
|
||||
## Принадлежность workflow
|
||||
|
||||
Репозиторий живёт на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>. Собственные workflow GitHub Actions (`posadmesh-*.yml`) удалены при переезде: релизы собираются локально через `posadmesh-build.sh`, теги и релизы создаются вручную в веб-интерфейсе git.meshinfo.ru.
|
||||
Репозиторий живёт на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>.
|
||||
|
||||
Workflow upstream MeshCore остаются под исходными именами файлов ради чистоты слияний. Не адаптируйте их под поведение PosadMesh; держите их близко к upstream. Они не используются для релизов PosadMesh.
|
||||
Собственные workflow:
|
||||
|
||||
- `.gitea/workflows/build-mqtt-firmwares.yml` — ручная сборка MQTT-прошивок на сервере Gitea Actions (`workflow_dispatch`): собирает группу или один таргет, умеет создавать релиз Gitea и загружать в него файлы. Публикация использует секрет репозитория `GITEA_TOKEN`.
|
||||
|
||||
Кроме workflow прошивки собираются локально через `posadmesh-build.sh`, а теги и релизы создаются в веб-интерфейсе git.meshinfo.ru. Выгрузка собранных файлов в релиз — через `posadmesh-tools/publish-gitea-release.sh`.
|
||||
|
||||
Workflow upstream MeshCore в `.github/workflows/` остаются под исходными именами файлов ради чистоты слияний. Не адаптируйте их под поведение PosadMesh; держите их близко к upstream. Они не используются для релизов PosadMesh.
|
||||
|
||||
## Требования к синхронизации документации
|
||||
|
||||
Если вы меняете что-либо из перечисленного, обновляйте документацию в том же PR, когда это возможно:
|
||||
|
||||
- Любые изменения в проекте:
|
||||
- дописать запись о них в раздел «Изменения в проекте» файла `README.md`
|
||||
- Команды веб-панели:
|
||||
- обновить `posadmesh-docs/custom-cli.md`
|
||||
- Пользовательское поведение, разделы, элементы управления или диагностика веб-панели:
|
||||
@@ -142,48 +149,41 @@ Workflow upstream MeshCore остаются под исходными имена
|
||||
- Руководство по прошивке и файлам релиза:
|
||||
- обновить `posadmesh-docs/releases.md`
|
||||
|
||||
## Замечания по обсерверам
|
||||
## Замечания по MQTT-репитерам
|
||||
|
||||
Сборки `*_repeater_observer` могут включать локальную HTTPS-веб-панель на поддерживаемых таргетах ESP32.
|
||||
Сборки `*_repeater_mqtt` могут включать локальную HTTPS-веб-панель на поддерживаемых таргетах ESP32.
|
||||
|
||||
Эксплуатационные рекомендации уже отражены в документации:
|
||||
|
||||
- использовать для первичной настройки и диагностики
|
||||
- после этого предпочитать `set web off` для максимального запаса heap
|
||||
|
||||
## Замечания по companion WiFi
|
||||
## Границы продукта
|
||||
|
||||
Таргеты `*_companion_radio_wifi` поддерживают сохраняемые команды восстановления Wi-Fi через последовательный `CLI Rescue`.
|
||||
Проект собирает и поставляет только MQTT-прошивки (`*_repeater_mqtt`, `*_repeater_mqtt_espnow`, `*_repeater_mqtt_bridge`). Связанные с этим правила:
|
||||
|
||||
Не документируйте команды восстановления companion в документации репитера. Не предполагайте, что поведение веб-панели применимо.
|
||||
|
||||
Правило версий companion:
|
||||
|
||||
- теги companion используют только официальную версию релиза upstream MeshCore
|
||||
- текущая официальная версия MeshCore — `v1.15.0`
|
||||
- companion-релизы выпускаются только когда `meshcore-dev/MeshCore` сделал официальный релиз
|
||||
- не придумывайте отдельные номера версий PosadMesh для companion
|
||||
- линия companion-прошивок удалена из проекта: окружения `*_companion_radio_*` и код `examples/companion_radio` остаются в upstream-оверлеях, PosadMesh их не собирает и не документирует
|
||||
- не придумывайте отдельные номера версий PosadMesh для треков, которых нет в `release-notes.yml`
|
||||
|
||||
## Процесс релиза
|
||||
|
||||
Текущие форматы тегов:
|
||||
|
||||
```bash
|
||||
git tag companion-wifi-v1.15.0
|
||||
git tag repeater-bridge-espnow-v1.15.0
|
||||
git tag observer-posadmesh-bridge-espnow-v2026.5.1
|
||||
git tag observer-posadmesh-bridge-mqtt-v2026.7.0
|
||||
git tag observer-posadmesh-v2026.5.1
|
||||
git tag repeater-mqtt-espnow-v2026.5.1
|
||||
git tag repeater-mqtt-bridge-v2026.7.0
|
||||
git tag repeater-mqtt-v2026.5.1
|
||||
```
|
||||
|
||||
Правила:
|
||||
|
||||
- теги `companion-wifi` используют версию upstream MeshCore напрямую
|
||||
- теги `repeater-bridge-espnow` используют версию upstream MeshCore напрямую
|
||||
- теги `observer-posadmesh-bridge-espnow` используют версию релиза PosadMesh в теге
|
||||
- теги `observer-posadmesh-bridge-mqtt` используют версию релиза PosadMesh в теге
|
||||
- теги `observer-posadmesh` используют версию релиза PosadMesh в теге
|
||||
- переменная `FIRMWARE_VERSION` при локальной сборке задаёт базовую версию upstream для релизных сборок треков `observer-posadmesh`, `observer-posadmesh-bridge-espnow` и `observer-posadmesh-bridge-mqtt`
|
||||
- теги `repeater-mqtt-espnow` используют версию релиза PosadMesh в теге
|
||||
- теги `repeater-mqtt-bridge` используют версию релиза PosadMesh в теге
|
||||
- теги `repeater-mqtt` используют версию релиза PosadMesh в теге
|
||||
- переменная `FIRMWARE_VERSION` при локальной сборке задаёт базовую версию upstream для релизных сборок треков `repeater-mqtt`, `repeater-mqtt-espnow` и `repeater-mqtt-bridge`
|
||||
- переменная `POSADMESH_VERSION` при локальной сборке задаёт версию релиза PosadMesh
|
||||
- если версия релиза upstream MeshCore изменилась, обновите `FIRMWARE_VERSION` при сборке и в документации
|
||||
|
||||
@@ -191,7 +191,7 @@ git tag observer-posadmesh-v2026.5.1
|
||||
|
||||
1. Обновить `release-notes.yml` в ветке `develop`.
|
||||
2. Смерджить релизный PR из `develop` в `main`.
|
||||
3. Собрать нужные прошивки локально с подходящими `FIRMWARE_VERSION` и `POSADMESH_VERSION`.
|
||||
3. Собрать нужные прошивки — локально или ручным workflow в Gitea Actions — с подходящими `FIRMWARE_VERSION` и `POSADMESH_VERSION`.
|
||||
4. Создать нужный тег или теги релиза на целевом коммите в `main`.
|
||||
5. Запушить теги в git.meshinfo.ru и создать релиз в его веб-интерфейсе.
|
||||
|
||||
|
||||
@@ -1,29 +1,46 @@
|
||||
# MeshCore-Posadmesh
|
||||
|
||||
MeshCore-Posadmesh основан на upstream-проекте MeshCore:
|
||||
PosadMesh — форк проекта EastMesh, который, в свою очередь, основан на официальной прошивке MeshCore:
|
||||
|
||||
- <https://github.com/meshcore-dev/MeshCore>
|
||||
|
||||
Прошивку дорабатывают энтузиасты из Сергиева Посада; проект ориентирован на работу с сайтом <https://meshcoretel.ru>.
|
||||
|
||||
Благодарность Scott Powell / Ripple Radios и участникам MeshCore за оригинальную прошивку и основу проекта.
|
||||
|
||||
PosadMesh — это mesh-сеть, развиваемая сообществом на востоке Австралии. Этот репозиторий предоставляет адаптированные сборки MeshCore, включая прошивку WiFi companion с дополнительными инструментами CLI и прошивку обсервера, которая интегрируется с нашей платформой телеметрии CoreScope.
|
||||
Этот репозиторий предоставляет адаптированные сборки MeshCore: прошивку MQTT-репитера, которая публикует телеметрию в mesh-сеть MeshCoreTel.
|
||||
|
||||
CoreScope (<https://core.eastmesh.au>) обеспечивает видимость сети, включая состояние репитеров, обсерверов и данные картографирования.
|
||||
|
||||
**Сборки обсервера передают телеметрию в PosadMesh Core и предназначены только для репитеров Восточной Австралии**; запуск их в других местах может исказить общие данные сети.
|
||||
**Сборки MQTT-репитера передают телеметрию на <https://meshcoretel.ru>** — укажите координаты узла и радиопараметры своего региона, чтобы узел появился на карте и в связях. Для Москвы (MOW) это 868,731 МГц, полоса 62,5 кГц, SF7, CR7, хэш пути 2 байта.
|
||||
|
||||
## Что добавляет этот репозиторий
|
||||
|
||||
- таргеты прошивки `*_repeater_observer` с:
|
||||
- таргеты прошивки `*_repeater_mqtt` с:
|
||||
- встроенным WiFi
|
||||
- MQTT-аплинком к курируемому брокеру MeshCoreTel и дополнительно опциональным собственным брокером (TCP или WSS)
|
||||
- опциональной локальной панелью конфигурации HTTPS на поддерживаемых таргетах ESP32
|
||||
- таргеты прошивки `*_repeater_observer_espnow`, добавляющие локальный мост ESP-NOW mesh
|
||||
- таргеты прошивки `*_repeater_mqtt_espnow`, добавляющие локальный мост ESP-NOW mesh
|
||||
- таргеты прошивки `*_repeater_bridge_espnow` для обычного ESP-NOW-моста репитера в стиле upstream, без MQTT-аплинка и веб-панели PosadMesh
|
||||
- таргеты прошивки `*_companion_radio_wifi` для companion-устройств с подключением по WiFi
|
||||
- специфичные для PosadMesh процесс релизов и версионирование поверх релизов upstream MeshCore
|
||||
- документация и руководство по релизам для пользователей PosadMesh вместо полного набора документации upstream MeshCore
|
||||
|
||||
## Отличия от upstream MeshCore
|
||||
|
||||
Ядро проекта — mesh-стек, радио, протокол и работа с платами — остаётся upstream-кодом MeshCore. PosadMesh добавляет поверх него транспорт, телеметрию и веб-интерфейс:
|
||||
|
||||
| Область | upstream MeshCore | PosadMesh |
|
||||
| --- | --- | --- |
|
||||
| Транспорт | нет MQTT; репитер работает только по радио и через последовательный порт | MQTT-аплинк: курируемый брокер `meshcoretel` и опциональный собственный брокер (TCP или WSS по пути `/mqtt`); публикация статуса, пакетов и raw-данных |
|
||||
| MQTT-мост | нет | передача raw-пакетов mesh между репитерами через ваш собственный peer-брокер (трек `repeater-mqtt-bridge`) |
|
||||
| Wi-Fi | нет | Wi-Fi на репитерах: подключение, энергосбережение, watchdog шлюза, автоматическое переподключение, команды `wifi.*` |
|
||||
| Веб-интерфейс | нет | локальная HTTPS-панель: вход по паролю администратора, выполнение CLI-команд, настройки репитера/радио/MQTT, регионы, чёрные списки, обновление прошивки (OTA), управление сертификатом панели |
|
||||
| Телеметрия | нет | история метрик в PSRAM и архив на SD: батарея, загрузка ядра, память, пакеты, ошибки, уровень сигнала и шума, датчики, GPS; страница `/stats` с графиками и списком соседей/событий |
|
||||
| CLI | базовый набор MeshCore | дополнительно `mqtt.*`, `wifi.*`, `web.*`, `blacklist path\|chan`, `region`, `stats-*`, `time` и `time.force`, режим Ghost Node, лимит пересылки flood, отчёт о батарее платы, управление вентилятором T-Beam 1W |
|
||||
| Сборки | companion (USB/BLE), repeater, room server, sensor | только MQTT-таргеты: `*_repeater_mqtt`, `*_repeater_mqtt_espnow`, `*_repeater_mqtt_bridge` |
|
||||
| Платы | базовый список MeshCore | добавлены свои варианты (Meshadventurer, самодельные ESP32-S3 + E22, Xiao S3 + LoRa2021F33, RAK3112, Station G2/G3, ThinkNode и другие) |
|
||||
| Релизы | upstream-процесс | свои треки и теги `repeater-mqtt*`, локальная сборка через [`posadmesh-build.sh`](./posadmesh-build.sh), публикация релизов в Gitea |
|
||||
|
||||
Что **не** меняется: поведение mesh-сети, радиоконфигурации, протокол и совместимость с MeshCore; upstream-код сохраняется в репозитории и синхронизируется из `meshcore-dev/MeshCore` (см. [AGENTS.md](./AGENTS.md)).
|
||||
|
||||
## Релизы
|
||||
|
||||
Готовые прошивки публикуются в разделе Releases на git.meshinfo.ru:
|
||||
@@ -34,9 +51,9 @@ CoreScope (<https://core.eastmesh.au>) обеспечивает видимост
|
||||
|
||||
- [posadmesh-docs/releases.md](./posadmesh-docs/releases.md)
|
||||
|
||||
Сайт прошивальщика кастомной прошивки:
|
||||
Веб-прошивальщик MeshCoreTel (в том числе прошивки наблюдателя и настройка радиопараметров):
|
||||
|
||||
- <https://flasher.eastmesh.au/>
|
||||
- <https://meshcoretel.ru/ru/flasher>
|
||||
|
||||
## Установка uv
|
||||
|
||||
@@ -83,8 +100,8 @@ bash posadmesh-build.sh list
|
||||
Сборка одного таргета:
|
||||
|
||||
```bash
|
||||
uv run pio run -e heltec_v4_repeater_observer
|
||||
uv run pio run -e heltec_v4_companion_radio_wifi
|
||||
uv run pio run -e heltec_v4_repeater_mqtt
|
||||
uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_mqtt
|
||||
```
|
||||
|
||||
Сборка с релизными метаданными версии:
|
||||
@@ -92,13 +109,13 @@ uv run pio run -e heltec_v4_companion_radio_wifi
|
||||
```bash
|
||||
export FIRMWARE_VERSION=v1.15.0
|
||||
export POSADMESH_VERSION=v2026.5.1
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_observer
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_mqtt
|
||||
```
|
||||
|
||||
Прошивка таргета:
|
||||
|
||||
```bash
|
||||
uv run pio run -e heltec_v4_repeater_observer -t upload --upload-port /dev/tty.usbmodemXXXX
|
||||
uv run pio run -e heltec_v4_repeater_mqtt -t upload --upload-port /dev/tty.usbmodemXXXX
|
||||
```
|
||||
|
||||
Открыть последовательный монитор:
|
||||
@@ -126,15 +143,13 @@ uv run --group docs zensical build
|
||||
- [`platformio.ini`](./platformio.ini)
|
||||
- корневой конфиг PlatformIO и вспомогательные скрипты ESP32
|
||||
- [`variants/posadmesh_mqtt/platformio.ini`](./variants/posadmesh_mqtt/platformio.ini)
|
||||
- общие определения окружений обсервера PosadMesh
|
||||
- общие определения окружений MQTT-репитера PosadMesh
|
||||
- [`examples/simple_repeater/MyMesh.cpp`](./examples/simple_repeater/MyMesh.cpp)
|
||||
- подключение CLI репитера, набор MQTT-команд и интеграция с белым списком веб-панели
|
||||
- [`src/helpers/bridges/MQTTBridge.cpp`](./src/helpers/bridges/MQTTBridge.cpp)
|
||||
- двунаправленный MQTT-мост mesh (peer-брокер TCP, топик `meshcore/bridge/packets`)
|
||||
- [`src/helpers/mqtt/MQTTUplink.cpp`](./src/helpers/mqtt/MQTTUplink.cpp)
|
||||
- реализация MQTT-аплинка, веб-панель HTTPS, поддержка собственного брокера (TCP/WSS) и управление WiFi репитера
|
||||
- [`examples/companion_radio`](./examples/companion_radio)
|
||||
- реализация прошивки companion
|
||||
- [`RELEASE.md`](./RELEASE.md)
|
||||
- форматы тегов и порядок выпуска релизов
|
||||
- [`posadmesh-docs/`](./posadmesh-docs)
|
||||
@@ -158,38 +173,38 @@ uv run --group docs zensical build
|
||||
- публичного ключа и email владельца
|
||||
- включения локальной веб-панели
|
||||
|
||||
### MQTT-мост mesh (обсервер)
|
||||
### MQTT-мост mesh (MQTT-репитер)
|
||||
|
||||
Трек релиза `observer-posadmesh-bridge-mqtt` (`*_repeater_observer_mqtt_bridge`) выполняет мостовую передачу **raw-пакетов mesh** между репитерами через **peer-брокер MQTT, который запускаете вы сами** (например, Mosquitto на ПК в локальной сети). Это **не** то же самое, что MQTT-аплинк к курируемому брокеру MeshCoreTel:
|
||||
Трек релиза `repeater-mqtt-bridge` (`*_repeater_mqtt_bridge`) выполняет мостовую передачу **raw-пакетов mesh** между репитерами через **peer-брокер MQTT, который запускаете вы сами** (например, Mosquitto на ПК в локальной сети). Это **не** то же самое, что MQTT-аплинк к курируемому брокеру MeshCoreTel:
|
||||
|
||||
| | MQTT-аплинк (обсервер) | MQTT-мост mesh |
|
||||
| | MQTT-аплинк (MQTT-репитер) | MQTT-мост mesh |
|
||||
| --- | --- | --- |
|
||||
| Назначение | Публикация JSON-телеметрии в курируемые брокеры | Передача зашифрованных пакетов mesh между радиоустройствами |
|
||||
| Брокеры | `meshcoretel`, собственный брокер | Ваш peer-брокер (`host:port`, TCP) |
|
||||
| Топик | `meshcore/<iata>/...` (по IATA) | `meshcore/bridge/packets` (фиксированный) |
|
||||
| По умолчанию в bridge-сборках | Выключено по умолчанию (включается в веб-панели / CLI) | Включено, когда включён `bridge.enabled` |
|
||||
|
||||
**Первый поддерживаемый таргет:** `Xiao_S3_WIO_repeater_observer_mqtt_bridge`
|
||||
**Первый поддерживаемый таргет:** `Xiao_S3_WIO_repeater_mqtt_bridge`
|
||||
|
||||
**Связанный трек:** `observer-posadmesh-bridge-espnow` (`*_repeater_observer_espnow`) использует ESP-NOW вместо MQTT для локальной мостовой передачи.
|
||||
**Связанный трек:** `repeater-mqtt-espnow` (`*_repeater_mqtt_espnow`) использует ESP-NOW вместо MQTT для локальной мостовой передачи.
|
||||
|
||||
Пример сборки:
|
||||
|
||||
```bash
|
||||
uv run pio run -e Xiao_S3_WIO_repeater_observer_mqtt_bridge
|
||||
uv run pio run -e Xiao_S3_WIO_repeater_mqtt_bridge
|
||||
```
|
||||
|
||||
Прошивка (обновление):
|
||||
|
||||
```bash
|
||||
uv run pio run -e Xiao_S3_WIO_repeater_observer_mqtt_bridge -t upload --upload-port COM10
|
||||
uv run pio run -e Xiao_S3_WIO_repeater_mqtt_bridge -t upload --upload-port COM10
|
||||
```
|
||||
|
||||
После **полного стирания флеш-памяти** прошивайте объединённый образ по адресу `0x0`, а не только `firmware.bin`:
|
||||
|
||||
```bash
|
||||
uv run pio run -e Xiao_S3_WIO_repeater_observer_mqtt_bridge -t mergebin
|
||||
uv run pio pkg exec -p tool-esptoolpy -- esptool.py --chip esp32s3 --port COM10 write_flash 0x0 .pio/build/Xiao_S3_WIO_repeater_observer_mqtt_bridge/firmware-merged.bin
|
||||
uv run pio run -e Xiao_S3_WIO_repeater_mqtt_bridge -t mergebin
|
||||
uv run pio pkg exec -p tool-esptoolpy -- esptool.py --chip esp32s3 --port COM10 write_flash 0x0 .pio/build/Xiao_S3_WIO_repeater_mqtt_bridge/firmware-merged.bin
|
||||
```
|
||||
|
||||
#### Peer-брокер Mosquitto (локальная сеть)
|
||||
@@ -275,7 +290,7 @@ get bridge.enabled
|
||||
|
||||
### Локальная веб-панель
|
||||
|
||||
На поддерживаемых таргетах ESP32 `*_repeater_observer` репитер может предоставлять локальную панель конфигурации HTTPS по WiFi.
|
||||
На поддерживаемых таргетах ESP32 `*_repeater_mqtt` репитер может предоставлять локальную панель конфигурации HTTPS по WiFi.
|
||||
|
||||
Возможности:
|
||||
|
||||
@@ -285,64 +300,85 @@ get bridge.enabled
|
||||
- светлая и тёмная темы
|
||||
- опциональное отключение через `set web off`
|
||||
|
||||
Рекомендуется использовать для первичной настройки и периодической диагностики. При развёртывании обсерверов отключайте панель по завершении, если нужен максимальный запас heap для MQTT.
|
||||
|
||||
### Дополнения Companion WiFi
|
||||
|
||||
Таргеты `*_companion_radio_wifi` теперь поддерживают сохраняемые команды восстановления WiFi:
|
||||
|
||||
- откройте последовательный монитор на скорости `115200` бод
|
||||
- перезагрузите устройство
|
||||
- удерживайте пользовательскую кнопку в течение первых 8 секунд после загрузки, чтобы войти в `CLI Rescue`
|
||||
- дождитесь `========= CLI Rescue =========`
|
||||
- отправьте команды из последовательного монитора
|
||||
|
||||
Эти команды восстановления доступны только после входа в `CLI Rescue`:
|
||||
|
||||
- `get wifi.status`
|
||||
- `get wifi.ssid`
|
||||
- `get wifi.powersaving`
|
||||
- `set wifi.ssid <ssid>`
|
||||
- `set wifi.pwd <password>`
|
||||
- `set wifi.powersaving none|min|max`
|
||||
Рекомендуется использовать для первичной настройки и периодической диагностики. При развёртывании MQTT-репитеров отключайте панель по завершении, если нужен максимальный запас heap для MQTT.
|
||||
|
||||
## Сборка и релизы
|
||||
|
||||
Репозиторий живёт на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>.
|
||||
|
||||
Собственные workflow GitHub Actions (сборка релизов, проверки сборки и публикация доков) удалены при переезде: релизы собираются локально через [`posadmesh-build.sh`](./posadmesh-build.sh), а теги и релизы создаются вручную в веб-интерфейсе git.meshinfo.ru.
|
||||
Собственные workflow GitHub Actions (сборка релизов, проверки сборки и публикация доков) удалены при переезде. Сейчас прошивки собираются локально через [`posadmesh-build.sh`](./posadmesh-build.sh) или на сервере ручным workflow [`.gitea/workflows/build-mqtt-firmwares.yml`](./.gitea/workflows/build-mqtt-firmwares.yml) (Actions → Build MQTT firmwares → Run workflow); теги и релизы создаются в веб-интерфейсе git.meshinfo.ru, а собранные файлы выгружаются в релиз скриптом [`posadmesh-tools/publish-gitea-release.sh`](./posadmesh-tools/publish-gitea-release.sh). Подробности — в [RELEASE.md](./RELEASE.md).
|
||||
|
||||
Workflow upstream MeshCore (`.github/workflows/build-*.yml`, `firmware-builder.yml`, `pr-build-check.yml`, `run-unit-tests.yml`, `stale-bot.yml`) сохранены под исходными именами файлов для уменьшения конфликтов слияния. Они не являются частью процесса релизов PosadMesh и не используются.
|
||||
|
||||
Текущие треки релизов:
|
||||
|
||||
- `companion-wifi`
|
||||
- `repeater-bridge-espnow`
|
||||
- `observer-posadmesh`
|
||||
- `observer-posadmesh-bridge-espnow`
|
||||
- `observer-posadmesh-bridge-mqtt`
|
||||
- `repeater-mqtt`
|
||||
- `repeater-mqtt-espnow`
|
||||
- `repeater-mqtt-bridge`
|
||||
|
||||
## Теги релизов
|
||||
|
||||
Текущие теги релизов:
|
||||
|
||||
```bash
|
||||
git tag companion-wifi-v1.14.1
|
||||
git tag repeater-bridge-espnow-v1.15.0
|
||||
git tag observer-posadmesh-v2026.5.1
|
||||
git tag observer-posadmesh-bridge-espnow-v2026.5.1
|
||||
git tag observer-posadmesh-bridge-mqtt-v2026.7.0
|
||||
git tag repeater-mqtt-v2026.5.1
|
||||
git tag repeater-mqtt-espnow-v2026.5.1
|
||||
git tag repeater-mqtt-bridge-v2026.7.0
|
||||
```
|
||||
|
||||
Companion WiFi использует в теге версию upstream MeshCore.
|
||||
`repeater-bridge-espnow` использует в теге версию upstream MeshCore.
|
||||
|
||||
Обсервер использует:
|
||||
MQTT-репитер использует:
|
||||
|
||||
- `FIRMWARE_VERSION` — версия upstream MeshCore, задаётся при локальной сборке
|
||||
- `POSADMESH_VERSION` — версия релиза PosadMesh из тега
|
||||
|
||||
Полный процесс релиза см. в [RELEASE.md](./RELEASE.md).
|
||||
|
||||
## Изменения в проекте
|
||||
|
||||
Правило ведения: после любых правок проекта сюда дописывается короткая запись о том, что изменилось.
|
||||
|
||||
### 2026.10.0 (текущая разработка)
|
||||
|
||||
**Ребрендинг в PosadMesh**
|
||||
|
||||
- папки и скрипты: `eastmesh-docs` → `posadmesh-docs`, `eastmesh-tools` → `posadmesh-tools`, `eastmesh-build.sh` → `posadmesh-build.sh`;
|
||||
- цели сборки: `*_repeater_observer*` → `*_repeater_mqtt*`;
|
||||
- треки и теги релизов: `repeater-mqtt`, `repeater-mqtt-espnow`, `repeater-mqtt-bridge` (ранее `observer-eastmesh*`);
|
||||
- переменная версии релиза `EASTMESH_VERSION` → `POSADMESH_VERSION`, суффикс версии сборки `-posadmesh-`;
|
||||
- `posadmesh-docs/*`, `README.md`, `RELEASE.md` и `AGENTS.md` переведены на русский язык; команды, их вывод, код, пути и идентификаторы оставлены без перевода.
|
||||
|
||||
**Удалено**
|
||||
|
||||
- брокеры `waev`, `meshmapper`, `letsmesh-eu` и `letsmesh-us` — из прошивки, веб-панели и документации; остались `mqtt.meshcoretel` и `mqtt.custom`. Сохранённые выборы удалённых брокеров сбрасываются один раз при обновлении;
|
||||
- линия companion-прошивок: трек `companion-wifi`, команды сборки companion и разделы документации. Проект собирает только MQTT-прошивки.
|
||||
|
||||
**Переименование observer → mqtt**
|
||||
|
||||
- цели: `*_repeater_mqtt`, `*_repeater_mqtt_espnow`, `*_repeater_mqtt_bridge`;
|
||||
- команды сборки: `build-repeater-mqtt-firmwares`, `build-repeater-mqtt-espnow-firmwares`, `build-repeater-mqtt-bridge-firmwares`; добавлены `build-mqtt-firmwares` (все MQTT-треки) и `list-mqtt`;
|
||||
- из документации, `release-notes.yml` и шаблонов issue убраны старые имена (историю релизов с реальными git-тегами не переписывали).
|
||||
|
||||
**Исправлено**
|
||||
|
||||
- `set mqtt.meshcoretel on|off` не срабатывал: обработчик сравнивался со строкой `set mqtt.mqtt.meshcoretel `. Алиас `set mqtt.meshcoretel.ru on|off` читает значение по правильному смещению;
|
||||
- `setEndpointEnabled` маскировал сохранённую маску брокеров значением `0x07` и терял бит собственного брокера при переключении любого другого;
|
||||
- на странице логина веб-панели незакрытый тег `</div` съедал абзац-подсказку про пароль администратора;
|
||||
- разбор дерева регионов срезал завершающую букву `F` в имени региона, из-за чего `region allowf`, `region denyf` и `region remove` не работали для таких имён;
|
||||
- групповые команды сборки не собирали ничего: использовались устаревшие суффиксы `_repeater_observer*`, а на Windows имена окружений приходили с символом `\r`. Теперь используются реальные суффиксы, а вывод PlatformIO очищается от `\r`.
|
||||
|
||||
**Инфраструктура и релизы**
|
||||
|
||||
- репозиторий переехал на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>; собственные workflow GitHub Actions удалены, upstream-оверлеи сохранены под исходными именами;
|
||||
- добавлен ручной workflow Gitea Actions [`.gitea/workflows/build-mqtt-firmwares.yml`](./.gitea/workflows/build-mqtt-firmwares.yml) — сборка MQTT-прошивок на сервере и публикация релиза;
|
||||
- добавлен скрипт [`posadmesh-tools/publish-gitea-release.sh`](./posadmesh-tools/publish-gitea-release.sh) для выгрузки собранных файлов в релиз Gitea;
|
||||
- в README добавлен раздел «Отличия от upstream MeshCore»;
|
||||
- собран полный набор MQTT-прошивок (109 целей) с версией `v1.17.1-posadmesh-v2026.10.0` для публикации в релизах `repeater-mqtt`, `repeater-mqtt-espnow` и `repeater-mqtt-bridge`;
|
||||
- проект и документация переориентированы на meshcoretel.ru: в README переписано происхождение проекта и заведён этот журнал изменений; из документации убраны прежние региональные материалы, ссылки на сторонние сервисы, примеры радиопресетов и коды регионов других стран; руководство по прошивке переведено на файлы из раздела релизов и `esptool.py`, вместо раздела региональных материалов добавлен раздел материалов MeshCoreTel.
|
||||
|
||||
## Документация
|
||||
|
||||
Отдельный сайт документации больше не публикуется: страницы лежат в каталоге [`posadmesh-docs/`](./posadmesh-docs) и читаются прямо в веб-интерфейсе git.meshinfo.ru:
|
||||
|
||||
+56
-30
@@ -1,6 +1,38 @@
|
||||
# Выпуск прошивок
|
||||
|
||||
Репозиторий живёт на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>. Автоматической сборки релизов в CI нет: прошивки собираются локально через [`posadmesh-build.sh`](./posadmesh-build.sh), а теги и релизы создаются вручную в веб-интерфейсе git.meshinfo.ru.
|
||||
Репозиторий живёт на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>. Прошивки собираются локально через [`posadmesh-build.sh`](./posadmesh-build.sh) или на сервере ручным workflow Gitea Actions; теги и релизы создаются в веб-интерфейсе git.meshinfo.ru.
|
||||
|
||||
## Сборка на сервере (Gitea Actions)
|
||||
|
||||
Ручной workflow [`.gitea/workflows/build-mqtt-firmwares.yml`](./.gitea/workflows/build-mqtt-firmwares.yml) запускается из веб-интерфейса: **Actions → Build MQTT firmwares → Run workflow**.
|
||||
|
||||
Параметры запуска:
|
||||
|
||||
- `firmware_version` — версия upstream MeshCore для метаданных (например `v1.17.1`);
|
||||
- `posadmesh_version` — версия релиза PosadMesh (например `v2026.10.0`);
|
||||
- `group` — что собирать: `all` (все MQTT-таргеты), `uplink`, `espnow`, `bridge` или `single`;
|
||||
- `target` — имя окружения PlatformIO, если `group=single` (например `heltec_v4_repeater_mqtt`);
|
||||
- `publish` — `true`, чтобы создать релиз Gitea и загрузить в него файлы (`false` по умолчанию — только артефакты сборки);
|
||||
- `tag` — тег релиза при `publish=true` (например `repeater-mqtt-v2026.10.0`).
|
||||
|
||||
Для публикации в репозитории должен быть задан секрет `GITEA_TOKEN` (personal access token с правом `write:repository`).
|
||||
|
||||
Требования к раннеру: Linux с Docker, интернет, `python3` ≥ 3.11, `git`, `curl` и не меньше 20 ГБ свободного места — PlatformIO скачивает тулчейны ESP32 при первой сборке (шаг кэша `~/.platformio` ускоряет последующие запуски). Полная сборка всех MQTT-таргетов идёт долго, поэтому удобнее запускать по группам.
|
||||
|
||||
## Ручная выгрузка в релиз
|
||||
|
||||
Если прошивки собраны локально (каталог `out/`), файлы можно загрузить в релиз Gitea скриптом:
|
||||
|
||||
```bash
|
||||
GITEA_TOKEN=<token> posadmesh-tools/publish-gitea-release.sh \
|
||||
repeater-mqtt-v2026.10.0 out "Repeater MQTT v2026.10.0"
|
||||
```
|
||||
|
||||
Скрипт создаёт релиз, если его ещё нет, и повторный запуск не дублирует уже загруженные файлы. Адрес инстанса и репозиторий можно переопределить переменными `GITEA_URL` и `GITEA_REPO`.
|
||||
|
||||
Тег удобнее создать заранее на нужном коммите (см. порядок выпуска ниже): тогда релиз привяжется к существующему тегу. Если тега нет, Gitea создаст его сам от HEAD ветки по умолчанию — для релизов этого лучше избегать.
|
||||
|
||||
Каждый трек публикуется в свой релиз: соберите группу (`uplink`, `espnow` или `bridge`) и выгрузите её файлы под тегом этого трека. Каталог `out/` очищается в начале каждой сборки, поэтому в релиз попадут файлы только одной группы.
|
||||
|
||||
## Версии сборки
|
||||
|
||||
@@ -12,54 +44,49 @@
|
||||
```bash
|
||||
export FIRMWARE_VERSION=v1.15.0
|
||||
export POSADMESH_VERSION=v2026.5.1
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_observer
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_mqtt
|
||||
```
|
||||
|
||||
## Теги релизов PosadMesh
|
||||
|
||||
Один или несколько тегов следующих форматов помечают релиз соответствующего трека:
|
||||
|
||||
- `companion-wifi-v1.15.0`
|
||||
- `repeater-bridge-espnow-v1.15.0`
|
||||
- `observer-posadmesh-bridge-espnow-v2026.5.1`
|
||||
- `observer-posadmesh-bridge-mqtt-v2026.7.0`
|
||||
- `observer-posadmesh-v2026.5.1`
|
||||
- `repeater-mqtt-espnow-v2026.5.1`
|
||||
- `repeater-mqtt-bridge-v2026.7.0`
|
||||
- `repeater-mqtt-v2026.5.1`
|
||||
|
||||
В `companion-wifi-v1.15.0` используется версия upstream MeshCore.
|
||||
В `repeater-bridge-espnow-v1.15.0` используется версия upstream MeshCore.
|
||||
В `observer-posadmesh-bridge-espnow-v2026.5.1` используется версия релиза PosadMesh.
|
||||
В `observer-posadmesh-bridge-mqtt-v2026.7.0` используется версия релиза PosadMesh.
|
||||
В `observer-posadmesh-v2026.5.1` используется версия релиза PosadMesh.
|
||||
В `repeater-mqtt-espnow-v2026.5.1` используется версия релиза PosadMesh.
|
||||
В `repeater-mqtt-bridge-v2026.7.0` используется версия релиза PosadMesh.
|
||||
В `repeater-mqtt-v2026.5.1` используется версия релиза PosadMesh.
|
||||
|
||||
Соответствие тегов и треков:
|
||||
|
||||
- `companion-wifi-v*` — прошивка companion WiFi
|
||||
- `repeater-bridge-espnow-v*` — прошивка ESP-NOW-моста репитера
|
||||
- `observer-posadmesh-bridge-espnow-v*` — прошивка обсервера с ESP-NOW
|
||||
- `observer-posadmesh-bridge-mqtt-v*` — прошивка обсервера с MQTT-мостом
|
||||
- `observer-posadmesh-v*` — прошивка обсервера
|
||||
- `repeater-mqtt-espnow-v*` — прошивка MQTT-репитера с ESP-NOW
|
||||
- `repeater-mqtt-bridge-v*` — прошивка MQTT-репитера с MQTT-мостом
|
||||
- `repeater-mqtt-v*` — прошивка MQTT-репитера
|
||||
|
||||
Сборка выполняется локально для нужного таргета; тегов на одном коммите может быть несколько.
|
||||
|
||||
## Итоговая версия прошивки
|
||||
|
||||
- `companion-wifi` использует версию из тега как `FIRMWARE_VERSION`
|
||||
- `repeater-bridge-espnow` использует версию из тега как `FIRMWARE_VERSION`
|
||||
- `observer-posadmesh-bridge-espnow` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
|
||||
- `observer-posadmesh-bridge-mqtt` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
|
||||
- `observer-posadmesh` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
|
||||
- `repeater-mqtt-espnow` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
|
||||
- `repeater-mqtt-bridge` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
|
||||
- `repeater-mqtt` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
|
||||
|
||||
Итоговая строка версии зависит от трека:
|
||||
|
||||
- `companion-wifi`: `v1.15.0-<commit>`
|
||||
- `repeater-bridge-espnow`: `v1.15.0-<commit>`
|
||||
- `observer-posadmesh-bridge-espnow`: `v1.15.0-posadmesh-v2026.5.1-<commit>`
|
||||
- `observer-posadmesh-bridge-mqtt`: `v1.15.0-posadmesh-v2026.7.0-<commit>`
|
||||
- `observer-posadmesh`: `v1.15.0-posadmesh-v2026.5.1-<commit>`
|
||||
- `repeater-mqtt-espnow`: `v1.15.0-posadmesh-v2026.5.1-<commit>`
|
||||
- `repeater-mqtt-bridge`: `v1.15.0-posadmesh-v2026.7.0-<commit>`
|
||||
- `repeater-mqtt`: `v1.15.0-posadmesh-v2026.5.1-<commit>`
|
||||
|
||||
Пример:
|
||||
|
||||
- тег: `observer-posadmesh-v2026.5.1`
|
||||
- тег: `repeater-mqtt-v2026.5.1`
|
||||
- переменные: `FIRMWARE_VERSION=v1.15.0`, `POSADMESH_VERSION=v2026.5.1`
|
||||
- итоговая версия сборки: `v1.15.0-posadmesh-v2026.5.1-abcdef`
|
||||
|
||||
@@ -79,16 +106,15 @@ bash posadmesh-build.sh build-firmware heltec_v4_repeater_observer
|
||||
```bash
|
||||
export FIRMWARE_VERSION=v1.15.0
|
||||
export POSADMESH_VERSION=v2026.5.1
|
||||
bash posadmesh-build.sh build-observer-firmwares
|
||||
bash posadmesh-build.sh build-repeater-mqtt-firmwares
|
||||
|
||||
git tag observer-posadmesh-v2026.5.1
|
||||
git push origin observer-posadmesh-v2026.5.1
|
||||
git tag repeater-mqtt-v2026.5.1
|
||||
git push origin repeater-mqtt-v2026.5.1
|
||||
```
|
||||
|
||||
## Поддерживаемые теги
|
||||
|
||||
- `companion-wifi-v1.15.0`
|
||||
- `repeater-bridge-espnow-v1.15.0`
|
||||
- `observer-posadmesh-bridge-espnow-v2026.5.1`
|
||||
- `observer-posadmesh-bridge-mqtt-v2026.7.0`
|
||||
- `observer-posadmesh-v2026.5.1`
|
||||
- `repeater-mqtt-espnow-v2026.5.1`
|
||||
- `repeater-mqtt-bridge-v2026.7.0`
|
||||
- `repeater-mqtt-v2026.5.1`
|
||||
|
||||
+51
-80
@@ -28,48 +28,36 @@ sh posadmesh-build.sh <command> [target]
|
||||
Commands:
|
||||
help|usage|-h|--help: Shows this message.
|
||||
list|-l: List firmwares available to build.
|
||||
list-mqtt: List only the PosadMesh MQTT build targets.
|
||||
build-firmware <target>: Build the firmware for the given build target.
|
||||
build-firmwares: Build all firmwares for all targets.
|
||||
build-firmwares: Build all PosadMesh MQTT firmwares.
|
||||
build-mqtt-firmwares: Build all MQTT firmwares (uplink, ESP-NOW bridge and MQTT bridge).
|
||||
build-matching-firmwares <build-match-spec>: Build all firmwares for build targets containing the string given for <build-match-spec>.
|
||||
build-companion-firmwares: Build all companion firmwares for all build targets.
|
||||
build-companion-wifi-firmwares: Build all companion WiFi firmwares for all build targets.
|
||||
build-repeater-firmwares: Build all repeater firmwares for all build targets.
|
||||
build-repeater-bridge-espnow-firmwares: Build all repeater ESP-NOW bridge firmwares for all build targets.
|
||||
build-observer-firmwares: Build all observer firmwares for all build targets.
|
||||
build-observer-espnow-firmwares: Build all observer ESP-NOW firmwares for all build targets.
|
||||
build-observer-mqtt-bridge-firmwares: Build all observer MQTT bridge firmwares for all build targets.
|
||||
build-room-server-firmwares: Build all chat room server firmwares for all build targets.
|
||||
build-repeater-mqtt-firmwares: Build the MQTT uplink firmwares.
|
||||
build-repeater-mqtt-espnow-firmwares: Build the MQTT uplink firmwares that also run a local ESP-NOW bridge.
|
||||
build-repeater-mqtt-bridge-firmwares: Build the MQTT bridge firmwares.
|
||||
build-repeater-firmwares: Build all upstream repeater firmwares.
|
||||
build-repeater-bridge-espnow-firmwares: Build all repeater ESP-NOW bridge firmwares.
|
||||
build-room-server-firmwares: Build all chat room server firmwares.
|
||||
|
||||
Examples:
|
||||
Build firmware for the "RAK_4631_repeater" device target
|
||||
$ sh posadmesh-build.sh build-firmware RAK_4631_repeater
|
||||
Build firmware for the "heltec_v4_repeater_mqtt" device target
|
||||
$ sh posadmesh-build.sh build-firmware heltec_v4_repeater_mqtt
|
||||
|
||||
Build all firmwares for device targets containing the string "RAK_4631"
|
||||
$ sh posadmesh-build.sh build-matching-firmwares <build-match-spec>
|
||||
Build all MQTT firmwares
|
||||
$ sh posadmesh-build.sh build-mqtt-firmwares
|
||||
|
||||
Build all companion firmwares
|
||||
$ sh posadmesh-build.sh build-companion-firmwares
|
||||
Build the MQTT uplink firmwares
|
||||
$ sh posadmesh-build.sh build-repeater-mqtt-firmwares
|
||||
|
||||
Build all companion WiFi firmwares
|
||||
$ sh posadmesh-build.sh build-companion-wifi-firmwares
|
||||
Build the MQTT uplink firmwares with the local ESP-NOW bridge
|
||||
$ sh posadmesh-build.sh build-repeater-mqtt-espnow-firmwares
|
||||
|
||||
Build all repeater firmwares
|
||||
$ sh posadmesh-build.sh build-repeater-firmwares
|
||||
Build the MQTT bridge firmwares
|
||||
$ sh posadmesh-build.sh build-repeater-mqtt-bridge-firmwares
|
||||
|
||||
Build all repeater ESP-NOW bridge firmwares
|
||||
$ sh posadmesh-build.sh build-repeater-bridge-espnow-firmwares
|
||||
|
||||
Build all observer firmwares
|
||||
$ sh posadmesh-build.sh build-observer-firmwares
|
||||
|
||||
Build all observer ESP-NOW firmwares
|
||||
$ sh posadmesh-build.sh build-observer-espnow-firmwares
|
||||
|
||||
Build all observer MQTT bridge firmwares
|
||||
$ sh posadmesh-build.sh build-observer-mqtt-bridge-firmwares
|
||||
|
||||
Build all chat room server firmwares
|
||||
$ sh posadmesh-build.sh build-room-server-firmwares
|
||||
Build all firmwares for device targets containing the string "Xiao"
|
||||
$ sh posadmesh-build.sh build-matching-firmwares Xiao
|
||||
|
||||
Environment Variables:
|
||||
DISABLE_DEBUG=1: Disables all debug logging flags (MESH_DEBUG, MESH_PACKET_LOGGING, etc.)
|
||||
@@ -96,7 +84,7 @@ import sys
|
||||
for section, _options in json.load(sys.stdin):
|
||||
if section.startswith('env:'):
|
||||
print(section[4:])
|
||||
"
|
||||
" | tr -d '\r'
|
||||
}
|
||||
|
||||
# Catch cries for help before doing anything else.
|
||||
@@ -111,6 +99,12 @@ case $1 in
|
||||
get_pio_envs
|
||||
exit 0
|
||||
;;
|
||||
list-mqtt)
|
||||
require_uv
|
||||
sync_python_tooling
|
||||
get_pio_envs | grep -E '_(repeater_mqtt|repeater_mqtt_espnow|repeater_mqtt_bridge)$' | sort
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# cache project config json for use in get_platform_for_env()
|
||||
@@ -157,7 +151,7 @@ for section, options in data:
|
||||
if match:
|
||||
print(match.group(1))
|
||||
sys.exit(0)
|
||||
"
|
||||
" | tr -d '\r'
|
||||
}
|
||||
|
||||
# disable all debug logging flags if DISABLE_DEBUG=1 is set
|
||||
@@ -171,15 +165,13 @@ get_firmware_build_date() {
|
||||
local env_name="$1"
|
||||
local header="examples/simple_repeater/MyMesh.h"
|
||||
|
||||
if [[ "$env_name" == *companion_radio* ]]; then
|
||||
header="examples/companion_radio/MyMesh.h"
|
||||
elif [[ "$env_name" == *room_server* ]]; then
|
||||
if [[ "$env_name" == *room_server* ]]; then
|
||||
header="examples/simple_room_server/MyMesh.h"
|
||||
elif [[ "$env_name" == *sensor* ]]; then
|
||||
header="examples/simple_sensor/SensorMesh.h"
|
||||
fi
|
||||
|
||||
sed -n 's/^[[:space:]]*#define[[:space:]][[:space:]]*FIRMWARE_BUILD_DATE[[:space:]][[:space:]]*"\([^"]*\)".*/\1/p' "$header" | head -n 1
|
||||
sed -n 's/^[[:space:]]*#define[[:space:]][[:space:]]*FIRMWARE_BUILD_DATE[[:space:]][[:space:]]*"\([^"]*\)".*/\1/p' "$header" | head -n 1 | tr -d '\r'
|
||||
}
|
||||
|
||||
# build firmware for the provided pio env in $1
|
||||
@@ -293,47 +285,30 @@ build_repeater_bridge_espnow_firmwares() {
|
||||
|
||||
}
|
||||
|
||||
build_companion_firmwares() {
|
||||
build_repeater_mqtt_firmwares() {
|
||||
|
||||
# # build specific companion firmwares
|
||||
# build_firmware "Heltec_v2_companion_radio_usb"
|
||||
# build_firmware "Heltec_v2_companion_radio_ble"
|
||||
# build_firmware "Heltec_v3_companion_radio_usb"
|
||||
# build_firmware "Heltec_v3_companion_radio_ble"
|
||||
# build_firmware "Xiao_S3_WIO_companion_radio_ble"
|
||||
# build_firmware "LilyGo_T3S3_sx1262_companion_radio_usb"
|
||||
# build_firmware "LilyGo_T3S3_sx1262_companion_radio_ble"
|
||||
# build_firmware "RAK_4631_companion_radio_usb"
|
||||
# build_firmware "RAK_4631_companion_radio_ble"
|
||||
# build_firmware "t1000e_companion_radio_ble"
|
||||
|
||||
# build all companion firmwares
|
||||
build_all_firmwares_by_suffix "_companion_radio_usb"
|
||||
build_all_firmwares_by_suffix "_companion_radio_ble"
|
||||
build_all_firmwares_by_suffix "_repeater_mqtt"
|
||||
|
||||
}
|
||||
|
||||
build_companion_wifi_firmwares() {
|
||||
build_repeater_mqtt_espnow_firmwares() {
|
||||
|
||||
build_all_firmwares_by_suffix "_companion_radio_wifi"
|
||||
build_all_firmwares_by_suffix "_repeater_mqtt_espnow"
|
||||
|
||||
}
|
||||
|
||||
build_repeater_observer_firmwares() {
|
||||
build_repeater_mqtt_bridge_firmwares() {
|
||||
|
||||
build_all_firmwares_by_suffix "_repeater_observer"
|
||||
build_all_firmwares_by_suffix "_repeater_mqtt_bridge"
|
||||
|
||||
}
|
||||
|
||||
build_repeater_observer_espnow_firmwares() {
|
||||
# every MQTT firmware track: uplink, uplink with ESP-NOW bridge, and MQTT bridge
|
||||
build_mqtt_firmwares() {
|
||||
|
||||
build_all_firmwares_by_suffix "_repeater_observer_espnow"
|
||||
|
||||
}
|
||||
|
||||
build_repeater_observer_mqtt_bridge_firmwares() {
|
||||
|
||||
build_all_firmwares_by_suffix "_repeater_observer_mqtt_bridge"
|
||||
build_repeater_mqtt_firmwares
|
||||
build_repeater_mqtt_espnow_firmwares
|
||||
build_repeater_mqtt_bridge_firmwares
|
||||
|
||||
}
|
||||
|
||||
@@ -349,9 +324,7 @@ build_room_server_firmwares() {
|
||||
}
|
||||
|
||||
build_firmwares() {
|
||||
build_companion_firmwares
|
||||
build_repeater_firmwares
|
||||
build_room_server_firmwares
|
||||
build_mqtt_firmwares
|
||||
}
|
||||
|
||||
# clean build dir
|
||||
@@ -378,20 +351,18 @@ elif [[ $1 == "build-matching-firmwares" ]]; then
|
||||
fi
|
||||
elif [[ $1 == "build-firmwares" ]]; then
|
||||
build_firmwares
|
||||
elif [[ $1 == "build-companion-firmwares" ]]; then
|
||||
build_companion_firmwares
|
||||
elif [[ $1 == "build-companion-wifi-firmwares" ]]; then
|
||||
build_companion_wifi_firmwares
|
||||
elif [[ $1 == "build-mqtt-firmwares" ]]; then
|
||||
build_mqtt_firmwares
|
||||
elif [[ $1 == "build-repeater-firmwares" ]]; then
|
||||
build_repeater_firmwares
|
||||
elif [[ $1 == "build-repeater-bridge-espnow-firmwares" ]]; then
|
||||
build_repeater_bridge_espnow_firmwares
|
||||
elif [[ $1 == "build-observer-firmwares" ]]; then
|
||||
build_repeater_observer_firmwares
|
||||
elif [[ $1 == "build-observer-espnow-firmwares" ]]; then
|
||||
build_repeater_observer_espnow_firmwares
|
||||
elif [[ $1 == "build-observer-mqtt-bridge-firmwares" ]]; then
|
||||
build_repeater_observer_mqtt_bridge_firmwares
|
||||
elif [[ $1 == "build-repeater-mqtt-firmwares" ]]; then
|
||||
build_repeater_mqtt_firmwares
|
||||
elif [[ $1 == "build-repeater-mqtt-espnow-firmwares" ]]; then
|
||||
build_repeater_mqtt_espnow_firmwares
|
||||
elif [[ $1 == "build-repeater-mqtt-bridge-firmwares" ]]; then
|
||||
build_repeater_mqtt_bridge_firmwares
|
||||
elif [[ $1 == "build-room-server-firmwares" ]]; then
|
||||
build_room_server_firmwares
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Веб-API репитера
|
||||
|
||||
Эта страница описывает локальный HTTPS API, который предоставляют сборки PosadMesh `*_repeater_observer` с поддержкой веб-панели.
|
||||
Эта страница описывает локальный HTTPS API, который предоставляют сборки PosadMesh `*_repeater_mqtt` с поддержкой веб-панели.
|
||||
|
||||
Он предназначен для:
|
||||
|
||||
@@ -34,7 +34,7 @@ curl -sk https://<repeater-ip>/api/command \
|
||||
|
||||
API доступен только когда:
|
||||
|
||||
- вы запускаете поддерживаемую сборку прошивки `*_repeater_observer`
|
||||
- вы запускаете поддерживаемую сборку прошивки `*_repeater_mqtt`
|
||||
- веб-панель репитера включена и работает
|
||||
- репитер доступен из локальной сети
|
||||
- вы прошли аутентификацию с паролем администратора репитера
|
||||
|
||||
+14
-57
@@ -4,33 +4,25 @@
|
||||
|
||||
## С чего начать
|
||||
|
||||
Если вы новичок в железе MeshCore и просто хотите разумную отправную точку, сначала решите, будет устройство companion-радио или репитером.
|
||||
|
||||
Для companion-радио думайте о Wi-Fi-эндпоинте автоматизации:
|
||||
|
||||
- используйте сборки companion Wi-Fi, когда другой системе — например, Home Assistant, RemoteTerm или вашему собственному инструментарию — нужно подключаться к MeshCore по Wi-Fi
|
||||
- обычно это не устройства для повседневной ручной работы, поэтому экран здесь скорее опция, чем обязательное требование
|
||||
- платы без экрана или простые платы часто подходят, когда companion-радио будет стоять рядом с питанием и управляться из другого приложения или системы автоматизации
|
||||
- смотрите таблицы companion-радио ниже, если вам всё же нужен дисплей, GPS или более полный набор на плате
|
||||
Если вы новичок в железе MeshCore и просто хотите разумную отправную точку, сначала решите, каким будет устройство: MQTT/веб-репитером или репитером-мостом.
|
||||
|
||||
Для MQTT/веб-репитеров думайте о Wi-Fi, видимости в брокере и достаточном запасе для локальной веб-панели:
|
||||
|
||||
- обычные отправные точки — `Heltec_v3` и `heltec_v4`
|
||||
- `heltec_v4_repeater_observer` — сильный универсальный выбор обсервера с GPS, PSRAM и 16 MB флеш-памяти
|
||||
- `heltec_v4_repeater_mqtt` — сильный универсальный выбор MQTT-репитера с GPS, PSRAM и 16 MB флеш-памяти
|
||||
- выбирайте платы с большим объёмом флеш-памяти и PSRAM, если вам нужны MQTT вместе с локальной веб-панелью, статистика или больше запаса под будущие функции
|
||||
- экраны не являются важным требованием, потому что у обсерверов есть локальная веб-панель для настройки и диагностики
|
||||
- экраны не являются важным требованием, потому что у MQTT-репитеров есть локальная веб-панель для настройки и диагностики
|
||||
- репитеры без экрана часто оказываются самым чистым решением, когда устройство будет жить на крыше, в корпусе или в стационарной установке, а настраивать вы будете его из веб-панели, последовательной консоли или приложения
|
||||
|
||||
Для репитеров-мостов думайте о локальном радиосвязывании между близко расположенными репитерами:
|
||||
|
||||
- используйте прошивку моста, когда двум локальным репитерам нужно обмениваться трафиком между разными радиоконфигурациями MeshCore, например `Australia (Narrow)` и `Australia (Mid)`
|
||||
- используйте прошивку моста, когда двум локальным репитерам нужно обмениваться трафиком между разными радиоконфигурациями MeshCore — например, с разной полосой пропускания и SF
|
||||
- чистым репитерам-мостам ESP-NOW не нужны ни MQTT, ни веб-панель PosadMesh, ни экран
|
||||
- ставьте на первое место стабильное питание, подходящие антенны и размещение, а не возможности дисплея
|
||||
- используйте `observer-posadmesh-bridge-espnow` только когда тому же репитеру нужны ещё и MQTT-аплинк, и локальный мост ESP-NOW; иначе `repeater-bridge-espnow` делает роль проще
|
||||
- используйте `repeater-mqtt-espnow` только когда тому же репитеру нужны ещё и MQTT-аплинк, и локальный мост ESP-NOW; иначе `repeater-bridge-espnow` делает роль проще
|
||||
|
||||
Другие примечания:
|
||||
|
||||
- экраны важнее для companion-радио или стендовых/полевых устройств, чем для стационарных репитеров
|
||||
- если вам действительно нужен встроенный экран, которым люди будут пользоваться, предпочитайте платы с TFT
|
||||
- если нужен экран состояния с низким энергопотреблением, предпочитайте платы с электронной бумагой
|
||||
- если важно определение местоположения или мобильное использование, предпочитайте платы с поддержкой GPS, например семейство T-Beam, `heltec_tracker_v2`, `Heltec_v3`, `heltec_v4` или `ThinkNode_M5`
|
||||
@@ -40,7 +32,7 @@
|
||||
|
||||
Таблицы ниже построены на основе метаданных плат PlatformIO из репозитория и флагов сборки вариантов.
|
||||
|
||||
- `Target` — краткое имя платы, используемое на этой странице сравнения. Имена файлов релизов и локальные команды сборки по-прежнему используют полные имена env, например `heltec_v4_repeater_observer`.
|
||||
- `Target` — краткое имя платы, используемое на этой странице сравнения. Имена файлов релизов и локальные команды сборки по-прежнему используют полные имена env, например `heltec_v4_repeater_mqtt`.
|
||||
- `MCU` показывает только семейство чипа. Фактовая рабочая частота может различаться в зависимости от env и конфигурации платы.
|
||||
- `RAM` — встроенная память RAM микроконтроллера.
|
||||
- `PSRAM` — дополнительная память на некоторых платах. Больше PSRAM обычно означает больше запаса для интерфейса, MQTT и будущих функций.
|
||||
@@ -49,11 +41,10 @@
|
||||
|
||||
## Примечания по трекам
|
||||
|
||||
- Платы `companion-wifi` предназначены для companion-устройств, подключаемых к приложению.
|
||||
- Платы `observer-posadmesh` предназначены для Wi-Fi-репитеров, публикующих данные в MQTT.
|
||||
- Платы `repeater-bridge-espnow` и `observer-posadmesh-bridge-espnow` предназначены для использования в качестве локального моста ESP-NOW между близко расположенными репитерами с разными радиоконфигурациями MeshCore.
|
||||
- Платы `repeater-mqtt` предназначены для Wi-Fi-репитеров, публикующих данные в MQTT.
|
||||
- Платы `repeater-bridge-espnow` и `repeater-mqtt-espnow` предназначены для использования в качестве локального моста ESP-NOW между близко расположенными репитерами с разными радиоконфигурациями MeshCore.
|
||||
|
||||
Прошивка моста — это не MQTT через WAN и не мост через VPN. Используйте её, когда двум локальным репитерам нужно обмениваться трафиком между радиоконфигурациями, такими как `Australia (Narrow)` и `Australia (Mid)`.
|
||||
Прошивка моста — это не MQTT через WAN и не мост через VPN. Используйте её, когда двум локальным репитерам нужно обмениваться трафиком между разными радиоконфигурациями, например с разной полосой пропускания и SF.
|
||||
|
||||
## Дополнительные признаки
|
||||
|
||||
@@ -106,9 +97,9 @@
|
||||
|
||||
\* Эти таргеты используют PA или RF-фронтенд, поэтому фактическая выходная мощность может быть заметно выше заданной в `LORA_TX_POWER`.
|
||||
|
||||
## Платы `repeater_observer`
|
||||
## Платы `repeater_mqtt`
|
||||
|
||||
В таблице перечислены все обсервер-таргеты, определённые сейчас в `variants/posadmesh_mqtt/platformio.ini`.
|
||||
В таблице перечислены все MQTT-таргеты, определённые сейчас в `variants/posadmesh_mqtt/platformio.ini`.
|
||||
|
||||
| Target | MCU | RAM | PSRAM | Flash | LoRa | Display | GPS | SD |
|
||||
| ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- | --- |
|
||||
@@ -155,42 +146,8 @@
|
||||
- `🧪` — аппаратно плата, скорее всего, поддерживает TF/microSD, но интеграцию для конкретной платы в PosadMesh ещё нужно проверить, прежде чем считать её поддерживаемой.
|
||||
- Для текущего архива статистики карты microSD `4 GB` `FAT32` более чем достаточно. Карты большего объёма тоже поддерживаются.
|
||||
|
||||
## Платы `companion_radio_wifi` с дисплеем
|
||||
|
||||
Это Wi-Fi companion-таргеты, у которых настроен дисплей для локального статуса, подсказок при настройке или эпизодического прямого взаимодействия.
|
||||
|
||||
| Target | MCU | RAM | PSRAM | Flash | LoRa | Display | GPS |
|
||||
| ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- |
|
||||
| Heltec_v2 | ESP32 | 520 KB | No | 8 MB | SX1276 | OLED (SSD1306) | |
|
||||
| Heltec_v3 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | OLED (SSD1306) | ✅ |
|
||||
| heltec_tracker_v2 | ESP32S3 | 512 KB | No | 8MB | SX1262 | TFT (ST7735) | ✅ |
|
||||
| heltec_v4 | ESP32S3 | 512 KB | 2 MB | 16MB | SX1262 | OLED (SSD1306) | ✅ |
|
||||
| heltec_v4_tft | ESP32S3 | 512 KB | 2 MB | 16MB | SX1262 | TFT (ST7789) | ✅ |
|
||||
| LilyGo_TBeam_1W | ESP32S3 | 512 KB | 8 MB | 16MB | SX1262 | OLED (SH1106) | ✅ |
|
||||
| LilyGo_TLora_V2_1_1_6 | ESP32 | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | ✅ |
|
||||
| nibble_screen_connect | ESP32S3 | 512 KB | No | 4MB | SX1262 | OLED (SSD1306) | |
|
||||
| Station_G2 | ESP32S3 | 512 KB | 8 MB | 16MB | SX1262 | OLED (SH1106) | ✅ |
|
||||
| T_Beam_S3_Supreme_SX1262 | ESP32S3 | 512 KB | 8 MB | 8MB | SX1262 | OLED (SH1106) | ✅ |
|
||||
| ThinkNode_M2 | ESP32S3 | 512 KB | No | 4MB | SX1262 | OLED (SH1106) | |
|
||||
| ThinkNode_M5 | ESP32S3 | 512 KB | No | 4MB | SX1262 | E-paper (GxEPD) | ✅ |
|
||||
|
||||
## Платы `companion_radio_wifi` без дисплея
|
||||
|
||||
Это Wi-Fi companion-таргеты, где основной интерфейс — приложение companion. Для многих пользователей это лучший повседневный вариант.
|
||||
|
||||
| Target | MCU | RAM | PSRAM | Flash | LoRa | GPS |
|
||||
| ----------------------- | ------- | ------ | ----- | ----- | ------ | --- |
|
||||
| Heltec_WSL3 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | ✅ |
|
||||
| RAK_3112 | ESP32S3 | 512 KB | No | 8 MB | SX1262 | ✅ |
|
||||
| Xiao_S3_LoRa2021F33-2G4 | ESP32S3 | 512 KB | No | 8 MB | LR2021 | |
|
||||
| Xiao_S3_WIO | ESP32S3 | 512 KB | No | 8 MB | SX1262 | ✅ |
|
||||
|
||||
## Практические рекомендации
|
||||
|
||||
- Лучший универсальный обсервер с экраном и хорошим запасом ресурсов: `heltec_v4_repeater_observer`, `heltec_v4_tft_repeater_observer`, `Station_G2_repeater_observer`, `LilyGo_TBeam_1W_repeater_observer`.
|
||||
- Лучший обсервер для простой установки без дисплея: `RAK_3112_repeater_observer`, `Generic_E22_sx1262_repeater_observer`, `Meshimi_repeater_observer`, `Xiao_C6_repeater_observer`.
|
||||
- Лучшие малопотребляющие сборки обсервера с дисплеем: `Heltec_E213_repeater_observer`, `Heltec_E290_repeater_observer`, `Heltec_Wireless_Paper_repeater_observer`, `ThinkNode_M5_Repeater_observer`.
|
||||
- Лучший выбор companion, если нужен самый богатый локальный интерфейс: `heltec_v4_tft_companion_radio_wifi` и `heltec_tracker_v2_companion_radio_wifi`.
|
||||
- Лучший выбор companion, если нужен максимальный запас памяти: `T_Beam_S3_Supreme_SX1262_companion_radio_wifi`, `Station_G2_companion_radio_wifi`, `LilyGo_TBeam_1W_companion_radio_wifi`.
|
||||
- Лучший выбор companion, если достаточно приложения и работы почти без дисплея: `RAK_3112_companion_radio_wifi`, `Xiao_S3_WIO_companion_radio_wifi`, `Station_G2_companion_radio_wifi`.
|
||||
- Лучший выбор companion, если вы предпочитаете OLED вместо TFT: `T_Beam_S3_Supreme_SX1262_companion_radio_wifi`, `heltec_v4_companion_radio_wifi`, `LilyGo_TBeam_1W_companion_radio_wifi`.
|
||||
- Лучший универсальный MQTT-репитер с экраном и хорошим запасом ресурсов: `heltec_v4_repeater_mqtt`, `heltec_v4_tft_repeater_mqtt`, `Station_G2_repeater_mqtt`, `LilyGo_TBeam_1W_repeater_mqtt`.
|
||||
- Лучший MQTT-репитер для простой установки без дисплея: `RAK_3112_repeater_mqtt`, `Generic_E22_sx1262_repeater_mqtt`, `Meshimi_repeater_mqtt`, `Xiao_C6_repeater_mqtt`.
|
||||
- Лучшие малопотребляющие сборки MQTT-репитера с дисплеем: `Heltec_E213_repeater_mqtt`, `Heltec_E290_repeater_mqtt`, `Heltec_Wireless_Paper_repeater_mqtt`, `ThinkNode_M5_repeater_mqtt`.
|
||||
|
||||
+17
-102
@@ -16,7 +16,7 @@ set mqtt.iata <code>
|
||||
get mqtt.status
|
||||
```
|
||||
|
||||
Для обсерверов с локальной веб-панелью также полезны:
|
||||
Для MQTT-репитеров с локальной веб-панелью также полезны:
|
||||
|
||||
```text
|
||||
set web on
|
||||
@@ -24,11 +24,11 @@ get web.status
|
||||
set web off
|
||||
```
|
||||
|
||||
Используйте `set web on` при настройке или диагностике, а затем `set web off`, когда стационарному обсерверу нужен максимальный запас памяти.
|
||||
Используйте `set web on` при настройке или диагностике, а затем `set web off`, когда стационарному MQTT-репитеру нужен максимальный запас памяти.
|
||||
|
||||
## Команды обсервера
|
||||
## Команды MQTT-репитера
|
||||
|
||||
Эти команды доступны в таргетах прошивки `*_repeater_observer`.
|
||||
Эти команды доступны в таргетах прошивки `*_repeater_mqtt`.
|
||||
|
||||
Команды `get` без аргументов нужно вводить точно так, как показано.
|
||||
|
||||
@@ -80,7 +80,7 @@ set web off
|
||||
|
||||
Примечания:
|
||||
|
||||
- новые установки обсерверов по умолчанию задают для `mqtt.iata` значение `UNSET`
|
||||
- новые установки MQTT-репитеров по умолчанию задают для `mqtt.iata` значение `UNSET`
|
||||
- одновременно можно включить максимум два MQTT-брокера
|
||||
- если `mqtt.iata` имеет значение `UNSET`, включённые MQTT-брокеры не подключатся
|
||||
- пользовательский MQTT использует настроенные имя пользователя и пароль, а не аутентификацию JWT
|
||||
@@ -94,7 +94,7 @@ set web off
|
||||
|
||||
- `mqtt.meshcoretel.ru`
|
||||
|
||||
### Настройки Wi-Fi для обсерверов
|
||||
### Настройки Wi-Fi для MQTT-репитеров
|
||||
|
||||
- `get wifi.status`: показывает SSID, состояние подключения, необработанный код статуса Wi-Fi, IP, канал и уровень сигнала при подключении, а также состояние шлюза (`gw:ok|lost`) и счётчик переподключений сторожевым таймером (`wd:<n>`).
|
||||
- `get wifi.ssid`: показывает настроенный SSID Wi-Fi.
|
||||
@@ -104,9 +104,9 @@ set web off
|
||||
- `set wifi.powersaving none|min|max`: задаёт режим энергосбережения Wi-Fi.
|
||||
- `wifi reconnect`: разрывает текущее соединение и переподключается с полным сканированием каналов. Используйте, когда узел сообщает о подключении, но недоступен по сети.
|
||||
|
||||
Обсерверы также используют сторожевой таймер связи: пока Wi-Fi сообщает о подключении, узел каждые 30 секунд проверяет свой шлюз через ARP. Если шлюз молчит 3 минуты (например, точка доступа, которая продолжает рассылать beacon после потери проводного аплинка), узел сам принудительно выполняет полное переподключение, увеличивая интервал между попытками вплоть до 48 минут, пока сбой не прекратится. `wd:<n>` в `get wifi.status` считает такие принудительные переподключения с момента загрузки.
|
||||
MQTT-репитеры также используют сторожевой таймер связи: пока Wi-Fi сообщает о подключении, узел каждые 30 секунд проверяет свой шлюз через ARP. Если шлюз молчит 3 минуты (например, точка доступа, которая продолжает рассылать beacon после потери проводного аплинка), узел сам принудительно выполняет полное переподключение, увеличивая интервал между попытками вплоть до 48 минут, пока сбой не прекратится. `wd:<n>` в `get wifi.status` считает такие принудительные переподключения с момента загрузки.
|
||||
|
||||
### Настройки NTP для обсерверов
|
||||
### Настройки NTP для MQTT-репитеров
|
||||
|
||||
- `get ntp.server1`: показывает основной NTP-сервер.
|
||||
- `get ntp.server2`: показывает дополнительный NTP-сервер.
|
||||
@@ -117,20 +117,20 @@ set web off
|
||||
|
||||
Серверы по умолчанию: `au.pool.ntp.org`, `time.google.com` и `time.cloudflare.com`.
|
||||
|
||||
### Настройки моста ESP-NOW для сборок Observer ESP-NOW
|
||||
### Настройки моста ESP-NOW для сборок MQTT ESP-NOW
|
||||
|
||||
Эти команды доступны в таргетах прошивки `*_repeater_observer_espnow`, использующих транспорт моста ESP-NOW.
|
||||
Эти команды доступны в таргетах прошивки `*_repeater_mqtt_espnow`, использующих транспорт моста ESP-NOW.
|
||||
|
||||
Команды моста предназначены для локального использования моста ESP-NOW между близко расположенными репитерами, например для связи репитеров в `Australia (Narrow)` и `Australia (Mid)`. Это не элементы управления MQTT-over-WAN, VPN или интернет-мостом.
|
||||
Команды моста предназначены для локального использования моста ESP-NOW между близко расположенными репитерами, работающими на разных радиоконфигурациях MeshCore — например, с разной полосой пропускания и SF. Это не элементы управления MQTT-over-WAN, VPN или интернет-мостом.
|
||||
|
||||
- `get bridge.channel`: показывает настроенный канал моста ESP-NOW.
|
||||
- `set bridge.channel <channel>`: задаёт канал моста ESP-NOW и перезапускает мост. Используйте значение от `1` до `14`.
|
||||
- `get bridge.secret`: показывает настроенный секрет моста ESP-NOW.
|
||||
- `set bridge.secret <secret>`: задаёт общий секрет моста ESP-NOW и перезапускает мост.
|
||||
|
||||
После выполнения `set bridge.channel` ожидайте кратковременного разрыва соединения моста и веб-панели, пока радио перезапускается. В текущих сборках observer ESP-NOW это может выглядеть как перезагрузка платы.
|
||||
После выполнения `set bridge.channel` ожидайте кратковременного разрыва соединения моста и веб-панели, пока радио перезапускается. В текущих сборках MQTT ESP-NOW это может выглядеть как перезагрузка платы.
|
||||
|
||||
В сборках `*_repeater_observer_espnow`, подключённых к Wi-Fi, канал моста ESP-NOW должен совпадать с активным каналом Wi-Fi 2,4 ГГц:
|
||||
В сборках `*_repeater_mqtt_espnow`, подключённых к Wi-Fi, канал моста ESP-NOW должен совпадать с активным каналом Wi-Fi 2,4 ГГц:
|
||||
|
||||
1. Выполните `get wifi.status`.
|
||||
2. Считайте значение `channel:<n>` из статуса подключённого Wi-Fi.
|
||||
@@ -177,11 +177,11 @@ OK
|
||||
- `get flood.max.advert`: показывает лимит хопов для flood-пакетов advert.
|
||||
- `set flood.max.advert <0-64>`: задаёт лимит хопов для flood-пакетов advert.
|
||||
|
||||
В сборках обсерверов `flood.max.unscoped` по умолчанию равен `64`. Меньшие значения могут ограничить, как далеко повторяется неограниченный flood-трафик, тогда как пересылка scoped/region flood остаётся под управлением `flood.max`.
|
||||
В сборках MQTT-репитеров `flood.max.unscoped` по умолчанию равен `64`. Меньшие значения могут ограничить, как далеко повторяется неограниченный flood-трафик, тогда как пересылка scoped/region flood остаётся под управлением `flood.max`.
|
||||
|
||||
### Отчётность о батарее платы
|
||||
|
||||
- В сборках обсерверов фоновый опрос батареи, используемый для истории MQTT/статуса, ограничен примерно одним разом в минуту. Явные запросы статуса и телеметрии по-прежнему обновляют показание сразу.
|
||||
- В сборках MQTT-репитеров фоновый опрос батареи, используемый для истории MQTT/статуса, ограничен примерно одним разом в минуту. Явные запросы статуса и телеметрии по-прежнему обновляют показание сразу.
|
||||
|
||||
### Управление вентилятором T-Beam 1W
|
||||
|
||||
@@ -217,96 +217,11 @@ OK
|
||||
- панель по-прежнему использует для доступа пароль администратора репитера
|
||||
- команды выполняются с той же осторожностью, как если бы вы вводили их напрямую в CLI репитера
|
||||
- это предназначено для локального административного использования в доверенной сети
|
||||
- `start ota` освобождает локальный слушатель HTTP-редиректа на порту `80`, чтобы слушатель OTA HTTP мог занять его, не останавливая остальные службы репитера, независимо от того, выполнена ли команда из веб-панели, последовательного CLI или удалённого сеанса CLI companion/приложения
|
||||
- `start ota` освобождает локальный слушатель HTTP-редиректа на порту `80`, чтобы слушатель OTA HTTP мог занять его, не останавливая остальные службы репитера, независимо от того, выполнена ли команда из веб-панели, последовательного CLI или удалённого сеанса CLI
|
||||
- если старый слушатель редиректа не освободил порт `80` полностью, слушатель OTA повторяет попытки примерно до 30 секунд, после чего сдаётся
|
||||
- кнопка `Purge SD` в веб-интерфейсе выполняет `purge sd` после подтверждения в браузере
|
||||
- `start ota` использует существующий Wi-Fi-адрес репитера, если он уже подключён, или запускает точку доступа `MeshCore-OTA`, если Wi-Fi не подключён
|
||||
- ярлык Regions в `/app` последовательно выполняет существующие команды регионов MeshCore: `region put au`, `region put au-STATE`, `region allowf au`, `region allowf au-STATE`, затем `region save`
|
||||
|
||||
## Команды восстановления Wi-Fi для companion
|
||||
|
||||
Эти команды доступны в последовательном CLI восстановления для сборок `*_companion_radio_wifi`.
|
||||
|
||||
Чтобы войти в `CLI Rescue`:
|
||||
|
||||
- откройте последовательный монитор на скорости `115200` бод
|
||||
- перезагрузите устройство
|
||||
- удерживайте кнопку пользователя в течение первых 8 секунд после загрузки
|
||||
- дождитесь `========= CLI Rescue =========`
|
||||
|
||||
- `get wifi.status`: показывает настроенный SSID, состояние подключения, необработанный код статуса Wi-Fi, IP, канал и уровень сигнала при подключении.
|
||||
- `get wifi.ssid`: показывает настроенный SSID Wi-Fi.
|
||||
- `get wifi.powersaving`: показывает текущий режим энергосбережения Wi-Fi.
|
||||
- `set wifi.ssid <ssid>`: сохраняет SSID Wi-Fi и сразу повторяет подключение.
|
||||
- `set wifi.pwd <password>`: сохраняет пароль Wi-Fi и сразу повторяет подключение.
|
||||
- `set wifi.powersaving none|min|max`: изменяет режим энергосбережения Wi-Fi.
|
||||
|
||||
Сборки Companion Wi-Fi также по-прежнему поддерживают существующие команды восстановления, такие как:
|
||||
|
||||
- `set pin <6-digit-pin>`
|
||||
- `rebuild`
|
||||
- `erase`
|
||||
- `ls ...`
|
||||
- `cat ...`
|
||||
- `rm ...`
|
||||
- `reboot`
|
||||
|
||||
### Точка доступа для восстановления
|
||||
|
||||
Когда у устройства companion Wi-Fi не настроены учётные данные Wi-Fi или оно не может подключиться
|
||||
к своей настроенной сети в течение 60 секунд, оно поднимает собственную
|
||||
точку доступа `EastMesh-WiFi`, чтобы его можно было восстановить без последовательного кабеля.
|
||||
|
||||
**Пароль точки доступа — это pin устройства, дополненный нулями до 8 цифр** (WPA2 требует
|
||||
не менее 8 символов). Pin подчиняется тем же правилам, что и pin сопряжения Bluetooth в
|
||||
сборках BLE:
|
||||
|
||||
| Устройство | Активный pin | Пароль `EastMesh-WiFi` |
|
||||
| --------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------- |
|
||||
| Есть экран, pin не задан | случайный 6-значный pin при каждой загрузке, отображается как `Pin:NNNNNN` на главном экране | `00NNNNNN` — считайте его с экрана |
|
||||
| Нет экрана, pin не задан | `123456` (по умолчанию) | `00123456` |
|
||||
| Pin задан через `set pin <pin>` | ваш настроенный pin (любое устройство) | ваш pin, дополненный нулями до 8 цифр, например pin `4242` → `00004242` |
|
||||
|
||||
Примечания по pin:
|
||||
|
||||
- на устройствах с экраном pin случаен только до тех пор, пока pin не сохранён; выполните
|
||||
`set pin <pin>` для фиксированного пароля (вступает в силу при следующей загрузке)
|
||||
- устройствам без экрана в общедоступных местах всегда следует задавать собственный pin — `00123456` —
|
||||
это документированное значение по умолчанию, поэтому относитесь к нему как к паролю роутера по умолчанию
|
||||
|
||||
Шаги восстановления:
|
||||
|
||||
1. подключитесь к сети `EastMesh-WiFi` с паролем из таблицы выше
|
||||
2. откройте CLI восстановления командой `telnet 192.168.4.1` (или `nc 192.168.4.1 23`) — все
|
||||
команды восстановления, перечисленные выше, доступны
|
||||
3. `set wifi.ssid <ssid>`, затем `set wifi.pwd <password>` — устройство сразу
|
||||
повторяет подключение к сети с новыми учётными данными
|
||||
4. `reboot` (или просто подождите — см. ниже)
|
||||
|
||||
Пока точка доступа поднята, устройство продолжает повторять попытки подключения к настроенной сети примерно раз в
|
||||
минуту (ожидайте короткий сбой точки доступа при каждой попытке); как только подключение станции
|
||||
успешно, точка доступа восстановления автоматически отключается (это также разрывает
|
||||
ваш сеанс восстановления — это признак того, что всё сработало).
|
||||
|
||||
### Использование приложения companion через AP (роуминг)
|
||||
|
||||
Точка доступа восстановления нужна не только для исправления учётных данных — через неё
|
||||
доступен полный протокол companion, что делает её режимом роумингового доступа, когда устройство
|
||||
находится вне своей настроенной сети:
|
||||
|
||||
1. подключитесь к `EastMesh-WiFi` с паролем, производным от pin (см. таблицу выше)
|
||||
2. в приложении companion MeshCore добавьте/подключите Wi-Fi-устройство с хостом
|
||||
`192.168.4.1` и портом `5000`
|
||||
3. пользуйтесь приложением как обычно — сообщения, контакты и каналы работают через AP
|
||||
|
||||
Примечания по использованию в роуминге:
|
||||
|
||||
- один раз выполните `set pin <pin>`, чтобы пароль точки доступа оставался неизменным между перезагрузками;
|
||||
иначе устройства с экраном выбирают новый случайный pin при каждой загрузке
|
||||
- точка доступа появляется примерно через 60 секунд после загрузки (сначала устройство пытается
|
||||
подключиться к своей настроенной сети) и работает до тех пор, пока эта сеть недоступна
|
||||
- оказавшись снова в зоне действия своей настроенной сети, устройство подключается к ней и
|
||||
автоматически отключает точку доступа — вместо этого переподключите приложение по адресу в локальной сети
|
||||
- ярлык Regions в `/app` последовательно выполняет команды регионов MeshCore: `region put` и `region allowf` для базового региона и вложенного, затем `region save`
|
||||
|
||||
## Скрипт проверки состояния heap
|
||||
|
||||
|
||||
+16
-21
@@ -2,14 +2,14 @@
|
||||
|
||||
MeshCore-Posadmesh сохраняет upstream-прошивку MeshCore без изменений и публикует четыре трека прошивок в зависимости от того, как устройству нужно подключаться:
|
||||
|
||||
- `companion-wifi`: используйте для companion-устройств с подключением по Wi-Fi. Этот трек наиболее близок к upstream MeshCore и добавляет команды аварийного восстановления/настройки Wi-Fi от PosadMesh.
|
||||
- `repeater-bridge-espnow`: используйте, когда нужен обычный репитерный мост ESP-NOW в стиле upstream, без MQTT-аплинка и без веб-панели PosadMesh.
|
||||
- `observer-posadmesh`: используйте для Wi-Fi репитера, который должен публиковать данные в MQTT-брокер и, на поддерживаемых платах ESP32, предоставлять опциональную локальную веб-панель для настройки и диагностики.
|
||||
- `observer-posadmesh-bridge-espnow`: используйте, когда одному репитеру нужны одновременно MQTT-аплинк и обязанности моста ESP-NOW, включая управление каналом/секретом моста для синхронизации моста с Wi-Fi.
|
||||
- `repeater-mqtt`: используйте для Wi-Fi репитера, который должен публиковать данные в MQTT-брокер и, на поддерживаемых платах ESP32, предоставлять опциональную локальную веб-панель для настройки и диагностики.
|
||||
- `repeater-mqtt-espnow`: используйте, когда одному репитеру нужны одновременно MQTT-аплинк и обязанности моста ESP-NOW, включая управление каналом/секретом моста для синхронизации моста с Wi-Fi.
|
||||
- `repeater-mqtt-bridge`: используйте, когда репитер должен пересылать raw-пакеты mesh между репитерами через ваш собственный MQTT-брокер (например, Mosquitto в локальной сети), а не публиковать телеметрию в курируемый брокер.
|
||||
|
||||
!!! note "Треки-мосты — это локальные радиомосты"
|
||||
|
||||
Треки-мосты ESP-NOW предназначены для соединения двух расположенных рядом репитеров, работающих на разных радиоконфигурациях MeshCore, например один репитер на `Australia (Narrow)`, а другой на `Australia (Mid)`.
|
||||
Треки-мосты ESP-NOW предназначены для соединения двух расположенных рядом репитеров, работающих на разных радиоконфигурациях MeshCore — например, с разной полосой пропускания и SF.
|
||||
|
||||
Треки-мосты — это не релизы MQTT-over-WAN, VPN или интернет-туннелей.
|
||||
|
||||
@@ -18,15 +18,15 @@ MeshCore-Posadmesh сохраняет upstream-прошивку MeshCore без
|
||||
- [Сравнение плат](./boards.md)
|
||||
- [Скачивание и прошивка релизов](./releases.md)
|
||||
|
||||
Если вы уже знаете свою плату и хотите самый быстрый путь, пропустите документацию и откройте прошивальщик:
|
||||
Если вы уже знаете свою плату и хотите самый быстрый путь, пропустите документацию и откройте раздел релизов:
|
||||
|
||||
- [Открыть прошивальщик PosadMesh](https://flasher.eastmesh.au)
|
||||
- [Скачать прошивку PosadMesh](https://git.meshinfo.ru/shade/MeshCore-Posadmesh/releases)
|
||||
|
||||
## Я хочу
|
||||
|
||||
- выбрать плату: начните с [Сравнение плат](./boards.md)
|
||||
- прошить прошивку с рекомендациями: начните с [Скачивание и прошивка релизов](./releases.md)
|
||||
- прошить прошивку сейчас: откройте [прошивальщик PosadMesh](https://flasher.eastmesh.au)
|
||||
- прошить прошивку сейчас: скачайте файл из [раздела релизов](https://git.meshinfo.ru/shade/MeshCore-Posadmesh/releases)
|
||||
- настроить репитер после прошивки: используйте [Скачивание и прошивка релизов](./releases.md) и [Использование веб-панели репитера](./web-panel.md)
|
||||
- разобраться в CLI-командах PosadMesh: используйте [Пользовательские CLI-команды](./custom-cli.md)
|
||||
- автоматизировать работу с репитером или писать скрипты: используйте [Использование веб-API репитера](./api.md)
|
||||
@@ -53,20 +53,15 @@ MeshCore-Posadmesh сохраняет upstream-прошивку MeshCore без
|
||||
|
||||
- [meshcore-dev/MeshCore](https://github.com/meshcore-dev/MeshCore)
|
||||
|
||||
## Региональные материалы по Австралии
|
||||
## Материалы MeshCoreTel
|
||||
|
||||
Эти материалы поддерживаются сообществом, а не являются официальной документацией проекта, но они всё равно полезны для региональных заметок по настройке в Австралии, местных соглашений и материалов по MeshCore для отдельных регионов.
|
||||
Проект ориентирован на сеть и сайт <https://meshcoretel.ru>:
|
||||
|
||||
### ACT / NSW / QLD / SA / TAS / VIC
|
||||
- [Карта сети](https://meshcoretel.ru/ru/MOW/map)
|
||||
- [Связность](https://meshcoretel.ru/ru/MOW/links)
|
||||
- [Покрытие](https://meshcoretel.ru/ru/MOW/coverage)
|
||||
- [Узлы](https://meshcoretel.ru/ru/MOW/adverts)
|
||||
- [Наблюдатели](https://meshcoretel.ru/ru/MOW/observers)
|
||||
- [Веб-прошивальщик и консоль](https://meshcoretel.ru/ru/flasher)
|
||||
|
||||
- [wiki.eastmesh.au](https://wiki.eastmesh.au/)
|
||||
- [wiki.meshcoreaus.org](https://wiki.meshcoreaus.org/)
|
||||
|
||||
### Сидней
|
||||
|
||||
- [nswmesh.au](https://nswmesh.au/)
|
||||
- [github.com/nswmesh](https://github.com/nswmesh/)
|
||||
|
||||
### Брисбен
|
||||
|
||||
- [wiki.mbug.com.au/en/Meshcore/Settings](https://wiki.mbug.com.au/en/Meshcore/Settings)
|
||||
Радиопараметры региона Москва (MOW), которые использует сеть: 868,731 МГц, полоса 62,5 кГц, SF7, CR7, хэш пути 2 байта. Брокер: `mqtt://mqtt.meshcoretel.ru:1883`, пользователь и пароль `meshcore`.
|
||||
|
||||
+53
-101
@@ -6,6 +6,8 @@
|
||||
|
||||
Используйте эту страницу, когда изменяете прошивку, тестируете таргет перед релизом или собираете локальный артефакт, недоступный в разделе Releases.
|
||||
|
||||
Если сборка на своей машине не нужна, те же MQTT-прошивки можно собрать на сервере ручным workflow Gitea Actions (**Actions → Build MQTT firmwares → Run workflow**): он принимает версии `FIRMWARE_VERSION` и `POSADMESH_VERSION`, группу сборки (`all`, `uplink`, `espnow`, `bridge` или один таргет) и умеет сразу создать релиз Gitea с собранными файлами. Подробности — в [RELEASE.md](../RELEASE.md).
|
||||
|
||||
## Настройка
|
||||
|
||||
Из корня репозитория:
|
||||
@@ -25,17 +27,16 @@ bash posadmesh-build.sh list
|
||||
Обычная сборка PlatformIO для одного таргета:
|
||||
|
||||
```bash
|
||||
uv run pio run -e heltec_v4_repeater_observer
|
||||
uv run pio run -e heltec_v4_companion_radio_wifi
|
||||
uv run pio run -e heltec_v4_repeater_mqtt
|
||||
uv run pio run -e heltec_v4_repeater_bridge_espnow
|
||||
uv run pio run -e heltec_v4_repeater_observer_espnow
|
||||
uv run pio run -e Xiao_S3_WIO_repeater_observer_mqtt_bridge
|
||||
uv run pio run -e heltec_v4_repeater_mqtt_espnow
|
||||
uv run pio run -e Xiao_S3_WIO_repeater_mqtt_bridge
|
||||
```
|
||||
|
||||
Прошивка таргета:
|
||||
|
||||
```bash
|
||||
uv run pio run -e heltec_v4_repeater_observer -t upload --upload-port /dev/tty.usbmodemXXXX
|
||||
uv run pio run -e heltec_v4_repeater_mqtt -t upload --upload-port /dev/tty.usbmodemXXXX
|
||||
```
|
||||
|
||||
Монитор последовательного порта:
|
||||
@@ -48,19 +49,12 @@ uv run pio device monitor --port /dev/tty.usbmodemXXXX --baud 115200
|
||||
|
||||
Если вам нужны те же метаданные версии, которые используются при выпуске релиза, сначала экспортируйте переменные версии.
|
||||
|
||||
Companion Wi-Fi:
|
||||
|
||||
```bash
|
||||
export FIRMWARE_VERSION=v1.14.1
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_companion_radio_wifi
|
||||
```
|
||||
|
||||
Обсервер:
|
||||
MQTT-репитер:
|
||||
|
||||
```bash
|
||||
export FIRMWARE_VERSION=v1.15.0
|
||||
export POSADMESH_VERSION=v2026.5.1
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_observer
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_mqtt
|
||||
```
|
||||
|
||||
Мост ESP-NOW репитера:
|
||||
@@ -70,59 +64,59 @@ export FIRMWARE_VERSION=v1.15.0
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_bridge_espnow
|
||||
```
|
||||
|
||||
Обсервер ESP-NOW:
|
||||
MQTT-репитер ESP-NOW:
|
||||
|
||||
```bash
|
||||
export FIRMWARE_VERSION=v1.15.0
|
||||
export POSADMESH_VERSION=v2026.5.1
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_observer_espnow
|
||||
bash posadmesh-build.sh build-firmware heltec_v4_repeater_mqtt_espnow
|
||||
```
|
||||
|
||||
На выходе получаются артефакты с версиями в `out/`.
|
||||
|
||||
Правило версионирования:
|
||||
|
||||
- `companion-wifi` и `repeater-bridge-espnow` используют версию upstream MeshCore как `FIRMWARE_VERSION`
|
||||
- `observer-posadmesh`, `observer-posadmesh-bridge-espnow` и `observer-posadmesh-bridge-mqtt` используют версию upstream MeshCore как `FIRMWARE_VERSION` плюс версию релиза PosadMesh как `POSADMESH_VERSION`
|
||||
- `repeater-bridge-espnow` использует версию upstream MeshCore как `FIRMWARE_VERSION`
|
||||
- `repeater-mqtt`, `repeater-mqtt-espnow` и `repeater-mqtt-bridge` используют версию upstream MeshCore как `FIRMWARE_VERSION` плюс версию релиза PosadMesh как `POSADMESH_VERSION`
|
||||
|
||||
## Поддерживаемые платы `repeater_observer`
|
||||
## Поддерживаемые платы `repeater_mqtt`
|
||||
|
||||
Это полные имена окружений PlatformIO, используемые для локальных сборок из исходников и для именования артефактов релизов.
|
||||
|
||||
```text
|
||||
Generic_E22_sx1262_repeater_observer
|
||||
Generic_E22_sx1268_repeater_observer
|
||||
Heltec_E213_repeater_observer
|
||||
Heltec_E290_repeater_observer
|
||||
Heltec_T190_repeater_observer
|
||||
heltec_tracker_v2_repeater_observer
|
||||
Heltec_v2_repeater_observer
|
||||
Heltec_v3_repeater_observer
|
||||
heltec_v4_repeater_observer
|
||||
heltec_v4_tft_repeater_observer
|
||||
Heltec_Wireless_Paper_repeater_observer
|
||||
Heltec_Wireless_Tracker_repeater_observer
|
||||
Heltec_WSL3_repeater_observer
|
||||
LilyGo_T3S3_sx1262_repeater_observer
|
||||
LilyGo_T3S3_sx1276_repeater_observer
|
||||
LilyGo_TBeam_1W_repeater_observer
|
||||
LilyGo_TDeck_repeater_observer
|
||||
LilyGo_Tlora_C6_repeater_observer
|
||||
M5Stack_Unit_C6L_repeater_observer
|
||||
Meshadventurer_sx1262_repeater_observer
|
||||
Meshadventurer_sx1268_repeater_observer
|
||||
Meshimi_repeater_observer
|
||||
nibble_screen_connect_repeater_observer
|
||||
RAK_3112_repeater_observer
|
||||
Station_G2_logging_repeater_observer
|
||||
Station_G2_repeater_observer
|
||||
T_Beam_S3_Supreme_SX1262_repeater_observer
|
||||
Tbeam_SX1262_repeater_observer
|
||||
Tbeam_SX1276_repeater_observer
|
||||
WHY2025_badge_repeater_observer
|
||||
Xiao_C6_repeater_observer
|
||||
Xiao_S3_LoRa2021F33-2G4_repeater_observer
|
||||
Xiao_S3_WIO_repeater_observer
|
||||
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
|
||||
WHY2025_badge_repeater_mqtt
|
||||
Xiao_C6_repeater_mqtt
|
||||
Xiao_S3_LoRa2021F33-2G4_repeater_mqtt
|
||||
Xiao_S3_WIO_repeater_mqtt
|
||||
```
|
||||
|
||||
## Поддерживаемые платы мостов
|
||||
@@ -131,70 +125,28 @@ Xiao_S3_WIO_repeater_observer
|
||||
|
||||
```bash
|
||||
bash posadmesh-build.sh list | grep '_repeater_bridge_espnow'
|
||||
bash posadmesh-build.sh list | grep '_repeater_observer_espnow'
|
||||
bash posadmesh-build.sh list | grep '_repeater_mqtt_espnow'
|
||||
```
|
||||
|
||||
Типичные примеры:
|
||||
|
||||
```text
|
||||
heltec_v4_repeater_bridge_espnow
|
||||
heltec_v4_repeater_observer_espnow
|
||||
heltec_v4_repeater_mqtt_espnow
|
||||
Station_G2_repeater_bridge_espnow
|
||||
Station_G2_repeater_observer_espnow
|
||||
Station_G2_repeater_mqtt_espnow
|
||||
T_Beam_S3_Supreme_SX1262_repeater_bridge_espnow
|
||||
T_Beam_S3_Supreme_SX1262_repeater_observer_espnow
|
||||
T_Beam_S3_Supreme_SX1262_repeater_mqtt_espnow
|
||||
```
|
||||
|
||||
## Поддерживаемые платы `repeater_observer_mqtt_bridge`
|
||||
## Поддерживаемые платы `repeater_mqtt_bridge`
|
||||
|
||||
Для каждой платы обсервера определён вариант сборки `mqtt_bridge`.
|
||||
Для каждой платы MQTT-репитера определён вариант сборки `mqtt_bridge`.
|
||||
|
||||
Список доступных таргетов:
|
||||
|
||||
```bash
|
||||
bash posadmesh-build.sh list | grep '_repeater_observer_mqtt_bridge'
|
||||
bash posadmesh-build.sh list | grep '_repeater_mqtt_bridge'
|
||||
```
|
||||
|
||||
Прошивка моста предназначена для локального использования ESP-NOW-моста между близлежащими репитерами. Это не мост MQTT-over-WAN и не VPN-мост.
|
||||
|
||||
## Поддерживаемые платы `companion_radio_wifi`
|
||||
|
||||
Это полные имена окружений PlatformIO, используемые для локальных сборок из исходников и для именования артефактов релизов.
|
||||
|
||||
```text
|
||||
heltec_tracker_v2_companion_radio_wifi
|
||||
Heltec_v2_companion_radio_wifi
|
||||
Heltec_v3_companion_radio_wifi
|
||||
heltec_v4_companion_radio_wifi
|
||||
heltec_v4_tft_companion_radio_wifi
|
||||
Heltec_WSL3_companion_radio_wifi
|
||||
LilyGo_TBeam_1W_companion_radio_wifi
|
||||
LilyGo_TLora_V2_1_1_6_companion_radio_wifi
|
||||
nibble_screen_connect_companion_radio_wifi
|
||||
RAK_3112_companion_radio_wifi
|
||||
Station_G2_companion_radio_wifi
|
||||
T_Beam_S3_Supreme_SX1262_companion_radio_wifi
|
||||
ThinkNode_M2_companion_radio_wifi
|
||||
ThinkNode_M5_companion_radio_wifi
|
||||
Xiao_S3_LoRa2021F33-2G4_companion_radio_wifi
|
||||
Xiao_S3_WIO_companion_radio_wifi
|
||||
```
|
||||
|
||||
## CLI companion Wi-Fi
|
||||
|
||||
Текущие сборки companion Wi-Fi поддерживают сохраняемые команды восстановления Wi-Fi:
|
||||
|
||||
- откройте монитор последовательного порта на скорости `115200` бод
|
||||
- перезагрузите устройство
|
||||
- в течение первых 8 секунд после загрузки зажмите пользовательскую кнопку, чтобы войти в `CLI Rescue`
|
||||
- дождитесь `========= CLI Rescue =========`
|
||||
- затем выполните приведённые ниже команды восстановления Wi-Fi из монитора последовательного порта
|
||||
|
||||
```text
|
||||
get wifi.status
|
||||
get wifi.ssid
|
||||
get wifi.powersaving
|
||||
set wifi.ssid <ssid>
|
||||
set wifi.pwd <password>
|
||||
set wifi.powersaving none|min|max
|
||||
```
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
- `https://git.meshinfo.ru/shade/MeshCore-Posadmesh`
|
||||
|
||||
Эти шаги предназначены для существующих пользователей репитеров, переходящих на новую прошивку PosadMesh `*_repeater_observer`.
|
||||
Эти шаги предназначены для существующих пользователей репитеров, переходящих на новую прошивку PosadMesh `*_repeater_mqtt`.
|
||||
|
||||
Начните с загрузки подходящего релиза PosadMesh для вашей платы:
|
||||
|
||||
|
||||
+45
-69
@@ -8,17 +8,14 @@
|
||||
|
||||
Если вы прошиваете прошивку PosadMesh впервые, самый простой путь:
|
||||
|
||||
1. Откройте <https://flasher.eastmesh.au/>.
|
||||
2. Выберите прошивку, соответствующую тому, что будет делать устройство.
|
||||
3. Выберите плату, точно соответствующую вашему железу.
|
||||
4. Выберите версию. Флешер по умолчанию выбирает последний доступный релиз.
|
||||
5. Выберите тип образа:
|
||||
- `Update` для обычного обновления прошивки
|
||||
- `Full Flash` для чистой прошивки полного образа
|
||||
6. Нажмите `Flash Firmware`.
|
||||
7. После прошивки завершите настройку через `Open MeshCore Config Panel` или `Serial Console`.
|
||||
1. Откройте раздел релизов: <https://git.meshinfo.ru/shade/MeshCore-Posadmesh/releases>.
|
||||
2. Выберите трек: `repeater-mqtt`, `repeater-mqtt-espnow`, `repeater-mqtt-bridge` или `repeater-bridge-espnow`.
|
||||
3. Скачайте файл, имя которого начинается с вашей платы.
|
||||
4. Выберите тип образа: `.bin` для обычного обновления, `-merged.bin` для чистой прошивки.
|
||||
5. Прошейте файл — см. раздел «Чем прошивать» ниже.
|
||||
6. После прошивки настройте узел через локальную веб-панель репитера или последовательную консоль.
|
||||
|
||||
Если вы не уверены, какой трек вам нужен, начните с `companion-wifi` для companion-устройств, подключаемых к приложению, или с `observer-posadmesh` для стационарного репитера, который должен публиковать данные в MQTT.
|
||||
Если вы не уверены, какой трек вам нужен, начните с `repeater-mqtt` для стационарного репитера, который должен публиковать данные в MQTT.
|
||||
|
||||
## Выбор трека
|
||||
|
||||
@@ -26,14 +23,14 @@ PosadMesh публикует четыре трека релизов:
|
||||
|
||||
| Трек | Используйте, когда | Суффикс имени файла прошивки |
|
||||
| --------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------ |
|
||||
| `companion-wifi` | Нужно companion-устройство, которое подключается по Wi-Fi вместо BLE или USB. | `*_companion_radio_wifi` |
|
||||
| `observer-posadmesh` | Нужен репитер с Wi-Fi и MQTT-аплинком, обычно для видимости в брокере, например в PosadMesh/CoreScope. | `*_repeater_observer` |
|
||||
| `repeater-mqtt` | Нужен репитер с Wi-Fi и MQTT-аплинком, обычно для видимости в брокере, например в PosadMesh/CoreScope. | `*_repeater_mqtt` |
|
||||
| `repeater-bridge-espnow` | Нужен локальный ESP-NOW мост между соседними репитерами, без MQTT-аплинка и без веб-панели PosadMesh. | `*_repeater_bridge_espnow` |
|
||||
| `observer-posadmesh-bridge-espnow` | Нужно, чтобы один репитер выполнял и MQTT-аплинк, и задачи локального ESP-NOW моста. | `*_repeater_observer_espnow` |
|
||||
| `repeater-mqtt-espnow` | Нужно, чтобы один репитер выполнял и MQTT-аплинк, и задачи локального ESP-NOW моста. | `*_repeater_mqtt_espnow` |
|
||||
| `repeater-mqtt-bridge` | Нужно, чтобы репитер пересылал raw-пакеты mesh между репитерами через ваш собственный MQTT-брокер. | `*_repeater_mqtt_bridge` |
|
||||
|
||||
!!! note "Прошивка моста — это не WAN-мост"
|
||||
|
||||
Треки ESP-NOW моста предназначены для соединения двух соседних репитеров, работающих с разными конфигурациями радио MeshCore, например `Australia (Narrow)` и `Australia (Mid)`.
|
||||
Треки ESP-NOW моста предназначены для соединения двух соседних репитеров, работающих с разными конфигурациями радио MeshCore — например, с разной полосой пропускания и SF.
|
||||
|
||||
Треки моста не используют брокеры MQTT-аплинка для туннелирования mesh-трафика через интернет, WAN-каналы или VPN.
|
||||
|
||||
@@ -43,27 +40,22 @@ PosadMesh публикует четыре трека релизов:
|
||||
|
||||
Примеры:
|
||||
|
||||
- `heltec_v4_companion_radio_wifi-v1.14.1-abcdef.bin`
|
||||
- `heltec_v4_repeater_observer-v1.15.0-posadmesh-v2026.5.1-abcdef.bin`
|
||||
- `heltec_v4_repeater_observer-v1.15.0-posadmesh-v2026.5.1-abcdef-merged.bin`
|
||||
- `heltec_v4_repeater_mqtt-v1.15.0-posadmesh-v2026.5.1-abcdef.bin`
|
||||
- `heltec_v4_repeater_mqtt-v1.15.0-posadmesh-v2026.5.1-abcdef-merged.bin`
|
||||
- `heltec_v4_repeater_bridge_espnow-v1.15.0-abcdef.bin`
|
||||
- `heltec_v4_repeater_observer_espnow-v1.15.0-posadmesh-v2026.5.1-abcdef.bin`
|
||||
- `heltec_v4_repeater_mqtt_espnow-v1.15.0-posadmesh-v2026.5.1-abcdef.bin`
|
||||
- `heltec_v4_repeater_mqtt_bridge-v1.15.0-posadmesh-v2026.7.0-abcdef.bin`
|
||||
|
||||
Важен префикс платы/env:
|
||||
|
||||
- `*_companion_radio_wifi`
|
||||
- `*_repeater_observer`
|
||||
- `*_repeater_mqtt`
|
||||
- `*_repeater_bridge_espnow`
|
||||
- `*_repeater_observer_espnow`
|
||||
- `*_repeater_mqtt_espnow`
|
||||
- `*_repeater_mqtt_bridge`
|
||||
|
||||
## Какой файл прошивать
|
||||
|
||||
Если вы используете <https://flasher.eastmesh.au/>, выберите тип образа во флешере:
|
||||
|
||||
- `Update` = обычное обновление прошивки
|
||||
- `Full Flash` = чистая прошивка полного образа
|
||||
|
||||
Если вы скачиваете файлы вручную из раздела Releases на git.meshinfo.ru, вместо этого ориентируйтесь на имя файла:
|
||||
Файлы берутся из раздела Releases на git.meshinfo.ru. Ориентируйтесь на имя файла:
|
||||
|
||||
Используйте стандартный файл `.bin`, когда обновляете существующее устройство с тем же таргетом и той же разметкой разделов.
|
||||
|
||||
@@ -76,37 +68,32 @@ PosadMesh публикует четыре трека релизов:
|
||||
|
||||
## Процесс прошивки
|
||||
|
||||
1. Выберите прошивку.
|
||||
2. Выберите плату.
|
||||
3. Выберите версию. Последняя версия выбирается по умолчанию.
|
||||
4. Выберите тип образа: `Update` или `Full Flash`.
|
||||
5. Нажмите `Flash Firmware`.
|
||||
6. После прошивки используйте `Open MeshCore Config Panel` или `Serial Console` для настройки после прошивки, такой как Wi-Fi, MQTT, мост или параметры радио.
|
||||
1. Скачайте нужный файл релиза для своей платы.
|
||||
2. Определите чип платы (ESP32, ESP32-S3, ESP32-C6 или nRF52) — он виден по имени платы в имени файла.
|
||||
3. Для чистой установки прошейте `-merged.bin` по адресу `0x0`, для обычного обновления — `.bin`.
|
||||
4. Для nRF52-плат прошейте `.uf2` (копированием на диск в режиме загрузчика) или `.zip` через DFU.
|
||||
5. После прошивки настройте узел: Wi-Fi, MQTT, мост или параметры радио.
|
||||
|
||||
## Рекомендуемый флешер
|
||||
## Чем прошивать
|
||||
|
||||
Рекомендуемый флешер:
|
||||
Отдельный флешер для этого не нужен: подойдёт любой инструмент, умеющий записать образ ESP32 по адресу `0x0`, например `esptool.py`:
|
||||
|
||||
- <https://flasher.eastmesh.au/>
|
||||
```bash
|
||||
esptool.py --chip esp32s3 write_flash 0x0 <имя-файла>-merged.bin
|
||||
```
|
||||
|
||||
Он имеет встроенную поддержку распространённых типов прошивок PosadMesh, а также может прошивать пользовательские файлы прошивок:
|
||||
Практическое правило:
|
||||
|
||||
- прошивка `companion_radio_wifi`
|
||||
- прошивка `repeater_observer`
|
||||
- пользовательские файлы прошивок
|
||||
- `.bin` = инкрементальное обновление
|
||||
- `-merged.bin` = стирание и чистая прошивка
|
||||
|
||||
Для релизов моста используйте соответствующий пункт для моста, если флешер его показывает. В противном случае скачайте файл релиза самостоятельно и прошейте его как пользовательский файл прошивки.
|
||||
Для релизов моста берите файл соответствующего трека (`repeater-mqtt-bridge` или `repeater-bridge-espnow`).
|
||||
|
||||
Рекомендуемое использование:
|
||||
После прошивки есть два полезных пути настройки.
|
||||
|
||||
- используйте `Update`, когда обновляете существующее устройство
|
||||
- используйте `Full Flash`, когда нужна чистая прошивка полного образа
|
||||
### Панель настройки MeshCore
|
||||
|
||||
После прошивки во флешере доступны два полезных пути настройки.
|
||||
|
||||
### Открыть панель конфигурации MeshCore
|
||||
|
||||
Используйте `Open MeshCore Config Panel`, чтобы получить доступ к пошаговым инструментам настройки MeshCore:
|
||||
Откройте <https://config.meshcore.io/> — это пошаговые инструменты настройки MeshCore:
|
||||
|
||||
- `Repeater Setup`
|
||||
- `Console`
|
||||
@@ -126,7 +113,7 @@ PosadMesh публикует четыре трека релизов:
|
||||
- flood max
|
||||
- некоторые расширенные настройки репитера
|
||||
|
||||
Начиная с `v1.2.1`, локальная веб-панель репитера также включает те же общие настройки репитера, поэтому пользователи могут выполнить первоначальную настройку там и возвращаться к ней для периодической диагностики или изменения конфигурации. На обсерверах, которым нужен максимальный запас heap, по-прежнему лучше снова отключить панель, когда вы закончили.
|
||||
Начиная с `v1.2.1`, локальная веб-панель репитера также включает те же общие настройки репитера, поэтому пользователи могут выполнить первоначальную настройку там и возвращаться к ней для периодической диагностики или изменения конфигурации. На MQTT-репитерах, которым нужен максимальный запас heap, по-прежнему лучше снова отключить панель, когда вы закончили.
|
||||
|
||||
#### Консоль
|
||||
|
||||
@@ -139,15 +126,14 @@ PosadMesh публикует четыре трека релизов:
|
||||
|
||||
Это относится к:
|
||||
|
||||
- `companion_radio_wifi`
|
||||
- `repeater_observer`
|
||||
- `repeater_observer_espnow`
|
||||
- `repeater_mqtt`
|
||||
- `repeater_mqtt_espnow`
|
||||
|
||||
### Последовательная консоль
|
||||
|
||||
Используйте `Serial Console`, когда хотите подключиться по USB и вводить команды CLI напрямую.
|
||||
Подключитесь к устройству по USB и вводите команды CLI напрямую, например через `uv run pio device monitor --port <port> --baud 115200`.
|
||||
|
||||
Флешер может подключаться к устройству по USB и отключаться от него. Он также включает готовые команды CLI, которые подставляются в поле ввода команд для упрощения настройки:
|
||||
Полезные команды:
|
||||
|
||||
- `set wifi.ssid`
|
||||
- `set wifi.pwd`
|
||||
@@ -160,9 +146,9 @@ PosadMesh публикует четыре трека релизов:
|
||||
|
||||
## Типовые первые шаги
|
||||
|
||||
### Обсервер
|
||||
### MQTT-репитер
|
||||
|
||||
Сборки `repeater_observer` включают дополнения MQTT от PosadMesh. В зависимости от платы они также могут включать локальную веб-панель.
|
||||
Сборки `repeater_mqtt` включают дополнения MQTT от PosadMesh. В зависимости от платы они также могут включать локальную веб-панель.
|
||||
|
||||
Типовые первые шаги после прошивки:
|
||||
|
||||
@@ -173,9 +159,9 @@ PosadMesh публикует четыре трека релизов:
|
||||
- при желании задайте `mqtt.owner` и `mqtt.email`
|
||||
- при желании включите пользовательский брокер как второй аплинк
|
||||
|
||||
### Обсервер ESP-NOW
|
||||
### MQTT-репитер ESP-NOW
|
||||
|
||||
Сборки `repeater_observer_espnow` объединяют роль обсервера с поддержкой локального ESP-NOW моста.
|
||||
Сборки `repeater_mqtt_espnow` объединяют роль MQTT-репитера с поддержкой локального ESP-NOW моста.
|
||||
|
||||
Типовые первые шаги после прошивки:
|
||||
|
||||
@@ -197,13 +183,3 @@ PosadMesh публикует четыре трека релизов:
|
||||
- задайте нужный пресет/конфигурацию радио MeshCore
|
||||
- задайте одинаковые канал моста и секрет для локальной пары моста
|
||||
- убедитесь, что оба репитера моста физически находятся достаточно близко для работы ESP-NOW
|
||||
|
||||
### Companion-радио Wi-Fi
|
||||
|
||||
Сборки `companion_radio_wifi` предназначены для companion-устройств, которые предоставляют интерфейс приложения по Wi-Fi вместо BLE или USB.
|
||||
|
||||
Типовые первые шаги после прошивки:
|
||||
|
||||
- задайте учётные данные Wi-Fi
|
||||
- проверьте `get wifi.status`
|
||||
- подключите ваше клиентское приложение к companion-устройству по Wi-Fi
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Веб-панель репитера
|
||||
|
||||
Эта страница предназначена для конечных пользователей, которые используют сборку PosadMesh `*_repeater_observer` с включённой локальной веб-панелью.
|
||||
Эта страница предназначена для конечных пользователей, которые используют сборку PosadMesh `*_repeater_mqtt` с включённой локальной веб-панелью.
|
||||
|
||||
Здесь описано, как открыть панель, что делает каждый раздел и чего ожидать при работе с ней на компьютере или мобильном устройстве.
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
Рекомендации по эксплуатации:
|
||||
|
||||
- используйте её для первоначальной настройки, редких изменений конфигурации и диагностики
|
||||
- по завершении предпочитайте `set web off` на обсерверах, которым нужен максимальный запас
|
||||
- по завершении предпочитайте `set web off` на MQTT-репитерах, которым нужен максимальный запас
|
||||
- это оставляет больше внутреннего heap для работы MQTT/WSS, особенно в конфигурациях с двумя брокерами
|
||||
|
||||
## Типовые задачи
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
Вам потребуется:
|
||||
|
||||
- поддерживаемая сборка прошивки `*_repeater_observer`
|
||||
- поддерживаемая сборка прошивки `*_repeater_mqtt`
|
||||
- настроенный на репитере Wi-Fi
|
||||
- репитер, подключённый к вашей локальной сети
|
||||
- пароль администратора репитера
|
||||
@@ -212,7 +212,7 @@
|
||||
|
||||
## Настройки радио и регионы
|
||||
|
||||
Раздел `Radio Settings` включает селектор community-пресета радио, режим path hash и выпадающий список `Region (Australia)`, построенный из групп штатов, используемых селектором MQTT IATA. Список предустанавливается только тогда, когда у репитера уже есть соответствующий разрешённый регион `au-STATE`. Нажатие кнопки `Save` для региона создаёт и разрешает базовый регион `au` вместе с выбранным регионом штата, а затем сохраняет карту регионов командой `region save`.
|
||||
Раздел `Radio Settings` включает селектор community-пресета радио, режим path hash и работу с деревом регионов узла. Список регионов строится из уже разрешённых на узле регионов; нажатие `Save` разрешает выбранный регион вместе с его базовым регионом и сохраняет карту регионов командой `region save`.
|
||||
|
||||
## Информация
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
|
||||
Типичный сценарий использования:
|
||||
|
||||
- MQTT-обсервер в помещении или в одном месте с другим устройством, когда соседний репитер уже выполняет работу по RF-ретрансляции
|
||||
- MQTT-MQTT-репитер в помещении или в одном месте с другим устройством, когда соседний репитер уже выполняет работу по RF-ретрансляции
|
||||
- узел, который вы хотите использовать для передачи данных в MQTT, веб-статуса и диагностики, не добавляя при этом лишний трафик ретрансляции или advert-пакеты
|
||||
|
||||
Когда режим Ghost Node включён, он:
|
||||
@@ -256,7 +256,7 @@
|
||||
- Брокеры MQTT: переключатель **MeshCoreTel RU** и переключатель **Custom broker**, каждый включает или отключает свой брокер. Одновременно можно включить не более двух брокеров.
|
||||
- поля custom MQTT `host:port`, транспорт TCP/WSS, имя пользователя и пароль.
|
||||
|
||||
`UNSET - To be configured` — значение по умолчанию для новых установок обсервера, пока не появится реальное сохранённое значение.
|
||||
`UNSET - To be configured` — значение по умолчанию для новых установок MQTT-репитера, пока не появится реальное сохранённое значение.
|
||||
|
||||
Примечания:
|
||||
|
||||
@@ -356,7 +356,7 @@
|
||||
Если репитер уже подключён к Wi-Fi, OTA использует существующий адрес в локальной сети. Если Wi-Fi не подключён, репитер запускает точку доступа `MeshCore-OTA` и возвращает вместо этого адрес OTA.
|
||||
Если старый слушатель перенаправления не полностью освободил порт `80`, слушатель OTA повторяет попытки примерно до 30 секунд, после чего сдаётся.
|
||||
|
||||
Если более старая сборка отправляет вас на странное перенаправление после `start ota`, используйте веб-кнопку `Start OTA` для запуска обновления. Эта проблема с перенаправлением исправлена в `observer-eastmesh-v1.3.11`.
|
||||
Если более старая сборка отправляет вас на странное перенаправление после `start ota`, используйте веб-кнопку `Start OTA` для запуска обновления. В актуальных сборках эта проблема с перенаправлением исправлена.
|
||||
|
||||
### Purge SD
|
||||
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Publish built firmware files to a Gitea release.
|
||||
#
|
||||
# Usage:
|
||||
# posadmesh-tools/publish-gitea-release.sh <tag> <dist-dir> [release-title] [notes-file]
|
||||
#
|
||||
# Example:
|
||||
# GITEA_TOKEN=... posadmesh-tools/publish-gitea-release.sh \
|
||||
# repeater-mqtt-v2026.10.0 out "Repeater MQTT v2026.10.0" RELEASE-NOTES.md
|
||||
#
|
||||
# Environment:
|
||||
# GITEA_TOKEN (required) personal access token with write:repository scope
|
||||
# GITEA_URL (optional) instance URL, default https://git.meshinfo.ru
|
||||
# GITEA_REPO (optional) owner/repo, default shade/MeshCore-Posadmesh
|
||||
# ASSET_GLOB (optional) only upload files matching this glob, e.g. '*_repeater_mqtt-v*'
|
||||
# (handy when out/ holds several tracks: uplink, espnow, bridge)
|
||||
#
|
||||
# The script is idempotent: if the release already exists it reuses it and skips
|
||||
# assets whose names are already attached.
|
||||
#
|
||||
# Requires: curl, awk. A working python (python3, python, or the project .venv)
|
||||
# is used only to encode the release notes as JSON; without it the release is
|
||||
# created with an empty body.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
tag="${1:-}"
|
||||
dist="${2:-}"
|
||||
title="${3:-$tag}"
|
||||
notes_file="${4:-}"
|
||||
|
||||
if [[ -z "$tag" || -z "$dist" ]]; then
|
||||
echo "usage: $0 <tag> <dist-dir> [release-title] [notes-file]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "$dist" ]]; then
|
||||
echo "error: distribution directory not found: $dist" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${GITEA_TOKEN:-}" ]]; then
|
||||
echo "error: GITEA_TOKEN is not set (needs write access to the repository)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
command -v curl >/dev/null 2>&1 || { echo "error: curl is required" >&2; exit 1; }
|
||||
|
||||
base="${GITEA_URL:-https://git.meshinfo.ru}"
|
||||
repo="${GITEA_REPO:-shade/MeshCore-Posadmesh}"
|
||||
api="$base/api/v1/repos/$repo"
|
||||
auth="Authorization: token $GITEA_TOKEN"
|
||||
work="$(mktemp -d)"
|
||||
trap 'rm -rf "$work"' EXIT
|
||||
|
||||
# pick a python that actually runs (on Windows "python3" may be a Store stub)
|
||||
PY=""
|
||||
for candidate in .venv/Scripts/python.exe .venv/bin/python python3 python; do
|
||||
if command -v "$candidate" >/dev/null 2>&1 || [[ -x "$candidate" ]]; then
|
||||
if "$candidate" -c 'import json, sys' >/dev/null 2>&1; then
|
||||
PY="$candidate"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo "repository : $repo"
|
||||
echo "tag : $tag"
|
||||
echo "files from : $dist"
|
||||
|
||||
pattern="${ASSET_GLOB:-*}"
|
||||
if [[ "$pattern" != "*" ]]; then
|
||||
echo "asset glob : $pattern"
|
||||
fi
|
||||
|
||||
assets=()
|
||||
while IFS= read -r -d '' f; do
|
||||
assets+=("$f")
|
||||
done < <(find "$dist" -maxdepth 1 -type f -name "$pattern" \( -name '*.bin' -o -name '*.uf2' -o -name '*.zip' -o -name '*.elf' \) -print0 | sort -z)
|
||||
|
||||
if [[ ${#assets[@]} -eq 0 ]]; then
|
||||
echo "error: no matching .bin/.uf2/.zip/.elf files found in $dist (glob: $pattern)" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "assets : ${#assets[@]}"
|
||||
|
||||
body_json='""'
|
||||
if [[ -n "$notes_file" && -f "$notes_file" ]]; then
|
||||
if [[ -n "$PY" ]]; then
|
||||
body_json="$("$PY" -c 'import json,sys; print(json.dumps(open(sys.argv[1], encoding="utf-8").read()))' "$notes_file")"
|
||||
else
|
||||
echo "warning: no usable python found, release notes will be empty" >&2
|
||||
fi
|
||||
fi
|
||||
|
||||
payload_file="$work/release.json"
|
||||
printf '{"tag_name":"%s","name":"%s","body":%s,"draft":false,"prerelease":false}' \
|
||||
"$tag" "$title" "$body_json" > "$payload_file"
|
||||
|
||||
code=$(curl -sS -o "$work/release.json" -w '%{http_code}' \
|
||||
-X POST "$api/releases" -H "$auth" -H 'Content-Type: application/json' \
|
||||
--data-binary "@$payload_file" || true)
|
||||
|
||||
release_id=""
|
||||
if [[ "$code" == "201" ]]; then
|
||||
release_id=$(grep -o '"id":[0-9]*' "$work/release.json" | head -n 1 | cut -d: -f2)
|
||||
echo "created release id=$release_id"
|
||||
else
|
||||
echo "release create returned HTTP $code, looking up the existing release"
|
||||
release_id=$(curl -sS "$api/releases/tags/$tag" -H "$auth" \
|
||||
| grep -o '"id":[0-9]*' | head -n 1 | cut -d: -f2 || true)
|
||||
if [[ -z "$release_id" ]]; then
|
||||
echo "error: cannot create or find a release for tag $tag" >&2
|
||||
head -c 400 "$work/release.json" >&2 || true
|
||||
echo >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "reusing release id=$release_id"
|
||||
fi
|
||||
|
||||
existing=$(curl -sS "$api/releases/$release_id/assets" -H "$auth" \
|
||||
| grep -o '"name":"[^"]*"' | cut -d'"' -f4 || true)
|
||||
|
||||
uploaded=0
|
||||
skipped=0
|
||||
for f in "${assets[@]}"; do
|
||||
name="$(basename "$f")"
|
||||
if grep -qxF "$name" <<<"$existing"; then
|
||||
echo "skip $name (already attached)"
|
||||
skipped=$((skipped + 1))
|
||||
continue
|
||||
fi
|
||||
code=$(curl -sS -o "$work/asset.json" -w '%{http_code}' \
|
||||
-X POST "$api/releases/$release_id/assets?name=$name" \
|
||||
-H "$auth" -F "attachment=@$f" || true)
|
||||
if [[ "$code" == "201" ]]; then
|
||||
echo "upload $name"
|
||||
uploaded=$((uploaded + 1))
|
||||
else
|
||||
echo "error: upload of $name failed with HTTP $code" >&2
|
||||
head -c 400 "$work/asset.json" >&2 || true
|
||||
echo >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "done: uploaded=$uploaded skipped=$skipped"
|
||||
echo "release: $base/$repo/releases/tag/$tag"
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# Web panel heap-health check for *_repeater_observer nodes.
|
||||
# Web panel heap-health check for *_repeater_mqtt nodes.
|
||||
#
|
||||
# Reads memory / web / mqtt / wifi status over the HTTPS API, then (optionally)
|
||||
# hammers the panel the way a browser page-load does and re-reads memory to see
|
||||
|
||||
+58
-41
@@ -1,9 +1,12 @@
|
||||
schema_version: 1
|
||||
tracks:
|
||||
# снят с выпуска в 2026.10.0: линия companion-прошивок удалена из проекта,
|
||||
# трек остаётся в реестре для исторических записей релизов
|
||||
- companion-wifi
|
||||
- repeater-bridge-espnow
|
||||
- observer-posadmesh
|
||||
- observer-posadmesh-bridge-espnow
|
||||
- repeater-mqtt
|
||||
- repeater-mqtt-espnow
|
||||
- repeater-mqtt-bridge
|
||||
generated_from: "Adjacent git tag comparisons plus non-merge commit subjects."
|
||||
|
||||
releases:
|
||||
@@ -186,7 +189,7 @@ releases:
|
||||
text: "Included upstream board, radio, display, and platform fixes from MeshCore dev."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.5.1"
|
||||
tag: "observer-eastmesh-v2026.5.1"
|
||||
date: "2026-05-23"
|
||||
@@ -198,14 +201,14 @@ releases:
|
||||
text: "Renamed the EastMesh MQTT release tag format from `repeater-mqtt-eastmesh-v*` to `observer-eastmesh-v*`."
|
||||
- type: changed
|
||||
area: build
|
||||
text: "Renamed `*_repeater_mqtt` PlatformIO environments and release artifact prefixes to `*_repeater_observer`."
|
||||
text: "Renamed `*_repeater_mqtt` PlatformIO environments and release artifact prefixes to `*_repeater_mqtt`."
|
||||
- type: docs
|
||||
area: docs
|
||||
text: "Updated EastMesh release, local build, board, web panel, API, and CLI documentation to use Observer naming."
|
||||
breaking_changes:
|
||||
- "The EastMesh MQTT release tag format and PlatformIO target suffix changed to Observer naming."
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.6.0"
|
||||
tag: "observer-eastmesh-v2026.6.0"
|
||||
date: "2026-06-03"
|
||||
@@ -232,7 +235,7 @@ releases:
|
||||
text: "Merged upstream MeshCore dev updates including sensor handling, RAK4631 BME680/BSEC support, documentation refreshes, and board/platform fixes."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.6.1"
|
||||
tag: "observer-eastmesh-v2026.6.1"
|
||||
date: "2026-06-07"
|
||||
@@ -250,7 +253,7 @@ releases:
|
||||
text: "Updated EastMesh custom CLI docs for the new `flood.max.advert` command."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.6.2"
|
||||
tag: "observer-eastmesh-v2026.6.2"
|
||||
date: "2026-06-07"
|
||||
@@ -286,7 +289,7 @@ releases:
|
||||
text: "Hardened OTA startup by binding before reporting success and falling back to alternate ports when port 80 is still being released."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.6.3"
|
||||
tag: "observer-eastmesh-v2026.6.3"
|
||||
date: "2026-06-09"
|
||||
@@ -310,7 +313,7 @@ releases:
|
||||
text: "Documented custom MQTT TCP/WSS configuration in the web panel and custom CLI guides."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.6.4"
|
||||
tag: "observer-eastmesh-v2026.6.4"
|
||||
date: "2026-06-23"
|
||||
@@ -339,7 +342,7 @@ releases:
|
||||
- "`get mqtt.status` output changed from per-broker fields to `p:`/`s:` broker slots; anything parsing the previous format must be updated."
|
||||
- "Saved LetsMesh EU/US broker selections are cleared once on upgrade; re-enable a broker such as MeshMapper if a second uplink is required."
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.6.5"
|
||||
tag: "observer-eastmesh-v2026.6.5"
|
||||
date: "2026-06-26"
|
||||
@@ -363,7 +366,7 @@ releases:
|
||||
text: "Documented the Waev broker in the README and custom CLI guides."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.6.6"
|
||||
tag: "observer-eastmesh-v2026.6.6"
|
||||
date: "2026-06-27"
|
||||
@@ -375,7 +378,7 @@ releases:
|
||||
text: "Added `packets_sent` and `packets_received` counters to the MQTT `status` payload `stats` object, reporting cumulative radio TX/RX packet totals to align with the Waev/MeshMapper status schema."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.7.0"
|
||||
tag: "observer-eastmesh-v2026.7.0"
|
||||
date: "2026-07-19"
|
||||
@@ -397,7 +400,7 @@ releases:
|
||||
breaking_changes:
|
||||
- "The saved settings layout changed; devices upgrading from 2026.6.6 or earlier may need EastMesh-specific settings (such as fan control and bridge peer) and recently added radio settings reconfigured."
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.8.0"
|
||||
tag: "observer-eastmesh-v2026.8.0"
|
||||
date: "2026-08-09"
|
||||
@@ -416,7 +419,7 @@ releases:
|
||||
breaking_changes:
|
||||
- "Saved settings move to the new `prefs.json` format on first boot; downgrading to earlier firmware afterwards reverts the device to the old (pre-migration) settings file."
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.8.1"
|
||||
tag: "observer-eastmesh-v2026.8.1"
|
||||
date: "2026-08-09"
|
||||
@@ -431,7 +434,7 @@ releases:
|
||||
text: "Made a failed or absent SH1106 display boot the node headless instead of crash-looping: display operations are now safe no-ops when the boot-time initialisation did not succeed."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.8.2"
|
||||
tag: "observer-eastmesh-v2026.8.2"
|
||||
date: "2026-08-15"
|
||||
@@ -458,7 +461,7 @@ releases:
|
||||
text: "Adopted upstream's SH1106 display address fallback (0x3C/0x3D) so board revisions with the other SA0 strap setting still get a working display, while keeping the EastMesh T-Beam S3 Supreme bring-up order and headless fallback."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.8.3"
|
||||
tag: "observer-eastmesh-v2026.8.3"
|
||||
date: "2026-08-23"
|
||||
@@ -485,19 +488,25 @@ releases:
|
||||
text: "Added `eastmesh-tools/web-heap-check.sh` to read heap and service health over the HTTPS API and optionally stress the web panel with browser-style bursts."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh
|
||||
- track: repeater-mqtt
|
||||
version: "2026.10.0"
|
||||
tag: "observer-posadmesh-v2026.10.0"
|
||||
tag: "repeater-mqtt-v2026.10.0"
|
||||
date: "2026-10-07"
|
||||
previous_version: "2026.8.3"
|
||||
summary: "Полный рефакторинг под PosadMesh: переименованы папки, скрипты, треки и теги, документация переведена на русский, удалены брокеры waev/meshmapper/letsmesh, репозиторий переехал на git.meshinfo.ru с локальной сборкой релизов, база обновлена до upstream MeshCore v1.17.1."
|
||||
summary: "Полный рефакторинг под PosadMesh: переименованы папки, скрипты, цели сборки и треки (observer → mqtt), документация переведена на русский, удалены брокеры waev/meshmapper/letsmesh и линия companion-прошивок, репозиторий переехал на git.meshinfo.ru с локальной сборкой релизов, база обновлена до upstream MeshCore v1.17.1."
|
||||
changes:
|
||||
- type: changed
|
||||
area: upstream
|
||||
text: "База прошивки обновлена до upstream MeshCore v1.17.1."
|
||||
- type: changed
|
||||
area: release
|
||||
text: "Проект целиком переименован в PosadMesh: папки и скрипты (`eastmesh-docs` → `posadmesh-docs`, `eastmesh-tools` → `posadmesh-tools`, `eastmesh-build.sh` → `posadmesh-build.sh`), треки релизов (`observer-eastmesh*` → `observer-posadmesh*`), форматы тегов (`observer-posadmesh-v*`, `observer-posadmesh-bridge-espnow-v*`, `observer-posadmesh-bridge-mqtt-v*`), суффикс версии сборки (`-posadmesh-`) и переменная версии релиза (`EASTMESH_VERSION` → `POSADMESH_VERSION`)."
|
||||
text: "Проект переименован в PosadMesh и переведён на имена MQTT: папки и скрипты (`eastmesh-docs` → `posadmesh-docs`, `eastmesh-tools` → `posadmesh-tools`, `eastmesh-build.sh` → `posadmesh-build.sh`), цели сборки (`*_repeater_observer*` → `*_repeater_mqtt*`), треки релизов (`observer-eastmesh*` → `repeater-mqtt*`), форматы тегов (`repeater-mqtt-v*`, `repeater-mqtt-espnow-v*`, `repeater-mqtt-bridge-v*`), суффикс версии сборки (`-posadmesh-`) и переменная версии релиза (`EASTMESH_VERSION` → `POSADMESH_VERSION`)."
|
||||
- type: changed
|
||||
area: release
|
||||
text: "Удалена линия companion-прошивок: трек `companion-wifi` и команды сборки companion убраны из проекта, остаются только MQTT-сборки. Цели и код companion в upstream-оверлеях не изменялись."
|
||||
- type: fixed
|
||||
area: build
|
||||
text: "Сборка по группам снова работает: команды искали окружения по устаревшим суффиксам `_repeater_observer*`, а на Windows имена окружений приходили с символом `\\r`, из-за чего не находилось ни одной цели. Теперь используются реальные суффиксы `_repeater_mqtt*`, вывод PlatformIO очищается от `\r`, добавлены команды `build-mqtt-firmwares` (все MQTT-треки) и `list-mqtt`."
|
||||
- type: docs
|
||||
area: docs
|
||||
text: "Документация переведена на русский язык: `posadmesh-docs/*.md`, `README.md`, `RELEASE.md` и `AGENTS.md`. Команды, их вывод, код, пути и идентификаторы оставлены без перевода."
|
||||
@@ -520,11 +529,13 @@ releases:
|
||||
area: web
|
||||
text: "Исправлен разбор дерева регионов: завершающая буква `F` в имени региона срезалась, из-за чего `region allowf`, `region denyf` и `region remove` не работали для таких имён."
|
||||
breaking_changes:
|
||||
- "Формат тегов меняется на `observer-posadmesh-*`: прежние теги `observer-eastmesh-*` больше ничего не запускают и остаются только как история."
|
||||
- "Формат тегов меняется на `repeater-mqtt-*`: прежние теги `observer-eastmesh-*` больше ничего не запускают и остаются только как история."
|
||||
- "`EASTMESH_VERSION` переименована в `POSADMESH_VERSION`: локальные скрипты со старым именем соберут версию без суффикса PosadMesh."
|
||||
- "Команды `mqtt.meshmapper`, `mqtt.waev` и `mqtt.letsmesh-*` удалены; сохранённые выборы этих брокеров сбрасываются при обновлении."
|
||||
- "Документация больше не публикуется отдельным сайтом и читается в веб-интерфейсе git.meshinfo.ru."
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- "Линия companion-прошивок удалена: трек `companion-wifi` и companion-сборки больше не выпускаются."
|
||||
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.5.1"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.5.1"
|
||||
date: "2026-05-23"
|
||||
@@ -536,14 +547,14 @@ releases:
|
||||
text: "Renamed the EastMesh MQTT bridge release tag format from `repeater-mqtt-bridge-eastmesh-v*` to `observer-eastmesh-bridge-espnow-v*`."
|
||||
- type: changed
|
||||
area: build
|
||||
text: "Renamed `*_repeater_mqtt_bridge` PlatformIO environments and release artifact prefixes to `*_repeater_observer_espnow`."
|
||||
text: "Renamed `*_repeater_mqtt_bridge` PlatformIO environments and release artifact prefixes to `*_repeater_mqtt_espnow`."
|
||||
- type: docs
|
||||
area: docs
|
||||
text: "Updated EastMesh release, local build, board, and CLI documentation to use Observer ESP-NOW naming."
|
||||
breaking_changes:
|
||||
- "The EastMesh MQTT bridge release tag format and PlatformIO target suffix changed to Observer ESP-NOW naming."
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.6.0"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.6.0"
|
||||
date: "2026-06-03"
|
||||
@@ -570,7 +581,7 @@ releases:
|
||||
text: "Merged upstream MeshCore dev updates including sensor handling, RAK4631 BME680/BSEC support, documentation refreshes, and board/platform fixes."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.6.1"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.6.1"
|
||||
date: "2026-06-07"
|
||||
@@ -588,7 +599,7 @@ releases:
|
||||
text: "Updated EastMesh custom CLI docs for the new `flood.max.advert` command."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.6.2"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.6.2"
|
||||
date: "2026-06-07"
|
||||
@@ -624,7 +635,7 @@ releases:
|
||||
text: "Hardened OTA startup by binding before reporting success and falling back to alternate ports when port 80 is still being released."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.6.3"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.6.3"
|
||||
date: "2026-06-09"
|
||||
@@ -648,7 +659,7 @@ releases:
|
||||
text: "Documented custom MQTT TCP/WSS configuration in the web panel and custom CLI guides."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.6.4"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.6.4"
|
||||
date: "2026-06-23"
|
||||
@@ -677,7 +688,7 @@ releases:
|
||||
- "`get mqtt.status` output changed from per-broker fields to `p:`/`s:` broker slots; anything parsing the previous format must be updated."
|
||||
- "Saved LetsMesh EU/US broker selections are cleared once on upgrade; re-enable a broker such as MeshMapper if a second uplink is required."
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.6.5"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.6.5"
|
||||
date: "2026-06-26"
|
||||
@@ -701,7 +712,7 @@ releases:
|
||||
text: "Documented the Waev broker in the README and custom CLI guides."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.6.6"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.6.6"
|
||||
date: "2026-06-27"
|
||||
@@ -713,7 +724,7 @@ releases:
|
||||
text: "Added `packets_sent` and `packets_received` counters to the MQTT `status` payload `stats` object, reporting cumulative radio TX/RX packet totals to align with the Waev/MeshMapper status schema."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.7.0"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.7.0"
|
||||
date: "2026-07-19"
|
||||
@@ -735,7 +746,7 @@ releases:
|
||||
breaking_changes:
|
||||
- "The saved settings layout changed; devices upgrading from 2026.6.6 or earlier may need EastMesh-specific settings (such as fan control and bridge peer) and recently added radio settings reconfigured."
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.8.0"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.8.0"
|
||||
date: "2026-08-09"
|
||||
@@ -754,7 +765,7 @@ releases:
|
||||
breaking_changes:
|
||||
- "Saved settings move to the new `prefs.json` format on first boot; downgrading to earlier firmware afterwards reverts the device to the old (pre-migration) settings file."
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.8.1"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.8.1"
|
||||
date: "2026-08-09"
|
||||
@@ -769,7 +780,7 @@ releases:
|
||||
text: "Made a failed or absent SH1106 display boot the node headless instead of crash-looping: display operations are now safe no-ops when the boot-time initialisation did not succeed."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.8.2"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.8.2"
|
||||
date: "2026-08-15"
|
||||
@@ -795,7 +806,7 @@ releases:
|
||||
area: board
|
||||
text: "Adopted upstream's SH1106 display address fallback (0x3C/0x3D) so board revisions with the other SA0 strap setting still get a working display, while keeping the EastMesh T-Beam S3 Supreme bring-up order and headless fallback."
|
||||
breaking_changes: []
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.8.3"
|
||||
tag: "observer-eastmesh-bridge-espnow-v2026.8.3"
|
||||
date: "2026-08-23"
|
||||
@@ -822,19 +833,25 @@ releases:
|
||||
text: "Added `eastmesh-tools/web-heap-check.sh` to read heap and service health over the HTTPS API and optionally stress the web panel with browser-style bursts."
|
||||
breaking_changes: []
|
||||
|
||||
- track: observer-posadmesh-bridge-espnow
|
||||
- track: repeater-mqtt-espnow
|
||||
version: "2026.10.0"
|
||||
tag: "observer-posadmesh-bridge-espnow-v2026.10.0"
|
||||
tag: "repeater-mqtt-espnow-v2026.10.0"
|
||||
date: "2026-10-07"
|
||||
previous_version: "2026.8.3"
|
||||
summary: "Полный рефакторинг под PosadMesh в сборках обсервера с ESP-NOW мостом: переименованы папки, скрипты, треки и теги, документация переведена на русский, удалены брокеры waev/meshmapper/letsmesh, репозиторий переехал на git.meshinfo.ru с локальной сборкой релизов, база обновлена до upstream MeshCore v1.17.1."
|
||||
summary: "Полный рефакторинг под PosadMesh в сборках MQTT-репитера с ESP-NOW мостом: переименованы папки, скрипты, цели сборки и треки (observer → mqtt), документация переведена на русский, удалены брокеры waev/meshmapper/letsmesh и линия companion-прошивок, репозиторий переехал на git.meshinfo.ru с локальной сборкой релизов, база обновлена до upstream MeshCore v1.17.1."
|
||||
changes:
|
||||
- type: changed
|
||||
area: upstream
|
||||
text: "База прошивки обновлена до upstream MeshCore v1.17.1."
|
||||
- type: changed
|
||||
area: release
|
||||
text: "Проект целиком переименован в PosadMesh: папки и скрипты (`eastmesh-docs` → `posadmesh-docs`, `eastmesh-tools` → `posadmesh-tools`, `eastmesh-build.sh` → `posadmesh-build.sh`), треки релизов (`observer-eastmesh*` → `observer-posadmesh*`), форматы тегов (`observer-posadmesh-v*`, `observer-posadmesh-bridge-espnow-v*`, `observer-posadmesh-bridge-mqtt-v*`), суффикс версии сборки (`-posadmesh-`) и переменная версии релиза (`EASTMESH_VERSION` → `POSADMESH_VERSION`)."
|
||||
text: "Проект переименован в PosadMesh и переведён на имена MQTT: папки и скрипты (`eastmesh-docs` → `posadmesh-docs`, `eastmesh-tools` → `posadmesh-tools`, `eastmesh-build.sh` → `posadmesh-build.sh`), цели сборки (`*_repeater_observer*` → `*_repeater_mqtt*`), треки релизов (`observer-eastmesh*` → `repeater-mqtt*`), форматы тегов (`repeater-mqtt-v*`, `repeater-mqtt-espnow-v*`, `repeater-mqtt-bridge-v*`), суффикс версии сборки (`-posadmesh-`) и переменная версии релиза (`EASTMESH_VERSION` → `POSADMESH_VERSION`)."
|
||||
- type: changed
|
||||
area: release
|
||||
text: "Удалена линия companion-прошивок: трек `companion-wifi` и команды сборки companion убраны из проекта, остаются только MQTT-сборки. Цели и код companion в upstream-оверлеях не изменялись."
|
||||
- type: fixed
|
||||
area: build
|
||||
text: "Сборка по группам снова работает: команды искали окружения по устаревшим суффиксам `_repeater_observer*`, а на Windows имена окружений приходили с символом `\\r`, из-за чего не находилось ни одной цели. Теперь используются реальные суффиксы `_repeater_mqtt*`, вывод PlatformIO очищается от `\r`, добавлены команды `build-mqtt-firmwares` (все MQTT-треки) и `list-mqtt`."
|
||||
- type: docs
|
||||
area: docs
|
||||
text: "Документация переведена на русский язык: `posadmesh-docs/*.md`, `README.md`, `RELEASE.md` и `AGENTS.md`. Команды, их вывод, код, пути и идентификаторы оставлены без перевода."
|
||||
@@ -857,8 +874,8 @@ releases:
|
||||
area: web
|
||||
text: "Исправлен разбор дерева регионов: завершающая буква `F` в имени региона срезалась, из-за чего `region allowf`, `region denyf` и `region remove` не работали для таких имён."
|
||||
breaking_changes:
|
||||
- "Формат тегов меняется на `observer-posadmesh-*`: прежние теги `observer-eastmesh-*` больше ничего не запускают и остаются только как история."
|
||||
- "Формат тегов меняется на `repeater-mqtt-*`: прежние теги `observer-eastmesh-*` больше ничего не запускают и остаются только как история."
|
||||
- "`EASTMESH_VERSION` переименована в `POSADMESH_VERSION`: локальные скрипты со старым именем соберут версию без суффикса PosadMesh."
|
||||
- "Команды `mqtt.meshmapper`, `mqtt.waev` и `mqtt.letsmesh-*` удалены; сохранённые выборы этих брокеров сбрасываются при обновлении."
|
||||
- "Документация больше не публикуется отдельным сайтом и читается в веб-интерфейсе git.meshinfo.ru."
|
||||
|
||||
- "Линия companion-прошивок удалена: трек `companion-wifi` и companion-сборки больше не выпускаются."
|
||||
|
||||
Reference in New Issue
Block a user