[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) — вентиляторы
|
||||
|
||||
```
|
||||
|
||||
@@ -162,16 +162,19 @@ related:
|
||||
| **Снять живой конфиг** | 🔴 `curl -s http://192.168.0.50/config.txt` — **без авторизации** |
|
||||
| **ZONT в общем контуре** | [[family/how-to/home-automation]] §6 |
|
||||
|
||||
> ### 📍 Текущее состояние (2026-09-18, после круга 49)
|
||||
> ### 📍 Текущее состояние (2026-09-18, после §31)
|
||||
>
|
||||
> | | |
|
||||
> |---|---|
|
||||
> | **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 точек, план есть) |
|
||||
> | **HEAD** | `7e34ee1` — «авто-id для листьев + валидация ссылок (круг 50)» |
|
||||
> | **Круг** | **10/10 зелёный**, 759 → 759 объектов |
|
||||
> | **Артефакт** | `zont_config/config_local_2026-09-18_00-45-31.yml` (идентичен `23-21-20`) |
|
||||
> | **Свежий дамп** | ✅ снят 2026-09-18 00:45 — **идентичен** `23-21-20` (`diff` пуст) |
|
||||
> | **Открыто** | 🔴 **§31: 7 Zigbee-датчиков тёплых полов → slave'ы 105–111.** Решения Alex получены (авто-id, имена в стиле ZONT), замер показал: типы 51/52/1 требуют снятия барьеров `'id'`. Bridge-правка НЕ нужна. Ждёт 1 ответ: добавлять ли slave 112. · авто-id: верх окна не назван (§30.3) |
|
||||
>
|
||||
> Свежие круги: §27 (46 — `set_contour_target`), §28 (47–49 — `call_sub`, `send_sms`, `exit`, `scenario_orphans`).
|
||||
> Свежие круги: §27 (46 — `set_contour_target`), §28 (47–49 — `call_sub`, `send_sms`, `exit`, `scenario_orphans`), §30 (50 — авто-id + валидация ссылок), §31 (Zigbee → Modbus).
|
||||
>
|
||||
> ✅ Снято с открытого в §28.6: «5 `objcmd`-орфанов» и «поле 4 = `2` у `expr`» — **работы не требуют** (орфанов нет; поле производное).
|
||||
|
||||
---
|
||||
|
||||
@@ -4382,3 +4385,202 @@ Alex: **«Я думаю надо жестоко ограничить диапа
|
||||
| Артефакт | ✅ `zont_config/config_local_2026-09-17_23-21-20.yml` свежий (содержит `call_sub: 11109`, `send_sms: 8195`, `exit: true`) |
|
||||
| HEAD / origin | ✅ `5d31d6e`, запушено |
|
||||
|
||||
---
|
||||
|
||||
## 31. 🆕 Zigbee-датчики тёплых полов → виртуальные Modbus-устройства (2026-09-18, план)
|
||||
|
||||
**Задача Alex:** «Тяни и конвертируй свежий конфиг и добавь в него entity zigbee датчиков температуры
|
||||
которых в нем нет через виртуальные modbus устройства в bridge».
|
||||
|
||||
### 31.1. ✅ Разведка: свежий конфиг **байт-в-байт** равен снапшоту `23-21-20`
|
||||
|
||||
```bash
|
||||
curl -s http://192.168.0.50/config.txt -o /tmp/zont_fresh_test.txt # 38174 байта, exit 0
|
||||
diff <(iconv -f windows-1251 -t utf-8 zont_config/config_local_2026-09-17_23-21-20.txt) \
|
||||
<(iconv -f windows-1251 -t utf-8 /tmp/zont_fresh_test.txt) # → пусто
|
||||
```
|
||||
|
||||
📌 **Ничего не изменилось на контроллере с 2026-09-17 23:21.** «Свежий конфиг» = тот же `23-21-20`,
|
||||
уже лежащий в репо; артефакт `.yml` перегенерировать не нужно. 785 строк / 759 объектов `#Z` + 26 `#S`.
|
||||
|
||||
🔴 **Проверять идентичность конфига ДО работы:** если `diff` пуст — вся работа идёт по существующему
|
||||
снапшоту, а не по новой копии (иначе в репо плодятся одинаковые дампы, а «свежесть» артефакта
|
||||
становится неотличима — ср. питфолл 97, §27.4).
|
||||
|
||||
### 31.2. Что уже есть: ZONT опрашивает 4 Zigbee-датчика через slaves 100–103
|
||||
|
||||
**11 Modbus-устройств (тип 51) на стороне ZONT:** slaves `1, 2, 3, 13, 14, 20, 100, 101, 102, 103, 104`.
|
||||
|
||||
| Slave | Имя в ZONT | Виртуальный датчик (тип 1) | Регистр (тип 52) |
|
||||
|---|---|---|---|
|
||||
| 100 | `Tuya Zigbee Thermal Sensor` | `#Z8382` «Температура Zigbee» | `#Z8383` |
|
||||
| 101 | `Температура гостиная` | `#Z8911` «Температура Гостиная» | `#Z8912` |
|
||||
| 102 | `Температура детская` | `#Z8700` «Температура Детская» | `#Z8701` |
|
||||
| 103 | `Температура спальня` | `#Z8932` «Температура Спальня» | `#Z8933` |
|
||||
|
||||
Форма записи (три типа работают в связке — **устройство → регистр → виртуальный датчик**):
|
||||
|
||||
```text
|
||||
#Z8381=51,100,'Tuya Zigbee Thermal Sensor',5000,300000,[],[],0,[8383] ← устройство: поле 2 = slave_id, поле 9 = [id регистра]
|
||||
#Z8383=52,'Темп. датч.',100,16,0,1,16,0,1,29,1,4 ← регистр: поле 2 = адрес регистра, поле 3 = кол-во бит (16 = int16)
|
||||
#Z8382=1,'0','Температура Zigbee',0,0,0,60000,[],[],[],8383,[],0,0,0 ← датчик: поле 10 = id регистра
|
||||
```
|
||||
|
||||
### 31.3. 🔴 Что отсутствует: 7 Zigbee-датчиков тёплых полов
|
||||
|
||||
В конфиге ZONT **нет** этих сущностей — `grep` по «тёпл|пол» даёт только контур отопления
|
||||
`#Z10152=16,'Тёплый пол'` и его датчик `#Z8432=27,'Температура тёплого пола'`. Остальные 6 записей
|
||||
типа 27 — `Температура подачи` (`#Z8450`), `Температура улица` (`#Z9259`).
|
||||
|
||||
| HA-сущность | Наличие в ZONT |
|
||||
|---|---|
|
||||
| `sensor.living_room_floor_temperature_temperature` | ❌ нет |
|
||||
| `sensor.severnaia_floor_temperature_temperature` | ❌ нет |
|
||||
| `sensor.kabinet_floor_temperature_temperature` | ❌ нет |
|
||||
| `sensor.kitchen_floor_temperature_temperature` | ❌ нет |
|
||||
| `sensor.vannaia_floor_temperature_temperature` | ❌ нет |
|
||||
| `sensor.prikhozhaia_floor_temperature_temperature` | ❌ нет |
|
||||
| `sensor.dushevaia_floor_temperature_temperature` | ❌ нет |
|
||||
|
||||
**История:** датчики заведены в HA и прописаны в bridge-шаблон ещё 2026-09-15
|
||||
([[family/plans/t610-zigbee-ids-battery-freshsensors-modbus]] §4, slaves 105–112), но **на стороне
|
||||
ZONT как Modbus-устройства не зарегистрированы никогда**. Мост отдаёт значения — ZONT их не спрашивает.
|
||||
|
||||
⚠️ `config.yml` **в репо устарел**: маппинг slave 100 всё ещё ссылается на
|
||||
`sensor.office_temperature_sensor_temperature` (мёртвое имя после переименования 2026-09-15).
|
||||
Живой шаблон — `/addons/modbus-bridge/data/config.template.tmpl` **на t610**, не в репо
|
||||
(ср. урок №3 того же плана: переименование рвёт маппинг bridge → slave молча отдаёт `0`).
|
||||
|
||||
### 31.4. ✅ Решения Alex (2026-09-18, ответ на два вопроса плана)
|
||||
|
||||
| Вопрос | Решение Alex | Следствие |
|
||||
|---|---|---|
|
||||
| id для 21 нового объекта | **«Let allocator decide»** | Расширять `_LEAF_TYPES` + снимать барьеры `'id'`; вручную id НЕ прописывать |
|
||||
| Имена датчиков в ZONT | **«Имена в стиле существующих на зонте»** | «Температура \<место\> тёплый пол», как «Температура гостиная»/«Температура детская» |
|
||||
|
||||
### 31.5. 🔴 Замер: авто-id для 51/52/1 НЕ работает — три падения `Ошибка: 'id'`
|
||||
|
||||
Решение «Let allocator decide» потребовало **проверить**, а не предположить. Написан замер
|
||||
`/tmp/test_autoid_granica2.py` (по образцу `/tmp/test_autoid_granica.py` из круга 50): снять `id`
|
||||
у одного объекта нужного типа в **копии** целевого YAML → собрать энкодером → посмотреть exit и
|
||||
наличие строки.
|
||||
|
||||
```bash
|
||||
python3 /tmp/test_autoid_granica2.py
|
||||
```
|
||||
|
||||
| Тест | Тип | Результат |
|
||||
|---|---|---|
|
||||
| A | 51 `modbus_devices` без id | ❌ `exit=3` · `Ошибка: 'id'` |
|
||||
| B | 52 `modbus_registers` без id | ❌ `exit=3` · `Ошибка: 'id'` |
|
||||
| C | 1 `virtual_sensors` без id | ❌ `exit=3` · `Ошибка: 'id'` |
|
||||
|
||||
**Это тот же питфолл 104 (§25.9), но в новых местах:** жёсткие обращения `obj['id']` срабатывают
|
||||
**раньше** `_is_leaf_without_id`, поэтому до аллокатора дело не доходит. Белый список `_LEAF_TYPES`
|
||||
расширить **недостаточно** — надо снимать барьеры в самих циклах сборки.
|
||||
|
||||
**Карта барьеров** (`grep -n "'id' in obj\|'id' not in obj" yml-to-config.py` — 6 мест):
|
||||
|
||||
| Строка | Место | Отношение к задаче |
|
||||
|---|---|---|
|
||||
| 553 | `_body_index` (тип 3) | не затрагивает |
|
||||
| 1346 | цикл орфанов | не затрагивает |
|
||||
| 1601 | `_is_body_inline` | не затрагивает |
|
||||
| 2108 | цикл `TYPE_ORDER` — уже снят в круге 50 (комментарий на месте) | ✅ готово |
|
||||
| 2112 | там же: `if 'id' not in obj:` → `_is_leaf_without_id` | расширяется через `_LEAF_TYPES` |
|
||||
| 2145 | цикл helper-объектов | не затрагивает |
|
||||
|
||||
**Точки жёсткого доступа, которые надо править под 51/52/1:**
|
||||
|
||||
| Строка | Что | Почему падает |
|
||||
|---|---|---|
|
||||
| 327/345 | `virtual_sensors` → `_alloc_id(obj['id'])` | `obj['id']` при отсутствии ключа |
|
||||
| 1783 | `register_ids = [reg['id'] for reg in nested_registers]` | 🔴 **вложенный** регистр без id — падение до присвоения |
|
||||
| 1784 | `all_registers_to_write.sort(key=lambda r: r['id'])` | сортировка до выдачи id |
|
||||
| 1831 | текст ошибки `register {obj['id']}` | обращение в сообщении |
|
||||
|
||||
🔴 **Тип 52 — НЕ секция, а вложенный объект** (`modbus_devices[].registers[]`), поэтому через
|
||||
`_LEAF_TYPES` он не проедет: id регистра надо выдавать **внутри** прохода по устройствам (строка 1776),
|
||||
до сбора `register_ids` и до сортировки. В белый список идут только **`{9, 1, 51}`**.
|
||||
|
||||
### 31.6. ✅ Bridge: работа НЕ нужна — slave'ы 105–112 уже прописаны
|
||||
|
||||
Фаза 2 плана (правка bridge) **отменена по факту**: живой шаблон на t610 уже содержит все 8 маппингов.
|
||||
|
||||
```bash
|
||||
ssh root@192.168.2.176 'grep -nE "slave_id: (10[0-9]|11[0-9])" \
|
||||
/addons/modbus-bridge/data/config.template.tmpl'
|
||||
# → 100, 101, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112 (14 маппингов)
|
||||
ssh root@192.168.2.176 'grep -nE "floor_temperature" \
|
||||
/addons/modbus-bridge/data/config.template.tmpl'
|
||||
# → все 8 entity_id на месте (living_room, severnaia, kabinet, kitchen,
|
||||
# vannaia, prikhozhaia, dushevaia, toilet_1)
|
||||
```
|
||||
|
||||
Файл: `config.template.tmpl`, mtime `2026-09-15 23:54`, 6473 байта. Бэкапы рядом:
|
||||
`.bak-gard-20260915-225404`, `.bak-preids-20260915-223427` и др.
|
||||
|
||||
**⚠️ Проверка «мост реально отдаёт» НЕ завершена:** в логе аддона видны только
|
||||
`Response: … from 100` (slaves 100–104). Строк с 105–112 нет, потому что **ZONT их не опрашивает** —
|
||||
он не знает этих устройств. Мост отвечает только на запрос (ср. урок №5 плана §101: slave без ZONT'а
|
||||
не проверить иначе, чем по `HA poll ->` в логе). После регистрации устройств на ZONT'е — проверить
|
||||
логи заново.
|
||||
|
||||
### 31.7. Уточнённый план работ (2 фазы вместо 4)
|
||||
|
||||
| Фаза | Что | Статус |
|
||||
|---|---|---|
|
||||
| **1** | Снять + сконвертировать свежий конфиг, круг по всем снапшотам | ✅ **сделано**: 10/10 зелёный, `config_local_2026-09-18_00-45-31.{txt,yml}`, YAML идентичен `23-21-20` |
|
||||
| ~~2~~ | ~~Bridge: добавить 7 маппингов~~ | ✅ **не требуется** — уже есть (§31.6) |
|
||||
| **3** | Энкодер: расширить `_LEAF_TYPES` до `{9, 1, 51}` + снять барьеры `'id'` в 4 точках (§31.5) | ❌ не начато |
|
||||
| **4** | ZONT YAML: +21 объект — 7 × тип 51 (slave 105–111) + 7 × тип 52 (вложенные) + 7 × тип 1 | ❌ не начато |
|
||||
| **5** | Энкодер → txt, круг зелёный, показать Alex'у 21 строку с выданными id | ❌ не начато |
|
||||
| **6** | **Проверка Alex'ом в UI ZONT** → заливка → коммит | ❌ не начато |
|
||||
|
||||
**Имена (стиль существующих, решение Alex):**
|
||||
|
||||
| Slave | HA-сущность | Имя в ZONT |
|
||||
|---|---|---|
|
||||
| 105 | `sensor.living_room_floor_temperature_temperature` | Температура гостиная тёплый пол |
|
||||
| 106 | `sensor.severnaia_floor_temperature_temperature` | Температура серая тёплый пол |
|
||||
| 107 | `sensor.kabinet_floor_temperature_temperature` | Температура кабинет тёплый пол |
|
||||
| 108 | `sensor.kitchen_floor_temperature_temperature` | Температура кухня тёплый пол |
|
||||
| 109 | `sensor.vannaia_floor_temperature_temperature` | Температура ванная тёплый пол |
|
||||
| 110 | `sensor.prikhozhaia_floor_temperature_temperature` | Температура прихожая тёплый пол |
|
||||
| 111 | `sensor.dushevaia_floor_temperature_temperature` | Температура душевая тёплый пол |
|
||||
|
||||
Форма каждого объекта (зеркало `#Z8381`/`#Z8383`/`#Z8382` из §31.2):
|
||||
|
||||
```yaml
|
||||
modbus_devices:
|
||||
- slave_id: 105
|
||||
name: Температура гостиная тёплый пол
|
||||
poll_interval: 5000
|
||||
timeout: 300000
|
||||
registers:[{address: 100, function: holding_3_6, bit_width: 16,
|
||||
signal_type: param_int16, direction: read}]
|
||||
raw_params: [[], [], 0]
|
||||
virtual_sensors:
|
||||
- serial_number: '0'
|
||||
name: Температура гостиная тёплый пол
|
||||
register_id: <id выданного регистра>
|
||||
connection_loss_delay_ms: 60000
|
||||
```
|
||||
|
||||
⏳ **Один открытый вопрос:** slave **112** (`toilet_1_floor_temperature_temperature`) — мост его уже
|
||||
отдаёт, но в план Alex'а он не входил. Добавлять 8-й датчик или оставить на потом?
|
||||
|
||||
### 31.8. Статус
|
||||
|
||||
| Что | Состояние |
|
||||
|---|---|
|
||||
| Свежий конфиг снят, конвертирован | ✅ `config_local_2026-09-18_00-45-31.{txt,yml}` — идентичен `23-21-20`, круг **10/10** |
|
||||
| Разведка (11 slaves, 7 отсутствующих датчиков) | ✅ выполнена, факты §31.2–31.3 |
|
||||
| Решения Alex | ✅ оба получены: авто-id + имена в стиле ZONT (§31.4) |
|
||||
| Замер авто-id для 51/52/1 | ✅ выполнен — **все три типа падают** `Ошибка: 'id'` (§31.5) |
|
||||
| Bridge | ✅ правка НЕ нужна — slaves 105–112 уже в шаблоне (§31.6) |
|
||||
| План | ✅ уточнён: 6 фаз, фаза 1 закрыта (§31.7) |
|
||||
| Правки кода / конфига | ❌ не начаты (правило: план прежде кода) |
|
||||
| HEAD | `7e34ee1` (авто-id листьев + валидация ссылок) |
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user