- README.md (корень): сборка POSIX/ESP-IDF-компонентом, тесты, получение
ключа (fglair-discover), примеры fglctl; planned-компоненты помечены.
- examples/cli/fglctl.cpp: monitor/get/set/status на публичном API
(batch GET шаблона, конверсии, wait_online, логи в stderr, exit-коды;
сборка с -Wall -Wextra -Werror).
- tools/fglair-discover: облачный provisioning (eu/us/cn, endpoints и
app_id/secret из PROTOCOL §7), --format json|esphome-secrets, --out 0600,
обработка URLError/KeyError; stdlib-only.
- tests/tools/test_fglair_discover.py: мок-облако (http.server), 4 теста,
ctest tools_fglair_discover.
- docs/reports/M4_SOAK.md: 60-мин soak на AP-WC1E — 0 рассинхронов,
33/33 свойства (вкл. строковые), 273 опроса модуля, pushes_bad=0;
24-ч прогон — приёмочный шаг перед релизом.
- План: M4 ✅; M5 (FglHub/mDNS) — ВНЕ СКОУПА core-релиза.
- Гигиена: config_kata.json (корень+docs/legacy) в .gitignore; MQTT-креды
из docs/legacy/run.sh заменены плейсхолдером (история чистится отдельно).
- Фиксы ревью: mock арм fail-pushes после активации (флейк san-сборки);
fglctl: валидация strtoll (abc/99 — отказ, exit!=0), чтение config с
предупреждением об обрезке, Config{} вместо memset; discover: 0600.
CI: 11/11 ×3 (gcc-Rel, gcc-ASan/UBSan, clang); ESP-IDF esp32 build complete.
1.8 KiB
1.8 KiB
M4 soak-отчёт: fglctl monitor на живом приборе
- Дата: 2026-09-29, 00:16–01:16 MSK (60 минут)
- Прибор: AP-WC1E (fw 2.6.17-fgl2), IP/DSN — в локальном
docs/legacy/config_kata.json(не версионируется) - Команда:
fglctl docs/legacy/config_kata.json monitor 3600 - Лог: локально (артефакт прогона; сводка ниже)
Результаты
| Метрика | Значение |
|---|---|
| Смены состояний | registering → online → idle (stop) |
| recovering / offline / KEY_ERROR | 0 |
| Push'ей свойств | 33 (все свойства шаблона A, вкл. строковые) |
| Push'ей со статусом ≠ 200 | 0 |
pushes_ok / pushes_bad |
33 / 0 |
Опросов commands.json модулем |
273 (~каждые 13 с) |
| Re-key | 1 (только первичный; keep-alive 15 с предотвращает stale-gap re-key — PROTOCOL §4.4) |
Строковые свойства подтверждены на приборе: DeviceName="Wave13",
BuildingName="NoGroup", ServiceContact*="".
Вывод
60-минутный soak с непрерывным опросом модуля: 0 рассинхронов, 0 потерь,
сессия стабильна, delete_session при завершении отправлен.
Полный 24-часовой прогон — приёмочный шаг перед релизом (выполняется владельцем; рекомендуется на том же стенде):
fglctl docs/legacy/config_kata.json monitor 86400 > soak24h.log 2>&1
# Accept: нет строк recovering/offline/KEY_ERROR; pushes_bad=0 в финальном STATS