[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 12:55:15 +06:00
parent da8527f6a8
commit 78c04ea1fe
2 changed files with 209 additions and 41 deletions
+57 -5
View File
@@ -4,6 +4,7 @@ aliases:
- Передернуть Автомат Котельной
- ZONT тип 45 задержка
- ZONT сценарная логика
- ZONT поле 2 сценария
created: '2026-09-17'
namespace: family
related:
@@ -18,7 +19,7 @@ tags:
- homeautomation
title: 🔁 ZONT — сценарная логика (типы 11 / 46 / 49 / 45)
type: tech
updated: '2026-09-17'
updated: '2026-09-17b'
---
# 🔁 ZONT — сценарная логика (типы 11 / 46 / 49 / 45)
@@ -68,7 +69,8 @@ updated: '2026-09-17'
## 3. Разобранный кейс: `#Z11109` «Передернуть Автомат Котельной»
**Единственный сценарий в конфиге с нестандартной формой** 2 шага и 7 действий в одном шаге.
**Единственный сценарий в конфиге с нестандартной формой** — 7 действий в шаге и задержка (`45`)
прямо в поле 2 сценария (`11828`) вместо второго шага. См. §5 «Уточнение семантики поля 2».
```
#Z11109=11,'Передернуть Автомат Котельной',[11827,11828],0,0,0,0,0
@@ -100,7 +102,8 @@ updated: '2026-09-17'
| 6 | `11192` (type 9) | выключить `virt. Запретить передергивание` | — |
| 7 | `11826` (type 45) | пауза | 0 |
**Шаг 2 (`11828`)**`[45, 0]`, пустая пауза-заглушка. Оставлен планировщиком ZONT, функциональной нагрузки не несёт.
**Шаг 2 (`11828`)** на деле это не шаг, а **задержка** `[45, 0]` прямо в поле 2 сценария:
пустая пауза-заглушка. Оставлена планировщиком ZONT, функциональной нагрузки не несёт.
### Смысл логики
@@ -142,11 +145,60 @@ updated: '2026-09-17'
| Многошаговый сценарий (`[11827,11828]`) | ✅ разбирается с 2026-09-17 |
| 7 действий в шаге `11827` | ✅ разбирается с 2026-09-17 |
| Тип 45 (4 объекта) | ✅ парсер + эмиттер, секция YAML `delays` |
| Сценарий `enabled=0` | ℹ️ факт, не баг конвертера — решается на этапе 2 (правка YAML) |
| Round-trip всех 4 конфигов | ✅ чисто (`test_roundtrip.py`, коммит `199f2b1`) |
| Сценарий `enabled=0` | ℹ️ факт, не баг конвертера |
### 🔴 Уточнение семантики поля 2 (важно)
Поле 2 сценария — **не «список шагов»**, а **последовательность ссылок**, куда попадают объекты
**разных типов**. Полный список: шаг (`46`) **и** задержка (`45`).
В `#Z11109` поле 2 = `[11827, 11828]`, где:
- `11827` — настоящий шаг (`46`) с условием и 7 действиями;
- `11828`**задержка (`45,0`)**, т.е. «шаг-ожидание» без условия.
Поэтому формулировка «2 шага» неточна: **шаг один**, вторым элементом идёт задержка-заглушка.
Отсюда же — `extra_links` в YAML (см. [[family/how-to/zont-config-compiler]] §2.1): не-46 ссылки
сохраняются дословно, чтобы round-trip остался байт-точным.
> ⚠️ **Не путать с типом 45 внутри шага.** В `11827` задержки `11824`/`11825`/`11826` — это
> **действия внутри** шага. `11828` — **ссылка в поле 2 сценария**, т.е. элемент верхнего уровня.
---
## 6. Связанные заметки
## 6. План переработки YAML-структуры (2026-09-17, ждёт апрува)
Сценарии в YAML переписываются в нативную ZONT-форму **вложенных инструкций «если … то …»**
**без HA-синтаксиса** (`triggers`, `platform: state`). Alex: «нет структура должна быть как в zont.
**триггеров нет.**»
Предлагаемая форма для `11109`:
```yaml
scenarios:
- id: 11109
name: 'Передернуть Автомат Котельной'
enabled: false
blocks:
- id: 11827
if: {id: 11823, relay: 11190, operator: equals, value: 0}
then:
- {id: 11191, action: relay_on, relay: 11190}
- {id: 11030, action: relay_off, relay: 11028}
- {id: 11824, action: wait, ms: 20000}
- {id: 11029, action: relay_on, relay: 11028}
- {id: 11825, action: wait, ms: 60000}
- {id: 11192, action: relay_off, relay: 11190}
- {id: 11826, action: wait, ms: 0}
tail:
- {id: 11828, action: wait, ms: 0} # задержка из поля 2 сценария
```
Полный план и открытые вопросы — [[family/how-to/zont-config-compiler]] §5c.
---
## 7. Связанные заметки
- [[family/how-to/zont-config-compiler]] — конвертеры `.txt ⇄ .yml`; 2 шага и тип 45 **поддержаны с 2026-09-17** (§5b)
- [[family/tech/zont-config-object-types]] — полная таблица типов объектов и `#S`-настройки