[2026-09-17] eagle: family/how-to/zont-config-compiler.md family/tech/zont-scenario-logic-11109.md

This commit is contained in:
Alexey Martemyanov
2026-09-17 15:07:37 +06:00
parent 0d41ddf2e5
commit c223f5f500
2 changed files with 66 additions and 21 deletions
+22 -15
View File
@@ -21,7 +21,7 @@ tags:
- homeautomation
title: ⚙️ ZONT Config Compiler — конвертеры .txt ⇄ .yml
type: how-to
updated: 2026-09-17h
updated: 2026-09-17i
---
# ⚙️ ZONT Config Compiler — конвертеры `.txt ⇄ .yml`
@@ -384,20 +384,20 @@ diff A.txt B.txt # пусто = round-trip чистый
---
## 5c. 🔄 Переработка структуры YAML сценариев — ПРИОСТАНОВЛЕНО, ждёт решения (2026-09-17)
## 5c. 🔄 Переработка структуры YAML сценариев — 🟢 СОГЛАСОВАНО, парсер дописывается (2026-09-17)
> **СТАТУС: РАБОТА НЕ НАЧАТА. Alex дал «стоп» и поставил под сомнение сам проект.**
> Причина — исследование облачного API ZONT ([[family/tech/zont-api]]): Alex предположил, что
> у ZONT есть свой API/формат, покрывающий датчики и автоматику, и спросил — доделывать конвертер
> или переписать всё с 0.
> **СТАТУС (обновлено 2026-09-17, вечер): Alex дал «дописывай парсер».** Семантика типов
> 47/48/50/59 **раскрыта** (ответы Alex — [[family/tech/zont-scenario-logic-11109]] §8.7),
> таблица операторов и логики подтверждена фактами конфига. Работа по §5c разрешена.
>
> **Результат исследования: API конфиг не поддерживает** (сценарии/реле/11/14/46/49 — в API нет,
> `scenario` в доке 0 раз). Переписывать с 0 **не на что**. Конвертер остаётся единственным путём
> к сценариям. **Новый открытый вопрос Alex'у:** нужен ли онлайн-мониторинг ZONT в HA
> (отдельный проект на API, дополняет конвертер).
> ⚠️ **Но остались 8 непрозрачных элементов** конкретно в сценарии `8456`
> (`#8458`, `#8463`, `#8465`, `#8467`, `#8486`, `#8488`, `#9500`, `#8457`/`#8470`).
> Alex спросил «всё ли кристально прозрачно?» — ответ: **нет**. Вопросы заданы, ответа ещё нет
> (полный список — [[family/tech/zont-scenario-logic-11109]] §8.10).
>
> ⚠️ **Код конвертера НЕ тронут.** Коммит `199f2b1` — последнее рабочее состояние.
> Не начинать §5c без явного «делай» от Alex.
> 📌 **Решение по стратегии парсера:** сохранять байт-в-байт всё, что не понято (скрипты `59`
> как сырые строки, суффиксы `;#a`/`;#h`/`;#p`, отсутствующие id — как есть), без «умного» перевода.
> Тогда round-trip чистый, а непонятное не портится.
**Задача Alex (исходная):** «переписать блок парсинга/сборки сценариев чтобы он составлял синтаксис как у Home Assistant automations вместо текущей разбросанной структуры. с опциональными айдишниками у операторов».
@@ -639,9 +639,14 @@ EXIT=2
2. **Новые типы:** `47` (лист условия), `48` (группа И/ИЛИ), `50` (запуск по id),
`59` (мини-скрипт: `objcmd`/`objstate`/`expr`/`set`/`puts`/`storeev`).
**Что нужно сделать** (после ответов Alex на семантику — [[family/tech/zont-scenario-logic-11109]] §8.7):
парсер 47/48/50/59 с рекурсивным деревом условий; поле 5 хранить как тип запуска; принимать
непустое поле 4 шага; допускать не-46 типы в поле 2.
**Что нужно сделать** (семантика получена — [[family/tech/zont-scenario-logic-11109]] §8.7;
работа разрешена Alex'ом 2026-09-17 вечером, «дописывай парсер»):
парсер 47/48/50/59 с рекурсивным деревом условий; поле 5 хранить как тип запуска (плюс маска дней
и время для расписания); принимать непустое поле 4 шага; допускать не-46 типы в поле 2.
> 📌 **Стратегия:** всё непонятое (скрипты `59` дословно, суффиксы `;#a`/`;#h`/`;#p`, отсутствующие id)
> сохранять байт-в-байт, без «умного» перевода — round-trip останется чистым. 8 открытых вопросов
> по сценарию `8456` — [[family/tech/zont-scenario-logic-11109]] §8.10.
➡️ **Полный разбор — [[family/tech/zont-scenario-logic-11109]] §8**
@@ -664,6 +669,8 @@ EXIT=2
| `zont_api_docs/` | ✅ **новая папка** — локальная копия доки облачного API ZONT (`zont_api_docs.html` 250 KB, `zont_api_docs.txt` 99 KB, `convert.py`). **не в git**. Исследование — [[family/tech/zont-api]] |
| `zont_config/config_local_2026-09-17_14-16-35.txt` | 🆕 **34 907 байт, 660 `#Z`, 25 `#S`** — конфиг с **тестовыми сценариями** Alex (все виды триггеров/логики). Снят с `http://192.168.0.50/config.txt`. **не в git** |
| `dump_new_types.py`, `probe_types.py`, `trace_scenarios.py` | 🆕 **новые скрипты разбора** сценарных типов 47/48/50/59. Разбор — [[family/tech/zont-scenario-logic-11109]] §8.8. **не в git** |
| `read_scenarios.py` | 🆕 **читаемый дамп сценария** — дерево если/то/иначе с именами объектов. Токенайзер `split_top()` учитывает кавычки/`\`/`[]`. **не в git** |
| `probe_sched.py`, `verify_answers.py`, `check_ops.py`, `audit_8456.py`, `audit2.py` | 🆕 **проверочные скрипты** — расписание, ответы Alex против конфига, операторы, аудит 8456. **не в git** |
| `~/rasputin-tmp/zont-util/` | ✅ **новая папка на Mac** (вне репо) — настроечная утилита `H1000 Programmator` 2.8.5, драйвер USB, прошивка `.enc`, скрипт распаковки `extract.py`. Разбор — §5g-2, [[family/tech/zont-api]] §10 |
| `~/rasputin-tmp/zont-{auth-probe,recon,recon2,ws-probe}.js` | ✅ скрипты разведки локального WS-интерфейса. **не в git** |