[2026-09-15] eagle: family/how-to/ha-automations.md family/plans/t610-zigbee-ids-battery-freshsensors-modbus.md

This commit is contained in:
Alexey Martemyanov
2026-09-15 23:01:17 +06:00
parent db20bb874d
commit 53ddb080f5
2 changed files with 91 additions and 7 deletions
@@ -195,7 +195,7 @@ ssh -i ~/.ssh/id_rsa root@192.168.2.176 'cat /config/automations.yaml' \
| Slave | HA-сущность |
|---|---|
| **100** | `sensor.kabinet_temperature_temperature` (исторический «Room temp») |
| **100** | `sensor.garderobnaia_temperature_temperature` (исторический «Room temp»; был `office_temperature_sensor``kabinet_temperature`) |
| 105 | `sensor.living_room_floor_temperature_temperature` |
| 106 | `sensor.severnaia_floor_temperature_temperature` |
| 107 | `sensor.kabinet_floor_temperature_temperature` |
@@ -237,6 +237,74 @@ ssh root@192.168.2.176 'ha apps rebuild local_modbus-bridge && ha apps start loc
---
## 4bis. ✅ ПОСЛЕ ПЛАНА — датчик перенесён в Гардеробную (2026-09-15, 22:5423:56)
**Задача Alex (вне исходного плана):** «Переименуй этот датчик в датчик гардеробная и перемести в нее и обнови конфиг моста» → «Кабинет который» (т.е. исторический `office_temperature_sensor`).
**Контекст:** в UI датчик не находился под старым именем (`office_temperature_sensor`) — потому что был переименован в `kabinet_temperature` шагом 1. Именно он и был перенесён.
| Что | Было | Стало |
|---|---|---|
| Имя устройства | `kabinet_temperature` | `garderobnaia_temperature` |
| Зона | `kabinet` | `garderobnaia` |
| Сущности (7) | `sensor.kabinet_temperature_*` | `sensor.garderobnaia_temperature_*` |
| Bridge slave 100 | `sensor.kabinet_temperature_temperature` | `sensor.garderobnaia_temperature_temperature` |
| Автоматизация батареи | «Кабинет (температура)», `bat_kabinet_temperature` | «Гардеробная (температура)`, `bat_garderobnaia_temperature` |
| entity_id автоматизации | `automation.batareia_kabinet_temperatura` | `automation.batareia_garderobnaia_temperatura` |
**Проверено фактом:** `Response: 1 register(s) from 100 (ha:sensor.garderobnaia_temperature_temperature) = 24.61 [00 F6]`.
### 🔴 Питфолл: `id_reuse: Identifier values have to increase`
При переименовании сущностей **6 из 7 упали** с этой ошибкой (хотя целевые `entity_id` были свободны). Это внутренний счётчик реестра, **не поломка**.
**Обход (проверен, 6/6 успешно):** переименовать в промежуточное имя, затем из него в целевое.
```python
# entity_id → dom.tmp_xxx → dom.новое_имя
{"type":"config/entity_registry/update","entity_id": old, "new_entity_id": tmp}
{"type":"config/entity_registry/update","entity_id": tmp, "new_entity_id": new}
# при провале second step — откат на old
```
> 📌 Тот же приём уже применялся для сироты-автоматизации (§3.2, `disabled_by` + `remove`). Общее правило: **любая операция реестра с `id_reuse` лечится промежуточным состоянием.**
### 🔴 Питфолл: HA сам перегенерировал `entity_id` автоматизаций
После `automation/reload` автоматизации получили новые `entity_id` **по alias**: `automation.datchik_protechki_kotelnaia_batareia` → `automation.batareia_kotelnaia_datchik_protechki`. Проверять автоматизации по **`attributes.id`**, а не по `entity_id`.
### Аудит автоматизаций (запрошен Alex: «убедись что автоматизация вся корректная»)
| Метрика | Значение |
|---|---|
| Всего | 24 |
| `on` | 23 |
| `off` | 1 — `Ventilation automation on` (намеренно) |
| `unavailable` | **0** |
| Битых ссылок | **0** (22 проверено) |
| Батарейных | 12, все `on` |
**Бэкапы этого этапа:** `/config/automations.yaml.bak-gard-20260915-225404`, `/addons/modbus-bridge/data/config.template.tmpl.bak-gard-20260915-225404`, реестры в `~/tmp-t610/backup-gard-20260915-225404.json`.
**Скрипты:** `~/tmp-t610/{gard_step1,gard_step2,gard_step2b,gard_fix,fix_aut_entid}.py`.
**Коммит vault:** `db20bb8`.
### ⚠️ НЕ ЗАКРЫТО (на момент записи)
Alex сообщил: «**Office temperature sensor battery** — HA ругается что у устройства нет уникального id и оно недоступно».
**Проверено — призрака в бэкенде НЕТ:**
- `sensor.office_temperature_sensor*` в `/api/states` — отсутствует;
- в реестре сущностей (572 записи) — нет упоминаний;
- MQTT-сущности без `unique_id` — **0**;
- MQTT-устройства-призраки Z2M — 4, все легитимные (3 сниффера + H2000);
- config entries `mqtt`/`zha`/`generic` — 3, все `loaded`, призраков нет;
- лог HA Core на `unique_id`/`office` — пусто.
**Вывод:** источник сообщения — UI-кэш (браузер/приложение) либо дашборд-карточка. Требуется уточнение от Alex: **в каком именно экране ругается** (Настройки → Устройства → MQTT / дашборд / Developer Tools / лог автоматизаций). Следующая сессия: спросить экран и вычистить прицельно.
---
## 5. ✅ РЕЗУЛЬТАТ — Шаг 5: дока обновлена
- `family/tech/zigbee-t610-z2m-i-zha.md` — карта 16 → 23 устройств, §2.1 «как переименовывать», §4 батареи, §5 виртуальные Modbus, питфоллы 1721.
@@ -269,6 +337,9 @@ ssh root@192.168.2.176 'ha apps rebuild local_modbus-bridge && ha apps start loc
| 5 | Bridge нельзя проверить без ZONT'а иначе, чем через `HA poll ->` в логе |
| 6 | `rebuild` (не `restart`) после правки `data/config.template.tmpl` |
| 7 | Русские имена устройств → HA транслитерирует в мусорные `entity_id` |
| 8 | `id_reuse: Identifier values have to increase` — штатная ошибка реестра, обходится промежуточным именем (`old → tmp → new`) |
| 9 | HA перегенерирует `entity_id` автоматизаций по alias при `reload` — искать по `attributes.id` |
| 10 | Датчик, «не находимый в UI», может быть переименован — искать по IEEE в реестре, а не по старому имени |
## Связанные заметки