[2026-09-18] eagle: family/how-to/home-automation.md personal/projects/zont-config-compiler.md
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
title: "🏠 Домашняя автоматизация"
|
||||
aliases: [Умный дом, Home automation, HA, Zigbee, Modbus, вентиляция, t610, RCU stall, USB reset]
|
||||
tags: [family, how-to, smarthome]
|
||||
updated: 2026-09-17b
|
||||
updated: 2026-09-18
|
||||
---
|
||||
|
||||
# 🏠 Домашняя автоматизация
|
||||
@@ -53,6 +53,10 @@ updated: 2026-09-17b
|
||||
>
|
||||
> **Итог:** удалены три слоя мусора (127 сущностей `platform=mqtt` + 18 устройств); **23 устройства ZHA** с читаемыми ID в едином виде (`<зона>_<роль>`), все в зонах; **12 автоматизаций контроля батарей** (порог 20 %, push + persistent); **9 температурных Zigbee-датчиков** отдаются ZONT'у как виртуальные Modbus slave **100, 105–112**; **26 автоматизаций: 25 `on`, 1 `off` намеренно** (`Ventilation automation on`); кнопка спальни шлёт события, диммер рулится; свет лестницы + 2 сценария подсветки работают.
|
||||
>
|
||||
> 🔴 **Уточнение 2026-09-18 (§6.1):** «9 датчиков отдаются ZONT'у» — верно **только для bridge**.
|
||||
> Со стороны ZONT зарегистрированы **4** (slaves 100–103); датчики тёплых полов `105–111` bridge
|
||||
> отдаёт, но **ZONT их не опрашивает** — на контроллере нет записей тип 51/52/1. В работе, см. §6.1.
|
||||
>
|
||||
> 🔴 **2026-09-16 (ночь): вычищены 185 призраков Z2M** из архива реестра (`deleted_entities` 360 → 175). Призраки живут **именно в архиве**, а не в `entities` — UI «Обслуживание» их показывал, `/api/states` и WS-реестр нет. Живые (572) не тронуты. Снесены также остатки аддонов `go2rtc`/`file_editor`/`samba_share` и старые `switch_as_x`-обёртки.
|
||||
> 🔴 **План этажей (`home-plan`) ссылался на снесённого призрака** `light.smart_light_stairs_l1` → ошибка на карте. Исправлено на `light.light_stairs_left`. Проверять ссылки плана после сноса: `~/tmp-t610/fix_plan_stairs.sh`.
|
||||
> 🔴 **H2000_PRO отдавал °F** — ручной override `sensor.private.suggested_unit_of_measurement: "°F"` у трёх сущностей. Сброшено через WS с **`options_domain: "sensor.private"`** (через `"sensor"` update проходит, но НЕ меняет). Стало 12.9 / 28.2 / 30.2 °C.
|
||||
@@ -673,8 +677,17 @@ curl -s -H @/tmp/h1 "$B/api/config/automation/config/<ID>" > /tmp/aut_<ID>.json
|
||||
> ⚙️ **Конфиг самого ZONT правится конвертерами `.txt ⇄ .yml`** (`/Users/admin/Automation/HA-ZONT-Modbus`): [[personal/projects/zont-config-compiler]] — конвертеры, типы объектов, форма сценариев
|
||||
|
||||
- **Реальные 485:** `1–99` (датчики 1/2/3, AT2 = 10, relay 11/12/13/14, газ-котёл вкл = 20).
|
||||
- **Виртуальные (bridge):** `100–112` — `100` **гардеробная** (исторический датчик, был `office_temperature_sensor` → `kabinet_temperature`), `101/102/103` Гостиная/Детская/Спальня (рег. 100), `104:1` Zigbee-реле котла, **`105–112` температурные Zigbee-датчики тёплых полов** (гостиная/серая/кабинет/кухня/ванная/прихожая/душевая/туалет).
|
||||
- **Виртуальные (bridge):** `100–112`
|
||||
- `100` **гардеробная** (исторический датчик, был `office_temperature_sensor` → `kabinet_temperature`)
|
||||
- `101/102/103` Гостиная / Детская / Спальня (регистр 100)
|
||||
- `104:1` Zigbee-реле котла
|
||||
- `105–112` температурные Zigbee-датчики тёплых полов (гостиная/серая/кабинет/кухня/ванная/прихожая/душевая/туалет)
|
||||
- **Свободно:** `113+`; у 100/102/103 — только регистры ≠ 100. `104:2+` свободны.
|
||||
- 🔴 **Наличие маппинга в bridge ≠ видимость в ZONT** (проверено 2026-09-18, §6.1). Bridge может отдавать
|
||||
значение, а ZONT его **не спрашивать**: со стороны контроллера нужны **три** записи на каждый датчик
|
||||
(тип 51 устройство → тип 52 регистр → тип 1 виртуальный датчик). Замер: из 9 «отдаваемых» датчиков
|
||||
ZONT реально опрашивает **4** (slaves 100–103), датчики тёплых полов `105–111` **не зарегистрированы
|
||||
в конфиге ZONT вообще** (`grep` по «тёпл|пол» — только контур `#Z10152=16` и датчик `#Z8432=27`).
|
||||
- ⚠️ **Маппинг ссылается на HA-сущность по имени.** Переименовал сущность — поправь `data/config.template.tmpl` + `rebuild`, иначе slave молча отдаёт `0`. Реальный случай 2026-09-15: slave 100 = `0` → после правки `23.97`.
|
||||
- ⚠️ **Проверка slave'а без ZONT:** bridge отвечает только на запрос. Смотреть `HA poll -> sensor.<entity> = <val>` (поллер жив) и `Response: ... = <val> [<hex>]` (ответил ZONT'у).
|
||||
- Занятость проверять **по двум источникам:** эта карта + `/addons/modbus-bridge/data/config.template.tmpl` на t610.
|
||||
@@ -691,6 +704,52 @@ Vent control (AT2) - 10 (0A)
|
||||
Газ котёл вкл - 20 (14) ⚠️ ответы [DROP-TAIL]/[BUF-LEFT], НЕ парсятся
|
||||
```
|
||||
|
||||
### 6.1. 🔴 Регистрация Zigbee-датчика у ZONT — ТРИ записи, не одна (2026-09-18)
|
||||
|
||||
Цепочка «HA-сущность → ZONT» состоит из **двух независимых половин**, и обе обязательны:
|
||||
|
||||
```text
|
||||
HA sensor ──[bridge config.template.tmpl: source: ha]──▶ Modbus slave 10X / рег. 100
|
||||
│
|
||||
ZONT ──[тип 51: устройство, slave_id]─────────────────────────┤ спрашивает шину
|
||||
──[тип 52: регистр, адрес 100, 16 бит]───────────────────┤ куда положить ответ
|
||||
──[тип 1: виртуальный датчик, ссылка на id регистра]────┘ что показать в UI
|
||||
```
|
||||
|
||||
**Форма записи (эталон — датчик `#Z8382` «Температура Zigbee», slave 100):**
|
||||
|
||||
```text
|
||||
#Z8381=51,100,'Tuya Zigbee Thermal Sensor',5000,300000,[],[],0,[8383]
|
||||
│ │ │ │ └─ поле 9 = [id регистра (тип 52)]
|
||||
│ │ │ └─ поле 5 = timeout, мс
|
||||
│ │ └─ поле 4 = poll_interval, мс
|
||||
│ └─ поле 2 = slave_id на шине 485
|
||||
└─ тип 51 = Modbus-устройство (секция modbus_devices)
|
||||
|
||||
#Z8383=52,'Темп. датч.',100,16,0,1,16,0,1,29,1,4
|
||||
│ │ │ │ └─ поле 11 = 4 (для датчиков); 255 = виртуальный/служебный
|
||||
│ │ │ └─ поле 4 = разрядность: 16 = int16; 128 = битовая маска; 8 = uint8
|
||||
│ │ └─ поле 2 = адрес регистра (у всех температурных = 100)
|
||||
│ └─ поле 1 = подпись регистра
|
||||
└─ тип 52 = Modbus-регистр, вложен в устройство 51
|
||||
|
||||
#Z8382=1,'0','Температура Zigbee',0,0,0,60000,[],[],[],8383,[],0,0,0
|
||||
│ │ │ │ └─ поле 10 = id регистра (тип 52)
|
||||
│ │ │ └─ поле 6 = интервал опроса/публикации, мс
|
||||
│ │ └─ поле 2 = имя датчика (то, что видно в UI ZONT)
|
||||
│ └─ поле 1 = адрес-заглушка '0' для modbus-источника
|
||||
└─ тип 1 = виртуальный датчик (секция virtual_sensors)
|
||||
```
|
||||
|
||||
**🔴 Что доказывает факт «датчика нет в ZONT»:** `grep` по конфигу ZONT (cp1251) на «тёпл|пол» даёт
|
||||
только контур отопления `#Z10152=16,'Тёплый пол'` и его штатный датчик `#Z8432=27`. Ни одной записи
|
||||
типа 51/1 для тёплых полов нет → bridge их отдаёт, ZONT **не спрашивает**.
|
||||
|
||||
**Порядок работ (обе стороны!).** Bridge-сторона и ZONT-сторона правятся **разными файлами** и
|
||||
деплоятся по-разному: bridge — `/addons/modbus-bridge/data/config.template.tmpl` на t610 + `rebuild`;
|
||||
ZONT — конвертеры в `/Users/admin/Automation/HA-ZONT-Modbus` + заливка на контроллер.
|
||||
⚙️ Механика ZONT-стороны: [[personal/projects/zont-config-compiler]] §31.
|
||||
|
||||
### AT2 (slave 10) — вентиляторы
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user