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

This commit is contained in:
Alexey Martemyanov
2026-09-17 14:21:52 +06:00
parent ab2993cd59
commit 610df81ab1
3 changed files with 245 additions and 6 deletions
+38 -3
View File
@@ -481,9 +481,10 @@ scenarios:
реле ставится в 1 первым действием, условие требует 0 → пока реле в 1, сценарий не перезапустится.
Минимальный интервал между передёргиваниями = 80 с (20+60).
> 🔴 **Защита в конфиге УЖЕ есть.** Поле v[5] сценария = `0` → сценарий **выключен в контроллере**,
> поэтому защита и функция передёргивания не работают. Вопрос «дописать логику» на деле может быть
> «включить существующую» (`enabled: true`) — это НЕ подтверждено Alex'ом, не додумывать.
> 🔴 **Защита в конфиге УЖЕ есть, но сценарий НЕ активен.** Поле v[5] сценария = `0` → ручной запуск
> в положении «выкл». ⚠️ **Исправлено 2026-09-17:** поле 5 — это **тип запуска** (`0`/`1` ручной,
> `8` расписание, `9` триггер, `10` интервал), а **не** булев `enabled`. См. §5i и
> [[family/tech/zont-scenario-logic-11109]] §8.1.
---
@@ -616,10 +617,42 @@ https://lk.zont-online.ru/download/firmwares/H2000_PRO_<HW>__<FW>_<PROFILE>.zip
---
## 5i. 🔴 Конструктор логики ZONT (типы 47/48/50/59) — НЕ ПОДДЕРЖАН
> **Найдено 2026-09-17.** Alex создал в UI тестовые сценарии («все доступные триггеры и варианты
> логики»). Разбор локального конфига `config_local_2026-09-17_14-16-35.txt` (660 `#Z`) вскрыл
> **визуальный конструктор логики** со скриптовым движком.
**Конвертер на этом конфиге падает:**
```bash
$ python3 config-to-yml.py zont_config/config_local_2026-09-17_14-16-35.txt > /tmp/new.yml
Ошибка: Условие 8496: не type 49
EXIT=2
```
**Две ключевые находки:**
1. 🔴 **Поле 5 типа 11 — НЕ `enabled`, а ТИП ЗАПУСКА:** `0`/`1` ручной, `8` расписание,
`9` триггер, `10` интервал. Поле 6 — параметр (для интервала — мс). **Текущий конвертер
теряет эту информацию** (сводит к булеву `enabled`).
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**
---
## 6. Состояние проекта (проверено 2026-09-17, вечер)
**Конвертеры закоммичены — `199f2b1`.** Рабочее дерево чистое (после этого коммита).
⚠️ **Но появился конфиг, который конвертер НЕ разбирает** — с конструктором логики (§5i).
| Файл | Статус |
|---|---|
| `config-to-yml.py`, `yml-to-config.py` | ✅ **изменены и закоммичены** (`199f2b1`, §5b) |
@@ -629,6 +662,8 @@ https://lk.zont-online.ru/download/firmwares/H2000_PRO_<HW>__<FW>_<PROFILE>.zip
| `zont_config/archive/` | **не в git** (`untracked`) — лежит в `.gitignore`-нейтральном состоянии |
| `zont_config/H2000_PRO_config_actual-{2,3,4}.txt` / `.yml` | ✅ **перемещены в `archive/` и закоммичены** (`7ae0e32`) |
| `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** |
| `~/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** |