[2026-09-17] docs: ZONT config compiler (.txt<->.yml) — how-to + object types reference, links
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
---
|
||||
aliases:
|
||||
- ZONT типы объектов
|
||||
- ZONT object types
|
||||
- ZONT config types
|
||||
created: '2026-09-17'
|
||||
namespace: family
|
||||
related:
|
||||
- '[[family/how-to/zont-config-compiler]]'
|
||||
- '[[family/how-to/home-automation]]'
|
||||
tags:
|
||||
- family
|
||||
- tech
|
||||
- zont
|
||||
- modbus
|
||||
- reference
|
||||
title: "\U0001F9E9 ZONT Config — типы объектов"
|
||||
type: reference
|
||||
updated: '2026-09-17'
|
||||
---
|
||||
|
||||
# 🧩 ZONT Config — типы объектов
|
||||
|
||||
> Справочник по типам объектов конфига ZONT (первое поле в `#Z<id>=<type>,…`).
|
||||
> **Инструкция по конвертерам:** [[family/how-to/zont-config-compiler]]
|
||||
> **Источник:** `config-to-yml.py` / `yml-to-config.py` в `/Users/admin/Automation/HA-ZONT-Modbus`, `README_converters.md`
|
||||
> ⚠️ Таблица ниже — по README; колонка «Что реально делает скрипт» — по коду. Расхождения помечены.
|
||||
|
||||
---
|
||||
|
||||
## 1. Таблица типов
|
||||
|
||||
| Тип | Объект | Декодируемые поля | Секция в YAML |
|
||||
|---|---|---|---|
|
||||
| **0** | Дискретные датчики (индикаторы состояния реле) | `register_ref`, `name`, `config` | `discrete_sensors` |
|
||||
| 1 | Виртуальные датчики | `address`, `name`, `register_id`, пороги, гистерезис, калибровка | `virtual_sensors` |
|
||||
| 3 | SMS-уведомления | `name` | `sms_notifications` |
|
||||
| 4 | Контакты пользователей | `name`, `phones` | `user_contacts` |
|
||||
| 5 | Действия (actions) | `name`, `output_ref`, `value`, `raw_params` | `actions` |
|
||||
| 6 | Адаптеры | `address`, `name` | `adapters` |
|
||||
| 7 | Радиомодули | `address`, `name` | `radio_modules` |
|
||||
| 9 | MQTT-команды (кнопка GUI → управление реле) | `name`, `target_relay`, `value` | `relay_commands` |
|
||||
| 10 | GUI-переключатели | `name` | `gui_switches` |
|
||||
| 11 | Сценарии | `name`, `when`, `do` — **парсятся полностью, человекочитаемо** | `scenarios` |
|
||||
| 14 | Реле | `name`, `address`, `state` | `relays` |
|
||||
| 16 | Отопительные контуры | `name` | `heating_circuits` |
|
||||
| 20 | Режимы отопления | `name` | `heating_modes` |
|
||||
| 24 | Сопроцессоры | `address`, `name` | `coprocessors` |
|
||||
| 25 | Отопительные кривые | `name` | `heating_curves` |
|
||||
| 27 | Датчики температуры | `address`, `name` | `temperature_sensors` |
|
||||
| 28 | Таблицы сопротивлений | *(raw)* | `resistance_tables` |
|
||||
| **36** | Конфиги дискретных датчиков (вытащены из вложенной структуры типа 0) | `raw` | вложено в `discrete_sensors[].config` |
|
||||
| 42 | GUI-вкладки | `name` | `gui_tabs` |
|
||||
| 46 | Шаги сценариев | *(raw; помечаются как уже разобранные)* | внутри `scenarios` |
|
||||
| 49 | Условия сценариев | *(raw; помечаются как уже разобранные)* | внутри `scenarios` |
|
||||
| 51 | Modbus-устройства | `slave_id`, `name`, `poll_interval`, `timeout`, `registers`, `raw_params` | `modbus_devices` |
|
||||
| 52 | Modbus-регистры | `name`, `register`, `bit_width`, `repeat_period`, `num_vars`, `raw_params` | **вложены в своё устройство 51** |
|
||||
| 53 | Аналоговые выходы | `name`, `min`, `max`, `value`, `offset`, `scale`, `flags`, `address` | `analog_outputs` |
|
||||
| 57 | MQTT-топики | `topic`, `sensors` | `mqtt_topics` |
|
||||
|
||||
---
|
||||
|
||||
## 2. Что реально важно знать
|
||||
|
||||
### 2.1. `#S`-объекты — системные настройки
|
||||
|
||||
Идут не по типам, а по id: `#S<id>=…`. В YAML — секция `system_settings` **первой**, каждый как `{id, raw_payload}`.
|
||||
|
||||
Примеры (из живого конфига H2000_PRO):
|
||||
|
||||
| Ключ | Значение (пример) | Смысл |
|
||||
|---|---|---|
|
||||
| `#S7` | `H2000_PRO 723 678` | модель + версии ПО |
|
||||
| `#S200` | `s1.zont.online,s2.zont.online` | серверы ZONT |
|
||||
| `#S202` | `0FA7C33CC89F <пароль>` | серийник + учётка облака |
|
||||
| `#S217` | `mqtt://zont:…@192.168.0.10:1883` | MQTT-брокер |
|
||||
| `#S218` | `'zont','qwertyui'` | логин/пароль MQTT |
|
||||
| `#S221` | `homeassistant` | префикс discovery |
|
||||
| `#S124` | `1,9600,0,0` | параметры шины (slave, baud) |
|
||||
|
||||
> 🔴 `raw_payload` **не декодируется** и при обратной сборке пишется как есть. Правки `#S` через YAML — только если точно знаешь формат; безопаснее через UI контроллера.
|
||||
|
||||
### 2.2. Вложенность 51 → 52
|
||||
|
||||
Modbus-регистры (тип 52) в конфиге — **отдельные строки**, но в YAML вкладываются внутрь своего устройства (тип 51). `yml-to-config.py` при сборке выводит их обратно отдельными строками в порядке id.
|
||||
|
||||
⚠️ Если регистр ссылается на устройство, которого нет — `config-to-yml.py` предупреждает в stderr (`WARNING: … references non-existent …`), но не падает. Аналогично для аналоговых выходов (53).
|
||||
|
||||
### 2.3. Сценарии (11 + 46 + 49)
|
||||
|
||||
Тип 11 парсится **целиком** — `when` (условия) и `do` (действия) собираются в человекочитаемый вид, включая шаги (46) и условия (49). Сами 46/49 при разборе помечаются как «уже вложенные» — в YAML отдельными секциями их нет.
|
||||
|
||||
### 2.4. `*`-маркеры
|
||||
|
||||
Специальные записи вида `#Z<id>=*` — «пустой» / унаследованный объект. Обрабатываются отдельным блоком; в YAML сохраняются как маркер.
|
||||
|
||||
### 2.5. Дискретные датчики (0 + 36)
|
||||
|
||||
`#Z<id>=0,…` — индикатор состояния (например, показ статуса реле в GUI). Внутри него — **вложенный конфиг**, который в конфиге ZONT лежит отдельной строкой **типа 36** с собственным id, а в YAML живёт как `config` внутри объекта.
|
||||
|
||||
🔴 **Питфолл.** При сборке, если у объекта 36 нет `raw`, скрипт подставляет дефолт `[],[],[],10,0`; если у объекта 0 нет `raw` — жёстко зашитый набор из 16 полей. Оба случая = **потеря исходных настроек**. Не чистить `raw` у 0/36.
|
||||
|
||||
### 2.6. Коды возврата / падения
|
||||
|
||||
| Ситуация | Поведение |
|
||||
|---|---|
|
||||
| Неизвестный формат строки (не `#Z`/`#S`) | `ParseError` → exit 2 (**до** вывода) |
|
||||
| Значение не парсится (`literal_eval` падает) | `ParseError` → exit 2 |
|
||||
| Неизвестный тип объекта | `ConversionError` → exit 2 |
|
||||
| Ошибки валидации при сборке | `❌ VALIDATION ERRORS` → exit 4, файл не отдаётся |
|
||||
| Ссылка на несуществующее устройство | WARNING в stderr, конвертация продолжается |
|
||||
|
||||
---
|
||||
|
||||
## 3. Связанные заметки
|
||||
|
||||
- [[family/how-to/zont-config-compiler]] — как пользоваться конвертерами, питфоллы, обход
|
||||
- [[family/how-to/home-automation]] §6 — карта slave ID, регистры AT2/реле/заслонок в HA
|
||||
- [[family/tech/t610-hang-investigation]] — расследование зависаний хоста (не связано напрямую, но тот же контур)
|
||||
Reference in New Issue
Block a user