[2026-09-17] eagle: family/how-to/zont-config-compiler.md family/tech/zont-config-object-types.md
This commit is contained in:
@@ -19,7 +19,7 @@ tags:
|
|||||||
- homeautomation
|
- homeautomation
|
||||||
title: ⚙️ ZONT Config Compiler — конвертеры .txt ⇄ .yml
|
title: ⚙️ ZONT Config Compiler — конвертеры .txt ⇄ .yml
|
||||||
type: how-to
|
type: how-to
|
||||||
updated: '2026-09-17'
|
updated: '2026-09-17c'
|
||||||
---
|
---
|
||||||
|
|
||||||
# ⚙️ ZONT Config Compiler — конвертеры `.txt ⇄ .yml`
|
# ⚙️ ZONT Config Compiler — конвертеры `.txt ⇄ .yml`
|
||||||
@@ -91,6 +91,20 @@ updated: '2026-09-17'
|
|||||||
|
|
||||||
> Неизвестный тип объекта — **падение с ошибкой**, а не тихий пропуск. Сделано намеренно: молча потерять объект хуже, чем не отдать файл.
|
> Неизвестный тип объекта — **падение с ошибкой**, а не тихий пропуск. Сделано намеренно: молча потерять объект хуже, чем не отдать файл.
|
||||||
|
|
||||||
|
### Проверено против исходников (2026-09-17)
|
||||||
|
|
||||||
|
| Факт | Где в коде |
|
||||||
|
|---|---|
|
||||||
|
| `config-to-yml.py` exit-коды {1, 2} | `sys.exit(1)` — argc; `sys.exit(2)` — `ParseError` |
|
||||||
|
| `yml-to-config.py` exit-коды {1, 2, 3, 4} | argc / `FileNotFoundError` / `ConversionError` / общее / validation |
|
||||||
|
| `validate_config()` вызывается **до** вывода | стр. 913 `validation_errors = validate_config(data, lines)` |
|
||||||
|
| Вход YAML — UTF-8, выход — windows-1251 | стр. 907 `open(…, encoding='utf-8')`; стр. 921 `stdout.reconfigure(encoding='windows-1251', errors='replace')` |
|
||||||
|
| Дефолт типа 0 (16 полей) | `add_z_line(obj['id'], 0, register_ref, name, 0, 0, 1000, 2000, 7424, [], 20, [], [], 1, config_id, 0, 0)` |
|
||||||
|
| Дефолт типа 36 | `add_z_line(config_id, 36, [], [], [], 10, 0)` |
|
||||||
|
| README перечисляет 23 типа; код обрабатывает 25 | README пропускает `0` и `36` |
|
||||||
|
|
||||||
|
> 📌 `validate_config()` дополнительно проверяет кодируемость каждой строки в windows-1251 (символ вне CP1251 → ошибка валидации).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3. Как пользоваться
|
## 3. Как пользоваться
|
||||||
@@ -171,7 +185,33 @@ grep -c '^#Z' A.txt B.txt # счётчик объектов
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. Связанные заметки
|
## 6. Состояние проекта (проверено 2026-09-17)
|
||||||
|
|
||||||
|
Репозиторий `/Users/admin/Automation/HA-ZONT-Modbus` — **рабочее дерево грязное**, разгребание ждёт отдельной команды Alex:
|
||||||
|
|
||||||
|
| Файл | Статус |
|
||||||
|
|---|---|
|
||||||
|
| `zont_config/H2000_PRO_config_actual-2.txt` / `-2.yml` | удалены из индекса (целы в `zont_config/archive/`) |
|
||||||
|
| `zont_config/H2000_PRO_config_actual-3.txt` / `-3.yml` | то же |
|
||||||
|
| `zont_config/H2000_PRO_config_actual-4.txt` / `-4.yml` | то же |
|
||||||
|
| `zont_config/archive/` | не добавлена в git |
|
||||||
|
| `zont_config/config_0FA7C33CC89F_…_2026-09-17_12-12-28.txt` | 32 689 байт — свежеснятый конфиг с контроллера, не закоммичен |
|
||||||
|
| одноимённый `.yml` | **0 байт** — конвертация запускалась и не завершилась |
|
||||||
|
|
||||||
|
> 🔴 **Пустой `.yml` (0 байт) рядом с непустым `.txt`** — признак незавершённой конвертации. Пересобрать шагом 2 из §3 перед использованием.
|
||||||
|
|
||||||
|
**Содержимое проекта, не относящееся к конвертерам:**
|
||||||
|
|
||||||
|
- `INFRASTRUCTURE.md` (342 стр.), `docker-compose.yml`, `docker run.txt` — **исторический TrueNAS-стек** (docker-контейнеры `homeassistant`, `mbusd`, `modbus-bridge`, `mosquitto`, `zigbee2mqtt`, `nodered`, `caddy`, `immich`, `transmission`, `webdav`, `inpxer`, `cups-splix`, `portainer`, `watchtower`, `rclone`). Стек **декомиссирован**, автоматизация живёт на t610 — актуальное: [[family/how-to/home-automation]].
|
||||||
|
- `modbus_ha_bridge.py`, `modbus_mqtt_bridge.py` — исходники мостов (исторические, для TrueNAS).
|
||||||
|
- `nodered-flows-backup.json`, `nodered-flows-updated.json` — дампы потоков Node-RED (Node-RED остановлен).
|
||||||
|
- `homeassistant/`, `floorplan/` — снапшоты конфига HA и планировки (исторические, там же workflow «fetch from NAS → edit → deploy»).
|
||||||
|
- `README_converters.md` — исходное описание конвертеров (типы: 23, без `0` и `36`).
|
||||||
|
- `.gitignore` — исключает `*.cur`, логи, `__pycache__`, `.venv`, `.DS_Store`, **`project_home.pdf`** (крупный бинарь).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Связанные заметки
|
||||||
|
|
||||||
- [[family/tech/zont-config-object-types]] — таблица типов объектов (0, 1…57, 36) и `#S`-настройки
|
- [[family/tech/zont-config-object-types]] — таблица типов объектов (0, 1…57, 36) и `#S`-настройки
|
||||||
- [[family/how-to/home-automation]] — контур автоматизации, ZONT, Modbus slave ID и регистры (§6)
|
- [[family/how-to/home-automation]] — контур автоматизации, ZONT, Modbus slave ID и регистры (§6)
|
||||||
|
|||||||
@@ -16,15 +16,16 @@ tags:
|
|||||||
- reference
|
- reference
|
||||||
title: "\U0001F9E9 ZONT Config — типы объектов"
|
title: "\U0001F9E9 ZONT Config — типы объектов"
|
||||||
type: reference
|
type: reference
|
||||||
updated: '2026-09-17'
|
updated: '2026-09-17b'
|
||||||
---
|
---
|
||||||
|
|
||||||
# 🧩 ZONT Config — типы объектов
|
# 🧩 ZONT Config — типы объектов
|
||||||
|
|
||||||
> Справочник по типам объектов конфига ZONT (первое поле в `#Z<id>=<type>,…`).
|
> Справочник по типам объектов конфига ZONT (первое поле в `#Z<id>=<type>,…`).
|
||||||
> **Инструкция по конвертерам:** [[family/how-to/zont-config-compiler]]
|
> **Инструкция по конвертерам:** [[family/how-to/zont-config-compiler]]
|
||||||
> **Источник:** `config-to-yml.py` / `yml-to-config.py` в `/Users/admin/Automation/HA-ZONT-Modbus`, `README_converters.md`
|
> **Источник:** код `config-to-yml.py` / `yml-to-config.py` в `/Users/admin/Automation/HA-ZONT-Modbus`; инструкция по запуску — [[family/how-to/zont-config-compiler]].
|
||||||
> ⚠️ Таблица ниже — по README; колонка «Что реально делает скрипт» — по коду. Расхождения помечены.
|
> ✅ Таблица сверена с кодом (2026-09-17): перечислены **все 25 обрабатываемых типов**, включая `0` и `36`, которых нет в `README_converters.md` (там 23).
|
||||||
|
> 🔴 Для каждого типа указаны только те поля, которые скрипт **реально декодирует**; остальное лежит в `raw` / `raw_params` и при сборке пишется как есть. Ссылка вроде «README → поле X» не должна вводить в заблуждение: если поля нет в таблице, оно не декодировано.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user