[2026-09-18] eagle: personal/projects/zont-config-compiler.md personal/tech/roundtrip-key-verification.md
This commit is contained in:
@@ -96,6 +96,15 @@ aliases:
|
||||
- ZONT тип 11 сценарий
|
||||
- ZONT тип 3 SMS
|
||||
- ZONT артефакт yml устарел
|
||||
- ZONT круг 47
|
||||
- ZONT круг 48
|
||||
- ZONT круг 49
|
||||
- ZONT call_sub
|
||||
- ZONT send_sms
|
||||
- ZONT exit
|
||||
- ZONT end переименован
|
||||
- ZONT scenario_orphans пустая секция
|
||||
- ZONT push 5d31d6e
|
||||
related:
|
||||
- '[[family/tech/zont-api]]'
|
||||
- '[[family/how-to/home-automation]]'
|
||||
@@ -121,6 +130,17 @@ related:
|
||||
| **Снять живой конфиг** | 🔴 `curl -s http://192.168.0.50/config.txt` — **без авторизации** |
|
||||
| **ZONT в общем контуре** | [[family/how-to/home-automation]] §6 |
|
||||
|
||||
> ### 📍 Текущее состояние (2026-09-18, после круга 49)
|
||||
>
|
||||
> | | |
|
||||
> |---|---|
|
||||
> | **HEAD** | `5d31d6e` — **запушен** в Gitea (`origin/main`) |
|
||||
> | **Круг** | **9/9 зелёный**, 759 → 759 объектов |
|
||||
> | **Артефакт** | `zont_config/config_local_2026-09-17_23-21-20.yml` |
|
||||
> | **Открыто** | 5 `objcmd`-орфанов · поле 4 = `2` у `expr` (`10077`–`10085`) · авто-id (`max+1`, 17 точек, план есть) |
|
||||
>
|
||||
> Свежие круги: §27 (46 — `set_contour_target`), §28 (47–49 — `call_sub`, `send_sms`, `exit`, `scenario_orphans`).
|
||||
|
||||
---
|
||||
|
||||
## 1. Формат конфига ZONT
|
||||
|
||||
@@ -3,7 +3,7 @@ title: 🔁 Round-trip key verification — проверка нового клю
|
||||
namespace: personal
|
||||
type: how-to
|
||||
created: '2026-09-17'
|
||||
updated: '2026-09-17'
|
||||
updated: '2026-09-18'
|
||||
tags:
|
||||
- personal
|
||||
- how-to
|
||||
@@ -151,6 +151,44 @@ diff <(iconv -f <вх> -t utf-8 <оригинал> | tr -d '\r' | sort) \
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Одно имя на два разных действия = схлопывание (2026-09-18, ZONT круг 46)
|
||||
|
||||
**Симптом:** в YAML два **разных** действия читались под одним ключом, и одно затирало другое.
|
||||
|
||||
**Случай:** `set_contour_temp` — имя действия у двух **разных** типов записи:
|
||||
- **тип 9** (команда, поле 4 = уставка **числом**): `#Z8817=9,'descr',10034,'2782'` → 5.2 °C
|
||||
- **тип 59 objcmd** (поле 3 = **источник**/литерал): `#Z10379=59,'objcmd 8669 ",,,%0";#h',9146,0,0`
|
||||
|
||||
Ветка objcmd проверялась в коде **раньше**, перехватывала тело типа 9 и собирала
|
||||
`#Z8817=59,'objcmd 10034 ",,,%0";#h',5.2,0,1` вместо `#Z8817=9,…,10034,'2782'`. Плюс
|
||||
`_register_action9` перезаписывал запись секции → `Duplicate ID 8817`.
|
||||
|
||||
**Правила:**
|
||||
- Два разных действия — **два разных имени**. Одно имя на два типа записи = гарантированный
|
||||
конфликт веток. Владелец формулирует разницу сам: *«установить целевую температуру x для
|
||||
контура y»* vs *«установить температуру контура x в значение y»*.
|
||||
- При каждом переименовании или вводе ключа **сверить пересечение словарей**:
|
||||
`grep -n "_ACTION9_KEYS\|_OBJCMD_MASKS" *.py` → общие имена = баг.
|
||||
- Один id в двух секциях (шаг сценария + объект секции) → **одна** строка на id: вторая точка
|
||||
уступает первой, а не регистрирует своё тело повторно.
|
||||
|
||||
## 🔴 Артефакт в репо ≠ свежий вывод (2026-09-18, ZONT круг 46)
|
||||
|
||||
`zont_config/*.yml` в репозитории — это **выход прошлого прогона**. Пока файл не перегенерён, он
|
||||
показывает **старую** форму, и правка выглядит невнесённой. `test_roundtrip.py` пишет в `temp`,
|
||||
**целевой артефакт не обновляет**.
|
||||
|
||||
```bash
|
||||
# приёмка: сначала перегенерировать ЦЕЛЕВОЙ файл, потом смотреть глазами
|
||||
python3 config-to-yml.py zont_config/config_X.txt > zont_config/config_X.yml
|
||||
grep -n -A4 "<изменённый id>" zont_config/config_X.yml
|
||||
```
|
||||
|
||||
**Симптом:** «всё ещё вижу старое» при зелёном круге. Порядок — круг, **потом** перегенерация,
|
||||
**потом** чтение артефакта.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Круг зелёный ≠ приёмка (2026-09-17, ZONT круг 39)
|
||||
|
||||
Жёсткий урок той же сессии. Round-trip **байтово чистый** не означает, что правка верна.
|
||||
|
||||
Reference in New Issue
Block a user