[2026-09-17] eagle: family/how-to/zont-config-compiler.md family/tech/zont-config-object-types.md
This commit is contained in:
@@ -16,7 +16,7 @@ tags:
|
||||
- reference
|
||||
title: "\U0001F9E9 ZONT Config — типы объектов"
|
||||
type: reference
|
||||
updated: '2026-09-17d'
|
||||
updated: 2026-09-17e
|
||||
---
|
||||
|
||||
# 🧩 ZONT Config — типы объектов
|
||||
@@ -110,25 +110,26 @@ Modbus-регистры (тип 52) в конфиге — **отдельные
|
||||
> — выдумка, удалена из кода.
|
||||
>
|
||||
> 🔴 **Поле 5 в YAML НЕ хранится** (`type`/`field5` вырезаны Alex) — только `enabled` производное.
|
||||
> **Чем отличать `manual` от `trigger` — открытый вопрос, см. §2.3a.**
|
||||
> **`manual` от `trigger` отличаются наличием ключа `trigger:`** — см. §2.3a.
|
||||
|
||||
Тип 11 парсится **целиком** — из него собирается `steps[]` (шаги 46 со своими условиями 49), включая многошаговые сценарии и много действий в шаге.
|
||||
|
||||
> ✅ **АКТУАЛЬНАЯ ФОРМА (2026-09-17, конец сессии).** Секции `scenario_steps` / `scenario_conditions` /
|
||||
> ✅ **АКТУАЛЬНАЯ ФОРМА (2026-09-17, финал).** Секции `scenario_steps` / `scenario_conditions` /
|
||||
> `delays` / `scenario_scripts` / `scenario_raw_objects` **убраны** — тела живут только внутри
|
||||
> `steps[]`. Осталась одна служебная секция `scenario_orphans`. **Ничего не поднимается на
|
||||
> уровень сценария:**
|
||||
> `steps[]`. Осталась одна служебная секция `scenario_orphans`.
|
||||
>
|
||||
> **Trigger-сценарий** (`steps` = ровно один шаг 46) — условие поднимается в `trigger:`:
|
||||
>
|
||||
> ```yaml
|
||||
> - id: 9691
|
||||
> name: 'Автомат.: Прихожая (н/п) (14/14) ВКЛ'
|
||||
> enabled: true
|
||||
> trigger:
|
||||
> id: 9729
|
||||
> object: 9495
|
||||
> value: 1
|
||||
> steps:
|
||||
> - id: 9819
|
||||
> if:
|
||||
> id: 9729
|
||||
> object: 9495
|
||||
> value: 1
|
||||
> then:
|
||||
> - id: 9563
|
||||
> descr: 'Включить выход 14/14: Прихожая (н/п)'
|
||||
@@ -136,25 +137,45 @@ Modbus-регистры (тип 52) в конфиге — **отдельные
|
||||
> value: 1
|
||||
> ```
|
||||
>
|
||||
> **Все остальные типы** — `trigger:` отсутствует, условие шага живёт в нём как `if:`:
|
||||
>
|
||||
> ```yaml
|
||||
> - id: 11109
|
||||
> name: Передернуть Автомат Котельной
|
||||
> enabled: true
|
||||
> steps:
|
||||
> - id: 11827
|
||||
> if:
|
||||
> id: 11823
|
||||
> object: 11190
|
||||
> value: 0
|
||||
> then:
|
||||
> - id: 11191
|
||||
> ...
|
||||
> ```
|
||||
>
|
||||
> `if` ← поле 2 (`cond_id`), `then` ← поле 3 (`[9563]`), `else` ← поле 4, `flag` ← поле 1.
|
||||
> `then`/`else`/`if`/`flag` — **имена полей записи 46**, поэтому разрешены.
|
||||
> `type` / `field5` / `kind` / `_f5` / `trigger` (на уровне сценария) / `action` — **запрещены**.
|
||||
> **`trigger:` на уровне сценария РАЗРЕШЁН** — выводится из тела (ровно один шаг 46), не подставляется.
|
||||
> `type` / `field5` / `kind` / `_f5` / `action` — **запрещены**.
|
||||
> Полностью — [[family/how-to/zont-config-compiler]] §6a.
|
||||
|
||||
### 2.3a. 🔴 Открытый вопрос: `manual` vs `trigger` без `type`/`field5`
|
||||
### 2.3a. ✅ `manual` vs `trigger` — РЕШЕНО (2026-09-17, финал)
|
||||
|
||||
**Тип сценария из тела не выводится.** Опровергнуто фактами на 70 сценариях:
|
||||
Alex: «наличием поля `trigger:`». **Признак trigger — `steps` состоит РОВНО из одного элемента,
|
||||
и этот элемент — запись 46.** Тогда его условие поднимается в `trigger:` на уровне сценария.
|
||||
|
||||
| сценарий | поле 5 | шаги в поле 2 | фактически |
|
||||
|---|---|---|---|
|
||||
| `11109` | `0` | `11827`, `11828` | manual |
|
||||
| `8456` | `8` | 27 элементов, среди них `8863` (46) | manual, выключен |
|
||||
| `9628` | `1` | `9756` (46) | trigger |
|
||||
| `8547` | `9` | `8550` (46) | trigger, выключен |
|
||||
| сценарий | поле 5 | шаги в поле 2 | `trigger:` наверху | фактически |
|
||||
|---|---|---|---|---|
|
||||
| `9691` | `1` | `[9819]` — один, 46 | ✅ есть | trigger |
|
||||
| `9628` | `1` | `[9756]` — один, 46 | ✅ есть | trigger |
|
||||
| `8547` | `9` | `[8550]` — один, 46 | ✅ есть | trigger, выключен |
|
||||
| `11109` | `0` | `11827`, `11828` — два | ❌ нет, `if` в шаге | manual |
|
||||
| `8456` | `8` | 27 элементов, среди них `8863` (46) | ❌ нет, `if` в шаге | manual, выключен |
|
||||
|
||||
Наличие шага 46 в `steps` **не признак trigger**: он есть и у обоих manual-сценариев.
|
||||
Формула «есть шаг 46 → база 1» дала 2 расхождения (`11109`, `8456`) и откачена.
|
||||
**Ждёт решения Alex.** Полный разбор — [[family/how-to/zont-config-compiler]] §6.
|
||||
⚠️ **Наличие шага 46 в `steps` — НЕ признак trigger**: он есть и у обоих manual-сценариев.
|
||||
Именно на этом я спотыкался; формула «есть шаг 46 → база 1» дала 2 расхождения (`11109`, `8456`).
|
||||
Правильная формула — **ровно один** элемент, и он 46. Проверено round-trip'ом: 0 расхождений.
|
||||
|
||||
Полная структура, формат полей и разобранный боевой кейс — [[family/tech/zont-scenario-logic-11109]].
|
||||
|
||||
|
||||
Reference in New Issue
Block a user