--- title: "План: читаемые ID Zigbee, алерты батарей, виртуальные Modbus-датчики" created: '2026-09-15' updated: '2026-09-15' type: plan namespace: family status: 🟡 ПЛАН НА УТВЕРЖДЕНИИ tags: - t610 - zigbee - zha - modbus - battery related: - '[[family/tech/zigbee-t610-z2m-i-zha]]' - '[[family/how-to/home-automation]]' - '[[family/how-to/ha-automations]]' --- # План: читаемые ID, алерты батарей, виртуальные Modbus-датчики > Задача от Alex (2026-09-15): 1) убедиться, что у **всех** Zigbee-устройств читаемые ID; 2) каждому **батарейному** — оповещение о низком заряде; 3) каждый **температурный** Zigbee-датчик прописать как виртуальное устройство Modbus в bridge; 4) обновить доку. ## 0. Что установлено фактами (снимок 2026-09-15) ### 0.1. Новые устройства (8 всего, +1 был в доке) ZHA: **24 записи** (23 устройства + координатор). Было 17. | # | Устройство (name_by_user) | IEEE | Модель | Зона | Батарея | |---|---|---|---|---|---| | 1 | `Темп теплый пол гостиная` | `a4c13827ea585609` | TS0201 | living_room | ✅ | | 2 | `Температура серая` | `a4c1382ac15720dd` | TS0201 | severnaia | ✅ | | 3 | `Темп теплый пол кабинет` | `a4c1382dac5e10e2` | TS0201 | kabinet | ✅ | | 4 | `Темп теплый пол кухня` | `a4c13837021f5298` | TS0201 | kitchen | ✅ | | 5 | `Темп теплый пол ванная` | `a4c13867875ee7d3` | TS0201 | vannaia | ✅ | | 6 | `Темп теплый пол прихожая` | `a4c138cde6eed013` | TS0201 | prikhozhaia | ✅ | | 7 | `Темп теплый пол душевая` | `a4c13865e226312d` | TS0201 | dushevaia | ✅ (был ранее) | | 8 | `shower_2_presence_sensor` | `a4c138c4a94a6a31` | TS0601 | dushevaia | ❌ mains | Все 12 TS0201 — **батарейные EndDevice**, сущность `Батарея` есть у каждого. ### 0.2. 🔴 Дефекты ID, найденные при проверке | # | Дефект | Пример | Оценка | |---|---|---|---| | D1 | **Имя устройства по-русски** (HA транслитерирует) | `Темп теплый пол гостиная` → `sensor.temp_teplyi_pol_gostinaia_temperatura` | 🔴 громоздко, ломает консистентность | | D2 | **Перепутан префикс: `tualet_` при зоне `prikhozhaia`** | `sensor.tualet_temp_teplyi_pol_prikhozhaia_temperatura` | 🔴 прямая ошибка в имени | | D3 | **Дубли `_2` / `_3` у LQI/RSSI** (остатки миграции) | `sensor.tz3000_gjnozsaz_ts011f_lqi_2`, `_3` | 🟡 косметика, `disabled_by=integration` | | D4 | `sauna` — **зона `tualet`**, хотя это реле | `switch.sauna` в зоне ТУАЛЕТ | 🔴 неверная зона | | D5 | `select`-сущности `sauna` названы `bed_dimmer_*` | `select.bed_dimmer_power_on_behavior` под устройством `sauna` | 🟡 ошибка выбора при переименовании | Остальные 16 устройств (реле, свет, кнопки, диммер) — ID читаемые ✅. ### 0.3. Батарейные устройства и их сущности (7 шт.) | Устройство | Сущность батареи | Текущий заряд | |---|---|---| | `toilet_1_floor_temperature` | `sensor.toilet_1_floor_temperature_battery` | 100.0 | | `light_sensor_stairs` | `sensor.light_sensor_stairs_battery` | 100.0 | | `Темп теплый пол душевая` | `sensor.shower_2_floor_battery` | 100.0 | | `boiler_water_leak` | `sensor.boiler_water_leak_battery` | 100.0 | | `wireless_light_switch_bed` | `sensor.tz3000_kccru4oi_ts0041_batareia` | ? | | `office_temperature_sensor` | `sensor.tz3000_akqdg6g7_ts0201_batareia` | ? | | 6 × новых TS0201 | `sensor.*_batareia` | ? | **Оповещений о низком заряде — НЕТ ни у одного** (проверено: автоматизаций на `battery` нет). ### 0.4. Modbus-bridge — занятость адресов | Slave | Что | Регистр | |---|---|---| | 100 | `sensor.office_temperature_sensor_temperature` (Room temp) | 100 | | 101 | снифф `dining_temperature` + **запись** `switch.recirculation_pump` | 100 / 1 | | 102 | снифф `kids_temperature` | 100 | | 103 | снифф `bedroom_temperature` | 100 | | 104 | Zigbee-реле `switch.boiler_controller_power` | 1 | **Свободно: `105+`** (у 100/102/103 — регистры ≠ 100). --- ## 1. План действий ### Шаг 1. Переименовать устройства в читаемые ID (ZHA) Живой конфиг bridge — **не трогать** до подтверждения имён. Предлагаемая схема имён (единый стиль `<зона>_floor_temperature`): | Текущее | Предлагаемое | Итоговые сущности | |---|---|---| | `Темп теплый пол гостиная` | `living_room_floor_temperature` | `sensor.living_room_floor_temperature_temperature` | | `Температура серая` | `severnaia_floor_temperature` | `sensor.severnaia_floor_temperature_temperature` | | `Темп теплый пол кабинет` | `kabinet_floor_temperature` | `sensor.kabinet_floor_temperature_temperature` | | `Темп теплый пол кухня` | `kitchen_floor_temperature` | `sensor.kitchen_floor_temperature_temperature` | | `Темп теплый пол ванная` | `vannaia_floor_temperature` | `sensor.vannaia_floor_temperature_temperature` | | `Темп теплый пол прихожая` | `prikhozhaia_floor_temperature` | `sensor.prikhozhaia_floor_temperature_temperature` | | `Темп теплый пол душевая` | `dushevaia_floor_temperature` | `sensor.dushevaia_floor_temperature_temperature` | | `office_temperature_sensor` | `kabinet_temperature` | `sensor.kabinet_temperature_temperature` | > ⚠️ **Переименование душевой затронет уже используемые ID** `sensor.shower_2_floor_temperature/humidity/battery` — их надо либо оставить как есть, либо обновить все ссылки. **Требует решения Alex.** Механика: ZHA **не читает** `friendly_name` из Z2M → задавать через `config/device_registry/update` (WS) с `name_by_user`. ⚠️ Питфолл: удаление `device_id` сбрасывает `area_id`; переименование не сбрасывает, но проверять `area_id` после каждой операции. ### Шаг 2. Починить зону `sauna` (D4) и `select`-имена (D5) - `sauna` → зона `kotelnaia` (уточнить у Alex: сауна или котельная?) - `select.bed_dimmer_*` под `sauna` → переименовать в `sauna_*` ### Шаг 3. Оповещения о низком заряде (7 батарейных) На каждое устройство — автоматизация: ```yaml - id: alias: "Батарея: <устройство> разряжена" triggers: - trigger: numeric_state entity_id: sensor._battery below: 20 for: "02:00:00" actions: - action: persistent_notification.create data: title: "🔋 Батарея разряжена" message: "<устройство>: {{ states('sensor._battery') }}%" ``` Порог **20 %**, выдержка **2 ч** (защита от просадки под нагрузкой). ⚠️ Домен триггера в ZHA — `battery` → `battery_level`. Проверять имена сущностей (`_battery` vs `_batareia`). Способ доставки: `persistent_notification` — обсуждаемо (могут быть мобильные нотификации). ### Шаг 4. Виртуальные Modbus-датчики в bridge Добавить в `data/config.template.tmpl` секцию `mappings`: | Slave | Источник (HA entity) | Регистр | Имя | |---|---|---|---| | 105 | `sensor.living_room_floor_temperature_temperature` | 100 | Living room floor temp | | 106 | `sensor.severnaia_floor_temperature_temperature` | 100 | Severnaia floor temp | | 107 | `sensor.kabinet_floor_temperature_temperature` | 100 | Kabinet floor temp | | 108 | `sensor.kitchen_floor_temperature_temperature` | 100 | Kitchen floor temp | | 109 | `sensor.vannaia_floor_temperature_temperature` | 100 | Vannaia floor temp | | 110 | `sensor.prikhozhaia_floor_temperature_temperature` | 100 | Prikhozhaia floor temp | | 111 | `sensor.dushevaia_floor_temperature_temperature` | 100 | Dushevaia floor temp | | 112 | `sensor.toilet_1_floor_temperature_temperature` | 100 | Toilet 1 floor temp | Формат (по образцу существующего): ```yaml - name: "Living room floor temp" source: "ha" entity_id: "sensor.living_room_floor_temperature_temperature" slave_id: 105 register_address: 100 register_count: 1 data_type: "int16" divider: 10 ``` ⚠️ **Проверить свободно ли 105+** по двум источникам: эта карта + сам шаблон (сделано ✅). ⚠️ **`rebuild` обязателен** — шаблон впекается в образ. ⚠️ Только температурные. `dining/kids/bedroom` — уже есть (сниффы). ### Шаг 5. Обновить доку - `family/tech/zigbee-t610-z2m-i-zha.md` — карта устройств 16 → 23, новые TS0201, дефекты ID. - `family/how-to/home-automation.md` §6 — карта slave'ов 100–112. - `family/how-to/ha-automations.md` — 7 новых автоматизаций батарей. --- ## 2. Вопросы к Alex (до начала работ) 1. **Схема имён** — устраивает `living_room_floor_temperature` / `severnaia_floor_temperature`? Или другой стиль? 2. **Переименовывать ли `office_temperature_sensor`** → `kabinet_temperature`? (затронет slave 100 в bridge) 3. **Душевая:** оставить `shower_2_floor_*` или переименовать в `dushevaia_floor_temperature_*`? (переименование = правка ссылок) 4. **`sauna` в зоне «Туалет»** — куда правильно: котельная? 5. **Порог/доставка алертов:** 20 %, 2 ч, `persistent_notification` — или мобильные push? 6. **Нужны ли в Modbus влажность/CO2**, или только температура? ## 3. Порядок выполнения и риски | Шаг | Риск | Откат | |---|---|---| | 1. Переименование | Средний — меняются entity_id, ломаются ссылки в автоматизациях/дашбордах | Бэкап `core.entity_registry` + список старых ID | | 2. Зона/select | Низкий | Вернуть `area_id` | | 3. Автоматизации | Низкий | Бэкап `automations.yaml` | | 4. Modbus mappings | Средний — rebuild аддона, возможен RCU/нагрузка | Бэкап `config.template.tmpl`, `rollback` | **Обязательно перед началом:** - Бэкап `/config/.storage/core.entity_registry`, `core.device_registry`, `core.restore_state` - Бэкап `/config/automations.yaml` - Бэкап `/addons/modbus-bridge/data/config.template.tmpl` (новый `.bak-idmodbus-<дата>`) - Снять снапшот HA (`POST /backups/new/full`)