From ab313baeb12c5abe8bceb48b689180633d260487 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Fri, 18 Sep 2026 00:17:16 +0600 Subject: [PATCH] [2026-09-18] eagle: personal/projects/zont-config-compiler.md --- personal/projects/zont-config-compiler.md | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/personal/projects/zont-config-compiler.md b/personal/projects/zont-config-compiler.md index b14e73af..4e08cc0f 100644 --- a/personal/projects/zont-config-compiler.md +++ b/personal/projects/zont-config-compiler.md @@ -93,6 +93,17 @@ aliases: - ZONT YAML якорь id002 - ZONT алиас sms_notifications - ZONT вызов сценария 11109 + - ZONT call_sub + - ZONT send_sms + - ZONT exit вместо end + - ZONT end: true + - ZONT scenario_orphans пустой + - ZONT орфанов нет + - ZONT круг 47 + - ZONT круг 48 + - ZONT круг 49 + - ZONT поле 4 expr + - ZONT битая ссылка exit - ZONT тип 11 сценарий - ZONT тип 3 SMS - ZONT артефакт yml устарел @@ -3992,3 +4003,35 @@ Alex: *«и `scenario_orphans: []` снеси. и пуш»*. выводится, энкодер считает его сам. Правило (проверено по всем 26 `expr`-записям в 9 дампах): `0` — правый операнд это id существующего объекта; `2` — литерал (объекта нет). +--- + +## 29. 📌 Шпаргалка: формы шага сценария (итог кругов 46-49) + +Всё, что может стоять в `steps` / `then` / `else`, и как оно выглядит в YAML: + +| Тип | Что это | Форма в YAML | +|---|---|---| +| 59 `puts` | печать в лог | `- id: N` + `log: <текст>` | +| 59 `storeev` | событие/сигналка | `- id: N` + `storeenv: {level, text}` | +| 59 `set <имя>` | присваивание | `- id: N` + `set_var: {name, value}` | +| 59 `expr` | выражение | `- id: N` + `type: expr` + `op`/`left`/`right` | +| 59 `objcmd` | команда объекту | `- id: N` + `set_sensor`/`set_analog_output`/`set_contour_temp: {target, value}` | +| 5 | действие на выход | `- id: N` + `{descr, target, action}` (`action` = 256/512) | +| 9 | команда реле/контура/режима | `- id: N` + `set_relay`/`set_contour_target`/`activate_mode: {descr, target, value}` | +| 11 | вызов сценария | `- call_sub: N` (своего `id` НЕТ) | +| 3 | отправка SMS | `- send_sms: N` (тело в `sms_notifications`) | +| 45 | ожидание | `- id: N` + `wait: <мс>` | +| 46 | условие | `- id: N` + `if`/`then`/`else` | +| 47/48/49 | лист условия | развёрнут на `op`/`left`/`right` | +| 50 | расписание | в `trigger:` — `type: days_mask` + `days` | +| — | **битая ссылка** | `- id: N` + `exit: true` (`id` **обязателен**) | + +🔴 **Различие двух «контурных» действий** (частая путаница, питфолл 96): + +- `set_contour_target` — **тип 9**: `#Z8817=9,'...',10034,'2782'`, уставка **числом** (`5.2 °C`); +- `set_contour_temp` — **тип 59 objcmd**: `#Z10379=59,'objcmd 8669 ",,,%0";#h',9146,0,0`, значение + **источником** (тело объекта под `value`). + +Кельвин `(code-2730)/10` применяется **только** к `set_contour_target` (цель типа 16) и **только** +если значение не является id объекта типа 20 — иначе `8574` (id режима) превращался в `584.4 °C`. +