diff --git a/family/how-to/home-automation.md b/family/how-to/home-automation.md index 41fb5d1b..ef9916f8 100644 --- a/family/how-to/home-automation.md +++ b/family/how-to/home-automation.md @@ -701,7 +701,7 @@ curl -s -H @/tmp/h1 "$B/api/config/automation/config/" > /tmp/aut_.json ``` Гостиная - 1 (bridge virt. 101) Детская - 2 (102) Спальня - 3 (103) -Tuya Zigbee thermal Sensor - 100 +Гардеробная (в ZONT: «ТП: Гардеробная») - 100 ⚠️ ранее звался «Tuya Zigbee thermal Sensor» Vent control (AT2) - 10 (0A) Газ котёл вкл - 20 (14) ⚠️ ответы [DROP-TAIL]/[BUF-LEFT], НЕ парсятся ``` @@ -760,46 +760,67 @@ ZONT ──[тип 51: устройство, slave_id]──────── Также в свежем дампе **Alex уже создал два контура**: `#Z10525=16,'ТП: Кабинет'` и `#Z10643=16,'ТП: Гардеробная'`. +**✅ ОБНОВЛЕНО 2026-09-18 (круг 53, ФИНАЛ):** «ТП: Гардеробная» — **НЕ новый slave 113**, а +переименование **уже существующего** device `slave 100` (`#Z8381`). Ниже §41-строка 113 — +**тупиковая ветка круга 52, откачена** (см. раздел «Круг 52/53» ниже). + | slave | HA-сущность | устройство (51) | регистр (52) | датчик (1) | имя в ZONT | |---|---|---|---|---|---| +| **100** | `garderobnaia_temperature_temperature` | `8381` | `8383` | `8382` | **ТП: Гардеробная** ✅ (было «Tuya Zigbee Thermal Sensor») | +| 101 | `dining_temperature_2` (sniff) | `8910` | `8912` | `8911` | Температура гостиная | +| 102 | `kids_temperature` (sniff) | `8699` | `8701` | `8700` | Температура детская | +| 103 | `bedroom_temperature` (sniff) | `8931` | `8933` | `8932` | Температура спальня | | 105 | `living_room_floor_*` | `4117` | `4101` | `4109` | ТП: гостиная | -| 106 | `severnaia_floor_*` | `4118` | `4102` | `4110` | **zigbee серая** ✅ (в свежем дампе — имя уже `zigbee серая`) | +| 106 | `severnaia_floor_*` | `4118` | `4102` | `4110` | **zigbee серая** | | 107 | `kabinet_floor_*` | `4119` | `4103` | `4111` | ТП: кабинет | | 108 | `kitchen_floor_*` | `4120` | `4104` | `4112` | ТП: кухня | | 109 | `vannaia_floor_*` | `4121` | `4105` | `4113` | ТП: ванная | | 110 | `prikhozhaia_floor_*` | `4122` | `4106` | `4114` | ТП: прихожая | | 111 | `dushevaia_floor_*` | `4123` | `4107` | `4115` | ТП: душевая | | 112 | `toilet_1_floor_*` | `4124` | `4108` | `4116` | ТП: туалет 1 | -| **113** | `garderobnaia_temperature_temperature` | `4127` | `4125` | `4126` | **ТП: гардеробная** 🆕 (собрана, не залита) | -**Проверено (круг 51):** цепочка устройство→регистр→датчик по всем 8 — зелёная; круг `783 → 783` -ЧИСТЫЙ; txt→yml→txt байт-в-байт; регресс 10 снапшотов зелёный. 785 → **809 строк**. +> 🔴 **РАССИНХРОНА НЕТ.** Гардеробная в ZONT **всегда была на `slave_id: 100`** — ровно как +> в bridge. Круг 52 ошибочно завёл дубль на 113, потому что искал датчик **по имени** +> («Гардеробная»), а в ZONT он назывался «Tuya Zigbee Thermal Sensor». +> 📌 **Правило: наличие датчика проверять по `slave_id` (`grep '=51,,'`), а не по имени.** -**Круг 52 («ТП: гардеробная»):** 2 вставки в YML (`virtual_sensors` + `modbus_devices`, slave 113), -сборка → **651 строка** (648 + 3). Дифф против свежего дампа: **потерь 0, изменённых тел 0**, -добавлено ровно `4125`/`4126`/`4127`. Артефакт — `zont_config/config_local_2026-09-18_11-41-36_NEW.txt` -(перенесён из `/tmp`), коммит `e188b52` (поставлен ДО проверки Alex — нарушение порядка). +**🔴 `dining_temperature_2` — НЕ незаведённый датчик.** Это тот же прибор, что `dining_co2` / +`dining_tvoc` / `dining_pm2_5` / `dining_formaldehyde` / `dining_humidity` (CO₂-сенсор столовой). +В ZONT он **есть** — под именем **«Температура гостиная»**, `slave 101`. Bridge: маппинг +`Dining temp` = `slave_id: 101`, `sniff_field: dining_temperature` — **номер совпадает**. +Причина разнобоя: физически датчик стоит в гостиной, а устройство в HA названо `Dining Sensor`. -🔴 **РАССИНХРОН `slave_id` — задача НЕ решена одной ZONT-правкой!** В `config.template.tmpl` на t610 -гардеробная уже сидит на **`slave_id: 100`** (маппинг «Room temp», историческое наследие от переноса -2026-09-15; файл mtime `2026-09-15 23:54`, в круге 52 **не менялся**). Я поставил в ZONT **113** → -ZONT будет опрашивать 113, bridge на 113 **не ответит**. -Два выхода (решение за Alex, не подтверждено): (1) в ZONT поставить **100**, как в bridge; -(2) оставить 113 и дописать в bridge маппинг 113 → `sensor.garderobnaia_temperature_temperature` + `rebuild`. +> ✅ **ПОКРЫТИЕ ПОЛНОЕ:** все `slave_id`, которые отдаёт bridge (100–104, 105–112), в ZONT есть. +> **Заводить нечего.** Нативные `h2000_pro_temperatura_*` — это сам ZONT, их «добавлять» некуда; +> `t610_cpu_temp` — CPU хоста; `light_sensor_stairs_temperature` — сломан (0.0). -> 📌 **Правило:** один физический датчик = **один `slave_id` по обе стороны**. Перед правкой -> ZONT-стороны сверять `slave_id` в `config.template.tmpl` **на t610**. +**Круг 53 («ТП: Гардеробная»)** — откат тупиковой ветки круга 52 (`.yml` пересобран из `.txt`, +`git checkout` не нужен) + переименование двух объектов, `slave_id`/`register_id` не тронуты: -**⏳ Осталось (круг 52):** заливка на контроллер (**НЕ сделана** — самовольная попытка отбита, -прибор не тронут; `POST /config.txt` → **405**, заливка только через WS) · -🔴 контур `#Z10643=16,'ТП: Гардеробная'` ссылается на регистр `8911` (= `register_id` датчика -«Температура Гостиная», `#Z8910`/`#Z8912`), а **не** на новый `4125` — перенаправлять ли, не подтверждено · -🔴 **рассинхрон `slave_id` 100 ↔ 113** (см. выше). +```text +#Z8381=51,100,'ТП: Гардеробная',5000,300000,[],[],0,[8383] +#Z8382=1,'0','ТП: Гардеробная',0,0,0,60000,[],[],[],8383,[],0,0,0 +``` -> 🔴 **Полное покрытие ≠ «все датчики в ZONT».** Аудит HA ↔ bridge ↔ ZONT: 17 температурных сущностей -> в HA, 13 маппингов в bridge, 12 в ZONT. Три снифф-датчика (`dining_temperature_2` 101, `kids_temperature` 102, -> `bedroom_temperature` 103) в bridge есть, в ZONT **не заведены**; гардеробная — номер расходится; -> `dushevaia_floor_*` в HA `unavailable`. Детали: [[personal/projects/zont-config-compiler]] §34.8, §34.9. +Дифф против свежего дампа: потерь **0**, добавлений **0**, изменено ровно **2** тела (имена); +648 → **648 строк**. Артефакт `zont_config/config_local_2026-09-18_11-41-36_NEW.txt`, +**коммит `dd8c262`**. + +**Круг 52 (тупиковая ветка, откачена):** вставки slave 113 → `4125`/`4126`/`4127`, 651 строка, +коммит `e188b52`. НЕВЕРНО: датчик уже существовал. Не откатывать `e188b52` вручную — +он перекрыт `dd8c262`. + +⚠️ **Урок круга 52 (дорого стоил):** артефакт прошлого круга — **не база**. Дамп `00-45-31` +устарел (в нём не было датчиков 105–112, заливка круга 51 состоялась позже). 🔴 **Правку боевого +конфига строить только от СВЕЖЕГО дампа, снятого прямо перед работой:** +`curl -s http://192.168.0.50/config.txt`. + +**⏳ Осталось:** заливка на контроллер (**НЕ сделана** — самовольная попытка отбита, прибор не тронут; +`POST /config.txt` → **405**, заливка только через WS `#S`-команды) · +🔴 контур `#Z10643=16,'ТП: Гардеробная'` (создан Alex'ом) ссылается на регистр `8911` +(= `register_id` датчика «Температура Гостиная»), а **не** на `8383` — перенаправлять ли, не подтверждено · +`sensor.dushevaia_floor_temperature_temperature` в HA `unavailable` (железо, не конфиг). +Детали: [[personal/projects/zont-config-compiler]] §34–§36. 🔑 **Ключевой факт:** bridge-сторона для 105–112 была готова ещё 2026-09-15 (маппинги в `config.template.tmpl`); не хватало именно ZONT-стороны. Источник истины