Files
fgl-aircon/docs/reports/M4_SOAK.md
T
petr.polezhaev 31cd56f082 core(M4): fglctl, fglair-discover, README библиотеки; M5 — вне скоупа core-релиза
- 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.
2026-09-29 01:16:58 +03:00

36 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-часовой прогон — приёмочный шаг перед релизом** (выполняется
владельцем; рекомендуется на том же стенде):
```sh
fglctl docs/legacy/config_kata.json monitor 86400 > soak24h.log 2>&1
# Accept: нет строк recovering/offline/KEY_ERROR; pushes_bad=0 в финальном STATS
```