Files
obsidian-vault/family/tech/kitchen-hood-domain-conversion.md
T

9.7 KiB
Raw Blame History


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:


🍳 Вытяжка кухни — смена домена (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.alight.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:

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.yamlDeveloper 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_templatenull даже для 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. Связанные