Commit Graph
3902 Commits
Author SHA1 Message Date
shade 906f6fa7fa feat: лимит флуда анонсами и бюджет канала; перевод веб-панели на русский 2026-10-20 18:23:05 +03:00
shade 94d2ae57f1 feat(build): gzip страниц веб-панели и проверка размера образа; модули AdvertJail и ChannelBudget 2026-10-20 18:15:04 +03:00
shade a4e80805d6 прошивальщик: баннер и проверка свежести — не отдаём ссылки на удалённые файлы из старой вкладки 2026-10-18 09:29:01 +03:00
shade b8d38db198 docs: план на следующий релиз — убрать мёртвые префы вентилятора 2026-10-16 18:23:41 +03:00
shade bdc8a19bd2 fix(flasher): восстановлена кодировка index.html (русский текст был испорчен) 2026-10-16 18:10:59 +03:00
shade 98c6272c24 feat(flasher): блоки версий, заметный поиск платы и прошивка своего файла 2026-10-16 18:10:02 +03:00
shade e1d40a5a81 chore: манифест прошивальщика под релиз 2026.10.1 (224 файла, 112 целей) 2026-10-16 16:38:10 +03:00
shade d383732a31 fix(mqtt): версия в телеметрии снова с суффиксом проекта
- поле firmware_version бралось из FIRMWARE_VERSION, куда при сборке передаётся
  только база upstream (v1.18.0), поэтому сервис видел ровно 1.18.0
- строка собирается в коде: MQTT_FIRMWARE_VERSION = FIRMWARE_VERSION "-posadmesh-meshcoretel",
  публикуется v1.18.0-posadmesh-meshcoretel; одинаково для локальной сборки и CI
- исправлены оба пейлоада: online (со статистикой) и offline
- запасное значение FIRMWARE_VERSION в MQTTUplink.cpp приведено к v1.18.0
- README: запись в журнале изменений
repeater-mqtt-v2026.10.1 repeater-mqtt-espnow-v2026.10.1 repeater-mqtt-bridge-v2026.10.1
2026-10-16 12:04:59 +03:00
shade a761c68f45 docs: мастер настройки — батарея, калибровка ADC от значения платы, экран загрузки
- device-setup.md: раздел про ADC дополнен (старт от заводского значения платы,
  формат x.xxx, коррекция на всех платах, пометка base), добавлен раздел про
  экран загрузки, обновлены таблица меню и макеты экранов
- README: записи в журнале изменений
- release-notes.yml: релиз 2026.10.1 для треков repeater-mqtt,
  repeater-mqtt-espnow и repeater-mqtt-bridge (база upstream v1.18.0)
2026-10-16 11:54:24 +03:00
shade b3a6be4a7f feat: ADC-поправка батареи для всех плат, вариант A на экране загрузки
- ESP32Board: общий механизм adcMultiplierBase()/adcMultiplier(); setAdcMultiplier
  возвращает false только там, где батарея измеряется не через ADC
- платы со своей формулой переведены на общий механизм: Heltec E213/E290/T190,
  heltec_tracker_v2, Heltec v2, ThinkNode M2/M5; Station G2/G3 и T-Beam сообщают,
  что подстройка не поддерживается
- мастер настройки: поле ADC стартует от действующего значения платы
  (getAdcMultiplier) и работает с тремя знаками (x.xxx), например 5.420;
  0.000 возвращает заводское значение платы
- Meshadventurer: добавлена поддержка множителя (раньше делитель был зашит числом 2
  и set adc.multiplier отвечал Error: unsupported)
- экран загрузки: meshcore.io, версия с датой и posadmesh.ru; строка < Repeater > убрана

Проверено сборкой: heltec_v4_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt
2026-10-16 11:35:07 +03:00
shade 82ec2f4c83 fix(ui): всплывающее окно для ответов устройства в мастере настройки
- ответ CLI показывался строкой поверх экрана и сливался с содержимым, особенно
  в верхней части (например OK - reboot to apply на экране частоты)
- теперь это модальное окно: рамка, свой фон, перенос текста и кнопка OK;
  закрывается коротким нажатием, пока открыто — экран под ним не меняется
- окно показывается сразу (сброс таймера отрисовки), при закрытии экран
  перерисовывается немедленно
- setToast/renderToast заменены на showPopup/renderPopup
- документация: posadmesh-docs/device-setup.md (раздел «Всплывающие сообщения»
  и макет экрана), README — журнал изменений

Проверено сборкой: heltec_v4_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt,
Generic_E22_sx1262_repeater_mqtt (без дисплея)
2026-10-16 11:16:16 +03:00
shade 8f27aa9202 fix(ui): мастер настройки больше не отправляет set radio с нулевыми значениями
- applyRadio() отправлял команду всегда, в том числе при выходе из меню, если
  в этой сессии не открывали ни один радиопункт: рабочая копия (_radio_*) оставалась
  нулевой, устройство отвечало Error, invalid radio params
- добавлен признак _radio_dirty: команда уходит только после реальной правки
  частоты, полосы, SF или CR; при успешном применении признак сбрасывается
- перед отправкой значения перечитываются из настроек узла (loadRadio), а при
  каждом входе в мастер рабочая копия обновляется (_radio_loaded = false)
- README: запись в журнале изменений

Проверено сборкой: heltec_v4_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt,
Generic_E22_sx1262_repeater_mqtt (без дисплея)
2026-10-16 11:03:21 +03:00
shade 1e751a85d4 feat(ui): экран батареи и калибровка ADC в мастере настройки
- UITask: новые пункты меню Battery и ADC
  Battery — напряжение, процент заряда, полоска и текущий множитель ADC; короткое
  нажатие показывает «сырое» значение АЦП в милливольтах, длинное/двойное — выход в меню
  ADC — поразрядная правка множителя в формате x.xx (как полоса), под цифрами
  показывается измеренное напряжение, поэтому калибровать можно прямо на экране
- процент заряда берётся у платы (getBatteryPercent), а если плата его не считает —
  линейно по getBatteryMinMilliVolts()/getBatteryMaxMilliVolts()
- множитель применяется командой set adc.multiplier, значение 0.00 возвращает
  заводской расчёт платы; проверка и сохранение остаются в CommonCLI
- поразрядный редактор SCREEN_DIGITS теперь обслуживает и полосу, и ADC
- документация: posadmesh-docs/device-setup.md (таблица меню, раздел «Батарея и
  калибровка ADC», два новых макета экранов), README — журнал изменений

Проверено сборкой: heltec_v4_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt,
Generic_E22_sx1262_repeater_mqtt (без дисплея — код исключается препроцессором)
2026-10-16 10:32:27 +03:00
shade 8fa0bfe1d3 feat: MQTT-окружения для Waveshare S3 LR1121 и переход AGENTS.md на работу в main
- добавлены Waveshare_S3_LR1121_repeater_mqtt/_espnow/_bridge: из новых плат
  upstream 1.18.0 только эта на ESP32; ThinkNode M8 и M4, Wio Tracker L1 1W и
  Muzi Base — на nRF52, WiFi нет, MQTT-сборки для них невозможны (им место в
  форке MeshCore, не здесь)
- EnvironmentSensorManager: возвращён scanI2CBus из upstream (слияние его
  потеряло, потому что мы когда-то заменили полное сканирование шины поштучной
  проверкой адресов); при этом сохранён наш таймаут 20 мс на ESP32 и наша
  поддержка адреса, определённого платой
- AGENTS.md: работаем в main, ветка develop устарела (эпоха EastMesh); upstream
  тянем релизным тегом, а не веткой dev; версия upstream — v1.18.0

Проверено сборкой после слияния:
  heltec_v4_repeater_mqtt, LilyGo_TBeam_1W_repeater_mqtt,
  Meshadventurer_sx1262_repeater_mqtt, RAK_3112_repeater_mqtt,
  heltec_v4_repeater_mqtt_espnow, heltec_v4_repeater_mqtt_bridge,
  LilyGo_Tlora_C6_repeater_mqtt_espnow (наш фикс ESP-IDF 5),
  LilyGo_TBeam_1W_repeater_mqtt_espnow,
  Waveshare_S3_LR1121_repeater_mqtt, Waveshare_S3_LR1121_repeater_mqtt_bridge
MQTT-целей стало 112: 42 uplink, 34 espnow, 36 bridge
2026-10-16 10:20:54 +03:00
shade 80d36d20bc Merge upstream MeshCore v1.18.0 (tag repeater-v1.18.0) into main
Разрешённые конфликты (12 файлов, из них 4 companion взяты из upstream целиком):

- examples/companion_radio/*: взят upstream, companion в форке не собирается
- examples/simple_repeater/MyMesh.cpp: убрана наша интеграция вентилятора
  (setFanPostTxHoldMs/setFanMode) — upstream 1.18.0 сам грузит настройки вентилятора
  через attachDynamicPrefs, а его CLI (get fan, set fan auto|on|off, set fan.lo/hi)
  доступен через board.handleCommand из CommonCLI; удалён наш дублирующий блок
  get fan/set fan. Оставлена наша сигнатура format*StatsReply(char*, size_t)
- examples/simple_repeater/MyMesh.h: оставлены наши WebSensorSnapshot/BlacklistEntry/
  ChanNameFilter и getCLI() (нужен мастеру настройки), добавлен upstream isHiddenNode();
  FIRMWARE_VERSION по умолчанию — v1.18.0
- src/helpers/CommonCLI.h: оставлены наши FanPrefs (совместимость NVS) и добавлен
  upstream DynamicConfigSerializer custom (getCustom() нужен attachDynamicPrefs)
- src/helpers/ESP32Board.h: время восстанавливается сначала из NVS (наша надстройка,
  переживает отключение питания), затем из RTC-памяти upstream, иначе опорная дата;
  deep sleep по-прежнему не трогаем
- src/helpers/sensors/EnvironmentSensorManager.cpp: взята логика upstream
  (detected[], один драйвер на тип), поверх возвращено определение адреса платой
  (boardDetectedI2CSensorAddress)
- variants/lilygo_tbeam_1w/*: взят upstream (задача вентилятора, NTC, гистерезис,
  CLI и сохранение настроек), наши правки перенесены как делегирование его API
- README.md: оставлен наш
2026-10-16 10:05:18 +03:00
shade 8ad032a311 прошивальщик: манифест под релиз v0.2.0 после фикса меню (sha 6f67162f, версия без изменений) pre-1.18.0 2026-10-15 23:08:08 +03:00
shade 40f1726f1b прошивальщик: манифест под пересобранный релиз v0.2.0 (версия без изменений, sha 2831eab6) 2026-10-15 22:01:28 +03:00
shade 3487352665 прошивальщик: список файлов разбит по версиям, свежая версия сверху 2026-10-15 21:24:03 +03:00
shade be15e247fc прошивальщик: манифест под релиз MeshCore v0.2.0 (форк на базе 1.18.0) 2026-10-15 21:13:16 +03:00
Scott Powell 81dbae592f Merge branch 'dev' 2026-10-15 19:42:40 +11:00
Scott Powell 07a833bbbe * version 1.18.0 2026-10-15 19:42:01 +11:00
ripplebiz 9043a2bbf8 Merge pull request #3596 from recrof/wifi-companion-boards
added dynamic wifi to: heltec wsl3, v4r8, wireless paper; rak 3112; seeed xiao s3 (wio)
2026-10-15 19:35:32 +11:00
Rastislav Vysoky 97c0aec8d6 added dynamic wifi to: heltec wsl3, v4r8, wireless paper; rak 3112; xiao s3 (wio) 2026-10-15 09:57:31 +02:00
ripplebiz f1b608a777 Merge pull request #2377 from fschrempf/dev
Disable NRF52 undervoltage bootlock feature
2026-10-15 15:02:12 +11:00
Liam Cottle 2586f7abe3 Merge pull request #3591 from liamcottle/feature/companion-ble-wifi
Add WiFi support to Heltec v3 and v4 BLE variants
2026-10-14 20:23:11 +13:00
liamcottle a0fc769660 rework companion ui for ip address so it fits in multi interface variants 2026-10-14 16:29:41 +13:00
liamcottle c0d00a060a enable wifi interface for heltec v4 ble variant 2026-10-14 15:16:55 +13:00
liamcottle 590bc23ab9 enable wifi interface for heltec v3 ble variant 2026-10-14 15:05:00 +13:00
Liam Cottle 8e48e01a4b Merge pull request #3589 from meshcore-dev/remove-room-repeater
Room: "set repeat" CLI now deprecated
2026-10-14 14:27:54 +13:00
Scott Powell 481f72cae7 * only 'repeat on' now intercepted 2026-10-14 12:21:38 +11:00
ripplebiz d86cad8a82 Merge pull request #3575 from agessaman/feat/lr1121-dual-band-power
LR1121: keep TX power valid across sub-GHz and 2.4 GHz
2026-10-14 12:04:47 +11:00
ripplebiz 97113a7050 Merge pull request #3574 from agessaman/feat/waveshare-esp32s3-lr1121
feat(variants): add Waveshare ESP32-S3-LR1121
2026-10-14 12:00:11 +11:00
Scott Powell 8579c66747 * Room: "set repeat" CLI now deprecated 2026-10-14 11:48:58 +11:00
ripplebiz b47fd54905 Merge pull request #3573 from meshcore-dev/ack-timing-fix
ACK forwarding timing fix
2026-10-13 15:48:29 +11:00
ripplebiz 52d7bf1551 Merge pull request #3568 from meshcore-dev/zero-scope
Treat transport code 0 the same as un-scoped.
2026-10-13 15:48:02 +11:00
shade a8cb4557cf прошивальщик: из README убран раздел с былыми ошибками 2026-10-12 13:44:33 +03:00
shade 5edfc149b7 прошивальщик: манифест под релиз MeshCore v0.1.1 2026-10-12 11:01:47 +03:00
shade 9937f26631 Прошивальщик: данные прошивки передаются строкой в esptool-js (ошибка charCodeAt) 2026-10-12 08:53:07 +03:00
shade 83f70c2241 Прошивальщик: манифест пересобран под новые имена MeshCore (e110fd87) 2026-10-12 08:49:31 +03:00
agessaman eac6e66b1b fix(radiolib): keep LR1121 tx power valid across sub-GHz and 2.4 GHz
- Clip requested power to the active PA's range instead of failing. A
  stored 22 dBm was rejected at 2.4 GHz (HF PA max 13 dBm), and since
  setTxPower ignores errors the sub-GHz PA stayed configured.
- Re-apply the requested power after every successful retune: PA choice
  depends on the band, and set radio / tempradio only call setParams.
2026-10-11 21:07:05 -07:00
agessaman 3d1a5d4c64 feat(variants): add Waveshare ESP32-S3-LR1121
ESP32-S3FH4R2 (4MB flash, 2MB PSRAM, native USB-CDC) with an LR1121.
Pins, the DIO5/DIO6 RF switch table and the 1.8 V TCXO follow the HF
schematic and Waveshare's examples. Envs: repeater, room server,
companion USB/BLE and KISS modem, all on min_spiffs so roles share one
partition layout.

Only RFO_HP_LF is wired (R4 on RFO_LP_LF is not fitted), so the new
opt-in LR1121_FORCE_HP_PA flag keeps RadioLib on the HP PA at <= 14 dBm,
where it would otherwise select the unconnected LP PA.
2026-10-11 20:51:18 -07:00
Scott Powell 6df5aaed43 * ACK forwarding (in direct mode) had zero delay 2026-10-12 10:44:42 +11:00
shade c42cca13c4 fix(ci): установка uv без системного pip и uv sync перед сборкой
- в Gitea Actions шаг "Install uv" падал на Ubuntu 24.04: pip в систему запрещён (PEP 668)
- uv ставится официальным установщиком в ~/.local/bin, каталог добавляется в PATH
- добавлен шаг uv sync: posadmesh-build.sh запускает pio через "uv run --no-sync",
  значит окружение с platformio должно существовать заранее
- actions/cache обновлён до v4, добавлен continue-on-error и кэш ~/.cache/uv
- причина, по которой это вылезло только сейчас: runner был зарегистрирован за
  репозиторием shade/meshcore, а workflow живёт в shade/MeshCore-Posadmesh
2026-10-12 00:03:23 +03:00
shade 4ad2ffeae7 feat: browser flasher page for MeshCore and PosadMesh firmware
- страница https://meshinfo.ru/flasher/: два набора прошивок отдельными списками
  (MeshCore — наш форк, релиз shade/MeshCore v0.1.0; PosadMesh — три трека MQTT)
- запись ESP32 через Web Serial и esptool-js 0.5.4 (лежит локально, без CDN):
  -merged.bin пишется по адресу 0x0, обычный .bin — по 0x10000
- галочка полного стирания флеша и отдельная кнопка только стирания;
  для nRF52 (.uf2/.zip) — скачивание и инструкция по UF2-диску или DFU
- index.json собирается скриптом posadmesh-tools/build-flasher-index.py из релизов Gitea
  (270 файлов, 57 плат), страница не обращается к API из браузера
- файлы прошивок отдаются nginx-проксированием релизов Gitea: один origin, без CORS
- README: запись в журнале изменений; posadmesh-docs/releases.md: раздел про прошивку из браузера
2026-10-11 23:27:21 +03:00
shade 2873467039 docs(release): add 2026.10.0 entry for the MQTT bridge track
- release-notes.yml: добавлена запись 2026.10.0 для трека repeater-mqtt-bridge
  (трек был в реестре, но записей о релизах не имел)
- записи 2026.10.0 содержат исправление сборки ESP-NOW на ESP32-C6
2026-10-11 22:35:35 +03:00
shade 1cfb03f604 docs: note ESP-NOW C6 fix and published 2026.10.0 releases
- release-notes.yml: в записи 2026.10.0 добавлен пункт про исправление сборки ESP-NOW
  на ESP32-C6 (IDF 5)
- README: отмечены опубликованные релизы repeater-mqtt*, espnow и bridge
2026-10-11 22:34:10 +03:00
shade 3ee31afd0f fix: ESP-NOW receive callback for ESP-IDF 5 (ESP32-C6 targets)
- ESPNowBridge::recv_cb адаптирован под ESP-IDF 5: первый параметр — esp_now_recv_info_t,
  длина имеет тип int; старый вариант оставлен для IDF 4 через ESP_IDF_VERSION
- это починило сборку трёх целей на ESP32-C6: LilyGo_Tlora_C6_repeater_mqtt_espnow,
  M5Stack_Unit_C6L_repeater_mqtt_espnow, WHY2025_badge_repeater_mqtt_espnow
- README: запись в журнале изменений
repeater-mqtt-v2026.10.0 repeater-mqtt-espnow-v2026.10.0 repeater-mqtt-bridge-v2026.10.0
2026-10-11 22:17:47 +03:00
shade 04bb5714c8 feat: Save & exit in radio editors, wiki docs with screen images
- экраны Frequency и Bandwidth: единица измерения в конце строки значения
  (868.731 MHz, 062.50 kHz), внизу отдельный пункт Save & exit
- после правки цифр пользователь переходит на Save & exit и удерживает кнопку:
  значения применяются, экран возвращается в предыдущее меню
- документация: страница posadmesh-docs/device-setup.md дополнена схемой управления
  и изображениями всех экранов (12 картинок в posadmesh-docs/_assets/wizard/)
- вики Gitea: страницы Home и Device-Setup с теми же иллюстрациями
- README: ссылка на вики, схема управления и запись в журнале изменений
2026-10-11 18:44:30 +03:00
shade ce1b71d6fd feat: separate radio settings in the on-device setup wizard
- радиопресет заменён на четыре отдельных пункта меню: Frequency, Bandwidth, CR, SF
- частота: целые МГц шагом +-1, кГц правятся по разрядам (принцип как у координат)
- полоса: поразрядный ввод значения с точкой (формат 062.50)
- CR и SF: шаг +-1 с ограничением 5-8 и 5-12
- применение любого из четырёх пунктов отправляет set radio <частота>,<полоса>,<sf>,<cr>
  целиком, остальные значения сохраняются; внизу меню остаётся Save & exit
- документация device-setup.md обновлена, README: раздел и журнал изменений
- проверено сборкой: heltec_v4_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt,
  Generic_E22_sx1262_repeater_mqtt (без дисплея)
2026-10-11 18:06:55 +03:00
shade 71f7095d17 feat: on-device setup wizard for repeaters with display and button
- добавлен локальный мастер настройки репитера: examples/simple_repeater/UITask.*
  (меню на кнопке, редактор координат, применение значений через CommonCLI)
- MyMesh: публичный доступ к CommonCLI для UI (getCLI), main.cpp передаёт его в UITask
- мастер работает на любой цели с дисплеем и кнопкой и исключается препроцессором
  там, где их нет; WiFi-код теперь под #if defined(ESP32)
- новая страница документации posadmesh-docs/device-setup.md, ссылки в index.md и mkdocs.yml
- README: раздел «Настройка с дисплея и кнопки» и запись в журнале изменений
- проверено сборкой: heltec_v4_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt,
  Generic_E22_sx1262_repeater_mqtt (без дисплея), RAK_3112_repeater_mqtt
2026-10-11 17:44:41 +03:00