Files
obsidian-vault/family/tech/zont-scenario-logic-11109.md
T

8.3 KiB
Raw Blame History

aliases, created, namespace, related, tags, title, type, updated
aliases created namespace related tags title type updated
ZONT сценарий 11109
Передернуть Автомат Котельной
ZONT тип 45 задержка
ZONT сценарная логика
2026-09-17 family
family/how-to/zont-config-compiler
family/tech/zont-config-object-types
family/how-to/home-automation
family
tech
zont
modbus
homeautomation
🔁 ZONT — сценарная логика (типы 11 / 46 / 49 / 45) tech 2026-09-17

🔁 ZONT — сценарная логика (типы 11 / 46 / 49 / 45)

Как устроены сценарии в конфиге ZONT и что именно разобрано в боевом конфиге config_0FA7C33CC89F_0FA7C33CC89F_2026-09-17_12-12-28.txt (598 #Z, 25 #S, 65 сценариев). Контекст конвертеров — family/how-to/zont-config-compiler.


1. Структура сценария

Сценарий — это 4 связанных типа объектов:

#Z<sid>=11,'Имя',[<шаг>,<шаг>,…],0,0,<enabled>,0,0     ← сценарий
#Z<step>=46,<prio>,<cond>,[<действие>,…],[]            ← шаг
#Z<cond>=49,<relay_id>,<operator>,<value>              ← условие
#Z<act>=…                                              ← действие (тип 5, 9 или 45)
Тип Роль Формат Поля
11 Сценарий [11, name, [step_ids], 0, 0, enabled, 0, 0] 8 полей. enabled — поле v[5] (0/1)
46 Шаг [46, prio, cond_id, [action_ids], []] 5 полей. prio и последнее поле — всегда 0/[]
49 Условие [49, relay_id, operator, value] 4 поля. operator: 1=equals, иначе not_equals
45 Задержка [45, <миллисекунды>] 2 поля

Каноническая форма (99% конфига): 1 сценарий → 1 шаг → 1 условие → 1 действие.


2. Действия в шаге — три разных типа

Список действий шага (46 поле 3) может содержать объекты трёх типов:

Тип Что это Формат Декодирование
5 Действие над выходом контроллера [5, name, output_ref, 1, delay, impulse_dur, [], sched_bmp, sched_time, impulse_period, value] 11 полей. output_ref >> 4 = id выхода; delay — поле 4 (мс)
9 Команда реле [9, name, target_relay, '1'/'0'] 4 поля. valueстрока '1'/'0', не число
45 Пауза между действиями [45, ms] 2 поля

⚠️ Тип 45 ≠ delay_ms типа 5. delay_ms — задержка внутри действия перед его выполнением. Тип 45 — отдельный объект-пауза в последовательности. Их часто путают при чтении конфига.


3. Разобранный кейс: #Z11109 «Передернуть Автомат Котельной»

Единственный сценарий в конфиге с нестандартной формой — 2 шага и 7 действий в одном шаге.

#Z11109=11,'Передернуть Автомат Котельной',[11827,11828],0,0,0,0,0
#Z11823=49,11190,1,0                                    ← условие
#Z11827=46,0,11823,[11191,11030,11824,11029,11825,11192,11826],[]
#Z11828=45,0                                            ← шаг 2
#Z11824=45,20000   #Z11825=45,60000   #Z11826=45,0
#Z11029=9,'Включить реле «20/1 Автомат Котельная»',11028,'1'
#Z11030=9,'Выключить реле «20/1 Автомат Котельная»',11028,'0'
#Z11191=9,'Включить реле «virt. Запретить передергивание»',11190,'1'
#Z11192=9,'Выключить реле «virt. Запретить передергивание»',11190,'0'
#Z11028=14,'20/1 Автомат Котельная',175728,0
#Z11190=14,'virt. Запретить передергивание',179904,0

Что происходит по шагам

Условие: relay 11190 ('virt. Запретить передергивание') == 0 — т.е. передёргивание не запрещено.

Шаг 1 (11827) — 7 действий подряд:

# Объект Действие Пауза после
1 11191 (type 9) включить virt. Запретить передергивание
2 11030 (type 9) выключить 20/1 Автомат Котельная
3 11824 (type 45) пауза 20 000 мс
4 11029 (type 9) включить 20/1 Автомат Котельная
5 11825 (type 45) пауза 60 000 мс
6 11192 (type 9) выключить virt. Запретить передергивание
7 11826 (type 45) пауза 0

Шаг 2 (11828)[45, 0], пустая пауза-заглушка. Оставлен планировщиком ZONT, функциональной нагрузки не несёт.

Смысл логики

Это защита от повторного передёргивания:

  1. Виртуальное реле virt. Запретить передергивание (id 11190) ставится в 1 первым действием.
  2. Условие сценария (11823) требует == 0 → пока реле в 1, сценарий повторно не запустится.
  3. Снимается реле только после 20 с + 60 с пауз (действие 6), т.е. через 80 секунд после старта → минимальный интервал между передёргиваниями автомата = 80 с.

🔴 Проблема

#Z11109 поле v[5] = 0сценарий выключен в контроллере. Защита и сама функция передёргивания не работают.


4. Полные счётчики по конфигу (для сверки после правок)

Тип Кол-во Комментарий
11 / 46 65 / 65 все одношаговые, кроме 11109
49 65 все ровно 4 поля, op=1 (equals) у всех
45 4 11824, 11825, 11826, 11828 — только в 11109
9 42 21 пара ВКЛ/ВЫКЛ, value — строка '1'/'0'
5 66 действия над выходами
14 40 реле
10 22 GUI-переключатели
0 / 36 13 / 13 дискретные датчики + вложенные конфиги
52 / 51 / 53 93 / 11 / 64 Modbus-регистры / устройства / ещё один слой
16 / 20 10 / 1 контуры и режимы отопления
Всего #Z 598

Проверка после любой правки: grep -c '^#Z' <файл> должен дать 598.


5. Статус разбора конвертером

Что Статус
Многошаговый сценарий ([11827,11828]) разбирается с 2026-09-17
7 действий в шаге 11827 разбирается с 2026-09-17
Тип 45 (4 объекта) парсер + эмиттер, секция YAML delays
Сценарий enabled=0 факт, не баг конвертера — решается на этапе 2 (правка YAML)

6. Связанные заметки