[2026-09-16] Вычищены 185 призраков Z2M из архива реестра; план этажей починен (light_stairs_left); H2000_PRO °F -> °C

This commit is contained in:
Alexey Martemyanov
2026-09-15 23:36:39 +06:00
parent c6f6b668fe
commit ee86207496
2 changed files with 7 additions and 0 deletions
+4
View File
@@ -45,6 +45,10 @@ updated: 2026-09-15 (✅ поздний вечер — Zigbee: +7 новых TS0
>
> **Итог:** удалены три слоя мусора (127 сущностей `platform=mqtt` + 18 устройств); **23 устройства ZHA** с читаемыми ID в едином виде (`<зона>_<роль>`), все в зонах; **12 автоматизаций контроля батарей** (порог 20 %, push + persistent); **9 температурных Zigbee-датчиков** отдаются ZONT'у как виртуальные Modbus slave **100, 105112**; **26 автоматизаций: 25 `on`, 1 `off` намеренно** (`Ventilation automation on`); кнопка спальни шлёт события, диммер рулится; свет лестницы + 2 сценария подсветки работают.
>
> 🔴 **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.
>
> 🔴 **Ключевой факт:** переименование HA-сущности **молча ломает** маппинг bridge → slave отдаёт `0`. Проверено на живом случае: slave 100 (кабинет) отдавал `0`, после правки — `23.97`. Правило: **переименовал сущность → проверь `data/config.template.tmpl` + `rebuild` + ссылки в `automations.yaml`.**
>
> 📌 **Перепаривание НЕ нужно — подтверждено фактом.** Устройства отвечают координатору, ZHA принимает их по NVRAM-сети. Имена даёт технические (`light.tz3000_*`) — переименованы вручную (HA НЕ перегенерирует `entity_id` при смене `name_by_user`).
+3
View File
@@ -394,6 +394,9 @@ curl -s -H "$HDR" http://supervisor/backups | jq
| 21 | **Проверить slave bridge без ZONT нельзя** | Bridge — serial-slave: отвечает только на запрос. Признаки работы: `HA poll -> <entity> = <val>` (поллер) и `Response: ... = <val> [<hex>]` (ответ ZONT'у) |
| 22 | 🔴 **`id_reuse: Identifier values have to increase` при переименовании сущности — штатный случай, не поломка** | Внутренний счётчик реестра. **Обход (проверен):** переименовать в промежуточное имя, затем из него в целевое. `entity_id → dom.tmp_xxx → dom.новое_имя` |
| 23 | **После `automation reload` `entity_id` автоматизаций обновились сами** | HA перегенерировал их по alias: `automation.datchik_protechki_kotelnaia_batareia``automation.batareia_kotelnaia_datchik_protechki`. Проверять по `attributes.id`, не по `entity_id` |
| 24 | 🔴 **Призраки Z2M живут в `deleted_entities`** (архив реестра), а не в `entities`. UI «Обслуживание» их показывает, `/api/states` и WS-реестр — нет | Не путать: `jq '.data.entities'` — живое, `jq '.data.deleted_entities'` — архив. Снос только из архива, живое не трогать. Скрипт: `~/tmp-t610/ghost_purge.sh` (исключает живое + вентиляцию автоматически) |
| 25 | 🔴 **План этажей ссылался на снесённого призрака `light.smart_light_stairs_l1`** → ошибка «недоступно» на карте | Проверять ссылки плана: `jq -r ".data.config.views[].sections[].cards[]?\|select(.type==\"picture-elements\")\|.elements[]?\|select(.entity?!=null)\|.entity" /config/.storage/lovelace.home_plan` → сверить со `/api/states`. Живой = `light.light_stairs_left/right`. Скрипт: `~/tmp-t610/fix_plan_stairs.sh` |
| 26 | 🔴 **H2000_PRO показывал °F: ручной override `sensor.private.suggested_unit_of_measurement: "°F"`** | Сброс: WS `config/entity_registry/update` с **`options_domain: "sensor.private"`** и `options: {suggested_unit_of_measurement: null}`. ⚠️ `options_domain: "sensor"` даёт `success: true`, но **не меняет** единицу — проверено фактом. Значения тоже были в °F (55.22 °F = 12.9 °C) |
---