petr.polezhaev
b84bd8d555
ha(H1): исправления по ревью — жизненный цикл сессии, самодостаточный wheel
...
- C1: единственный владелец stop+destroy — reader-поток; close() только
выставляет флаг и ждёт; повторный close и close из колбэка безопасны
(регресс-тесты; TSan на close с мёртвым модулем — 0 гонок)
- M1: wheel собирается с bundled mbedtls (нет внешней soname mbedcrypto);
попутно исправлена bundled-ветка CMake (-lSTATIC)
- C-API: счётчики потерянных событий/логов, лог-кольцо без union-балласта,
атомарные fn/ctx лог-синка
- provision: валидация формата облачных ответов; CLI: человеческие ошибки
(exit 2), --out с правами 0600, console_script pyfglair
- упаковка: MANIFEST.in (sdist с C++-исходниками), очистка stale .so,
readme в метаданных; find_library без ложных .bak
- тесты: close-сценарии, доставка логов, ошибки CLI/provision, C-API очередь
2026-09-29 11:48:32 +03:00
petr.polezhaev
0292404756
ha(H1): pyfglair — cffi-ядро (очередь событий), wheel, CLI discover/monitor
...
- CMake: shared-таргет fgl-aircon-shared (FGL_BUILD_SHARED, PIC, SOVERSION)
- C-API: fgl_prop_raw_range + кольцевые очереди событий/логов
(fgl_session_poll/wait_events, fgl_log_poll/wait_events): прямые колбэки
из потоков ядра со стеком 8 КБ небезопасны для интерпретатора Python
- pyfglair: _corebuild (cmake->wheel), _cffi (ABI), Session (reader-поток ->
loop.call_soon_threadsafe), templates (интроспекция C-таблиц), provision
(aiohttp), CLI discover/monitor + esphome-secrets
- setup.py/pyproject: платформенный wheel py3-none-linux_x86_64 с .so
- tests/pyfglair: templates, provision (мок-облако), session + CLI против
mock_ac.py; scripts/py-ci.sh; ci.sh запускает python-часть
2026-09-29 11:31:57 +03:00
petr.polezhaev
301cf5cf70
docs: корректировки планов — монорепо, слои ayla/aircon, конверсии, приёмка
...
- PLAN_CORE: монорепозиторий (CMakeLists в корне; components/fglair,
custom_components/fglair, include/fgl-aircon, src/{ayla,aircon},
src/ayla/platform); логическое разделение ayla (протокол+цикл) /
aircon (конверсии+шаблоны+API); тесты зеркалят слои (tests/{ayla,aircon});
конверсии: шаблон / линейные коэффициенты / функция-указатель
(лямбды ESPHome); оценка httpd/json (jsmn вендор, свой мини-httpd на
BSD-сокетах, conan не нужен); README библиотеки в M4.
- PLAN_ESPHOME: host вместо ip_address (DNS + Ayla-mDNS :10276),
секреты в примерах, кастомные конверсии через !lambda, advanced-пример
(триггеры режимов + LVGL с пропусками), README-план, скрипт приёмки
(aioesphomeapi + HA REST).
- PLAN_HOME_ASSISTANT: шаг config flow с превью рассчитанных значений
шаблона (через cffi в C-ядро, без дублей), README с HACS-инструкцией
и заглушками под скриншоты с описаниями, приёмка (long-lived token).
- Убраны реальные dsn/ip/lanip_key/key_id из примеров; probe_mdns.py
принимает DSN аргументом.
2026-09-21 13:20:29 +03:00
petr.polezhaev
9469f0104c
refactor: legacy и apk перенесены в docs/, дедупликация исходников legacy
...
- docs/legacy/: рабочая раскладка изменённого форка (main.py + пакет
aircon/); плоские дубликаты .py удалены, вложенный .git клона удалён
(это изменённая копия, а не чистый клон), __pycache__ и .gitignore
апстрима убраны. Локальный config_kata.json не версионируется
(содержит lanip_key устройства).
- docs/apk/: манифест APK; бинарники *.apk и icon.png не версионируются.
- Обновлены пути в документации и tools/.
2026-09-17 19:48:55 +03:00
petr.polezhaev
359203abfe
docs: реконструкция LAN-протокола FGLair, анализ legacy, планы fglair-core/HA/ESPHome
...
- PROTOCOL.md: полная спецификация (KDF, envelope/CBC-цепочка, local_reg,
key exchange, commands.json 206/200, datapoint push, тайминги, таблицы
свойств шаблонов A/B/F, облачный provisioning). Факты из APK помечены
[APK], проверенные живыми экспериментами на AP-WC1E — [ПРОВЕРЕНО НА
ПРИБОРЕ]: mDNS только :10276; лимит 2 LAN-сессии (3-я -> 503);
принудительный re-key при возрасте сессии >= ~44с (единственный механизм
самолечения десинхрона — 400/401 модуль игнорирует); записи не
эхируются; delete_session освобождает слот.
- LEGACY_ANALYSIS.md: причины рассинхрона (keep-alive 1200с вместо 10-15с
+ seq_no-фильтр) и перегрузки модуля; требования к новой реализации.
- PLAN_CORE_LIBRARY.md: план C++20-библиотеки fglair-core (Linux + ESP-IDF),
ключ lanip_key считается статичным, ротация — только ошибка + ручной
перепровижининг.
- PLAN_HOME_ASSISTANT.md: pyfglair (cffi wheel) + custom component,
облачный provisioning только в config flow, ключ виден в диагностике
для копирования в ESPHome.
- PLAN_ESPHOME.md: external component, только ESP-IDF framework.
- tools/probe_reference.py: эталонный клиент протокола (проверен на
приборе end-to-end); tools/probe_mdns.py — mDNS-проба.
- legacy/: снимок скрипта (апстрим gyro-labs/AirCon, вложенный клон не
версионируется); apk/*.apk исключены из версионирования.
2026-09-17 19:44:49 +03:00