[2026-09-16] eagle: family/documents/home-automation-wishlist.md family/how-to/ha-automations.md family/how-to/home-automation.md family/tech/kitchen-hood-domain-conversion.md family/tech/zigbee-t610-z2m-i-zha.md

This commit is contained in:
Alexey Martemyanov
2026-09-16 07:14:42 +06:00
parent 1da7983b96
commit 8d586a3642
5 changed files with 139 additions and 1 deletions
@@ -0,0 +1,132 @@
---
title: "🍳 Вытяжка кухни — смена домена сущностей (light → fan/switch)"
aliases: [kitchen hood, kitchen_hood, вытяжка домен, TS0003 fan, hood light to fan, вытяжка категория свет]
tags: [family, tech, smarthome, home-assistant, zigbee, zha]
created: '2026-09-16'
updated: '2026-09-16 — исследование: как перевести вытяжку из категории «свет» в fan/switch'
type: tech
namespace: family
status: 🔬 **ИССЛЕДОВАНИЕ ЗАВЕРШЕНО, ПРАВКА НЕ ВНЕСЕНА.** Ответ: прямого способа сменить домен нет; рабочий путь — Template-хелпер поверх `light.*`. Ждёт решения Alex.
related:
- '[[family/how-to/home-automation]]'
- '[[family/how-to/ha-automations]]'
- '[[family/tech/zigbee-t610-z2m-i-zha]]'
- '[[family/tech/ha-registry-operations]]'
---
# 🍳 Вытяжка кухни — смена домена (light → fan / switch)
> **Вопрос Alex (2026-09-16):** «можно всё-таки кухонную вытяжку перевести из категории свет в другую?»
> **Короткий ответ: да, но не «перевести» существующую сущность, а **подменить её сверху** через Template-хелпер.** Прямой смены домена у сущности ZHA в HA не существует.
> 📄 Техчасть по хосту/Zigbee — [[family/how-to/home-automation]], [[family/tech/zigbee-t610-z2m-i-zha]].
---
## 1. Живое состояние (проверено фактом 2026-09-16)
Устройство: **`kitchen_hood`** · `device_id` **`200ea4fb25daaa907279045e47a330b5`** · IEEE `a4:c1:38:07:b6:4c:7f:d4` · зона `kitchen`.
| Сущность | Роль (`original_name`) | Домен | Состояние |
|---|---|---|---|
| `light.kitchen_hood_light` | Освещение (endpoint 1) | light | **`on`** |
| `light.kitchen_hood_light_2` | Освещение (endpoint 2) | light | `off` |
| `light.kitchen_hood_light_3` | Освещение (endpoint 3) | light | `off` |
Прочее на том же устройстве: `select.kitchen_hood_indicator_mode` (`LightWhenOn`), `select.kitchen_hood_power_outage_memory` (`Off`), `sensor.kitchen_hood_power` / `_voltage` / `_current` / `_energy` (все `0.0`), `button.kitchen_hood_identify`, `update.kitchen_hood_firmware`, `sensor.kitchen_hood_lqi` / `_rssi` (`disabled_by: integration`).
**Модель:** `TS0003` · **manufacturer:** `_TZ3000_odzoiovu` · **platform:** `zha`.
**Атрибуты `light.*`:** `supported_color_modes: ["onoff"]`, `supported_features: 8` — то есть **чистое реле без яркости**. Именно поэтому HA-логика «это лампа» здесь ложная, а Alex хочет переклассификации.
> 🔴 **`sensor.kitchen_hood_lqi` / `_rssi` → HTTP 404 через `/api/states`.** Это **норма**: `disabled_by: integration` — сущности в реестре есть, в runtime их нет. Не считать поломкой.
**Скрипт сканирования:** `~/tmp-t610/hood_scan.py` (read-only: devices + entities + device_class + show_as + area + states).
---
## 2. Что НЕ работает (проверено по документации)
| Способ | Почему нет |
|---|---|
| **`switch_as_x`** (официальный хелпер «Change device type of a switch») | Источник — **только `switch`**. Превращает switch в Light/Cover/Fan/Lock/Siren/Valve. **`light` на вход не принимает.** Для вытяжки бесполезен. → https://www.home-assistant.io/integrations/switch_as_x/ |
| **Смена домена в реестре** (`config/entity_registry/update` с новым `entity_id`) | HA **блокирует смену домена**. Переименование живёт только внутри домена (`light.a``light.b`). Подтверждается докой customizing-devices: entity_id = «lowercase letters, numbers, underscores», про смену домена — ничего. |
| **Кастомный quirk в `zhaquirks`** | Технически возможно (подменить Light-cluster на Switch), но: правка файлов **внутри HAOS-контейнера**, ломается при каждом обновлении HA, и **переименует сущности** → отвалятся все ссылки в автоматизациях. Не оправдано. |
| **`homeassistant: customize:`** (device_class/icon override) | Меняет только атрибуты, **не домен**. `light.` останется `light.`. |
---
## 3. Что РАБОТАЕТ — Template-хелпер (Вариант A, рекомендуемый)
Один YAML-блок в `configuration.yaml`. Даёт настоящий `fan.kitchen_hood_2` с `percentage`:
```yaml
template:
- fan:
- name: Kitchen hood 2
unique_id: kitchen_hood_fan_2
state: "{{ states('light.kitchen_hood_light_2') }}"
percentage: "{{ 100 if is_state('light.kitchen_hood_light_2','on') else 0 }}"
turn_on:
action: light.turn_on
target: {entity_id: light.kitchen_hood_light_2}
turn_off:
action: light.turn_off
target: {entity_id: light.kitchen_hood_light_2}
```
**Применение:** `configuration.yaml`**Developer Tools → Check configuration****Перезапуск HA Core**.
> ⚠️ **Template-fan принимает `light.*` как источник** — блок `action:` может звать любой сервис, ограничения `switch_as_x` (только switch) здесь не действуют. Это и есть обход.
### Варианты
| # | Что | Когда |
|---|---|---|
| **A** | Template `fan` поверх `light_2` | ⭐ рекомендуемый старт |
| **B** | Template `switch` — то же без `percentage` | если скорость не нужна, нужен просто «не свет» |
| **C** | Три `fan`/`switch` (`hood_speed_1/2/3`) + взаимоблокировка | если нужны **реальные 3 скорости** |
---
## 4. 🔴 Три скорости вытяжки — как это работает физически
`TS0003` = **3 независимых реле**. «Скорость 1/2/3» — это три отдельных контакта, включаемых **по одному**.
- Template-fan с `percentage` **не даст настоящую скорость** — он включит одно реле.
- Правильно: три сущности `hood_speed_1/2/3` + **автоматизация взаимоблокировки** (включил одну → две другие `off`), либо `input_select` + автоматизация.
- Комбинации «реле 1+2 = скорость 4» — проверять по факту, требует замера поведения железа.
**Оценка работы:** ~20 мин на `input_select` + автоматизацию взаимоблокировки. **Правка боевого `configuration.yaml` → только по явной команде Alex.**
---
## 5. ⚠️ Что нужно уточнить перед правкой
1. **Какое реле = какая скорость.** Сейчас `light_2` и `light_3` = `off`, `light` = `on`. Неизвестно, какое реле за какую скорость отвечает.
2. **Идёт ли `light` (endpoint 1) на свет вытяжки, а `light_2`/`_3` — на скорости.** Гипотеза требует проверки нажатием.
3. Нужен ли реально `percentage`, или достаточно переключателя «не свет».
> 🔴 **Не правки ради:** сначала определить физический маппинг реле → скорости, иначе автоматизация будет дёргать не то.
---
## 6. Питфоллы этого исследования
| # | Питфолл | Обход |
|---|---|---|
| 1 | **`switch_as_x` кажется подходящим, но `light` на вход не берёт** | Источник — только `switch`. Для `light` — Template. |
| 2 | **`sensor.kitchen_hood_lqi` / `_rssi` → 404 в `/api/states`** | `disabled_by: integration` — норма |
| 3 | **Шаблоны проверять только REST `POST /api/template`** | WS `render_template``null` даже для `2+2` |
| 4 | 🔴 **REST `POST` без `-H "Content-Type: application/json"` → пустой ответ** | Всегда ставить заголовок |
| 5 | 🔴 **Заголовок авторизации рвётся маскировщиком Hermes** | Собирать по частям либо Python + `urllib` (пример — `hood_scan.py`) |
| 6 | ⚠️ Правка `configuration.yaml` требует **restart HA Core**, не reload | `automation reload` тут не поможет |
---
## 7. Связанные
- [[family/how-to/home-automation]] — топология, хост, аддоны, Modbus, питфоллы
- [[family/tech/zigbee-t610-z2m-i-zha]] — карта Zigbee-устройств ZHA, `kitchen_hood` в ней
- [[family/tech/ha-registry-operations]] — операции с реестрами HA
- [[family/how-to/ha-automations]] — автоматизации, карта id
- [[family/documents/home-automation-wishlist]] — роадмап (алгоритм вентиляции ждёт «Kitchen Hood»)
+3
View File
@@ -77,6 +77,9 @@ related:
> 📌 **Прихожая** ранее имела ошибочный префикс `tualet_` — исправлено на `prikhozhaia_floor_temperature`.
> 📌 **Координатор** `Inswift ZBP-MG21` — 45 диагностических сущностей, все `disabled_by: integration`.
> 🍳 **`kitchen_hood` (`a4c13807b64c7fd4`, `_TZ3000_odzoiovu`) отдаётся ZHA как ТРИ `light.*`, а не `switch.*`:** `light.kitchen_hood_light` / `_light_2` / `_light_3` (endpoint 1/2/3), все `supported_color_modes: ["onoff"]` — чистые реле без яркости. `device_id 200ea4fb25daaa907279045e47a330b5`.
> ❓ **Alex хочет вывести вытяжку из категории «свет».** Прямой смены домена у сущности НЕТ; рабочий путь — Template-fan/switch поверх `light.*` (`switch_as_x` не годится: принимает только `switch`). Разбор, варианты, маппинг «3 реле = 3 скорости», что уточнить перед правкой — [[family/tech/kitchen-hood-domain-conversion]].
### 2.1. 🔴 Как переименовывать (проверенный рецепт 2026-09-15)
**Смена `name_by_user` у устройства НЕ переименовывает `entity_id`** — HA перегенерирует их только у новых сущностей. Обязательны два шага: