Практичные сцены и автоматизации для Zigbee в Home Assistant

Чтобы Zigbee-управление в Home Assistant работало быстро и стабильно, держите простое правило: сцены описывают “как должно быть”, автоматизации решают “когда срабатывать”, скрипты хранят переиспользуемую логику, а для критичных кнопок света по возможности используйте Zigbee binding/группы (мгновенно и переживает падение HA).

Оглавление

Что делать сценами, а что автоматизациями

Сцена — это “снимок целевых состояний” (яркость, цвет, on/off), а не логика. Поэтому сцена идеальна для режимов вроде “Вечер/Кино/Ночь”, но не должна решать, когда включаться.

Быстрая схема ролей

ИнструментОтвечает заКогда использовать
sceneЦелевые состояния“Сделай как в режиме Кино”
automationТриггеры и условия“Если нажали кнопку/есть движение/после заката”
scriptПереиспользуемые действияОдин и тот же сценарий вызывается из разных мест
Zigbee binding/groupПрямое управлениеНастенная кнопка → свет должен работать всегда

Если одна и та же логика дергается кнопкой, голосом и по расписанию — вынесите её в script, а в автоматизациях оставьте только триггеры/условия.

Zigbee-уровень: binding и группы без перегруза сети

Binding полезен там, где задержки недопустимы: коридор, санузел, лестница. Команда идет напрямую от кнопки к лампе/группе, и свет работает даже если Home Assistant перезапускается.

Группы Zigbee (нативные, на уровне сети) могут ускорять массовые команды, но есть компромисс: частые широковещательные изменения яркости/цвета по большой группе иногда создают “шум” в сети.

Не превращайте диммирование/эффекты в “спам”: десятки команд подряд (особенно на 10+ ламп) часто дают рассинхрон и редкие “не применилось”. Лучше сцена/группа + короткие паузы, либо binding для базовых действий.

Надежные шаблоны YAML: кнопки, движение, snapshot/restore

Ниже — минимальные, но устойчивые заготовки. Подставьте свои entity_id/device_id.

1) Статическая сцена (режим света)

scene:
  - name: Вечер в гостиной
    icon: mdi:weather-night
    entities:
      light.living_ceiling:
        state: "on"
        brightness: 90
      light.living_lamp:
        state: "on"
        brightness: 60
      switch.living_backlight:
        state: "on"

2) Кнопка Zigbee: single/double/hold через choose

Подходит и для ZHA, и для Zigbee2MQTT (важно лишь выбрать корректный device trigger в UI, а ниже — структура действий).

automation:
  - id: remote_choose_scenes
    alias: "Пульт: single/double/hold → сцены"
    mode: restart
    trigger:
      - platform: device
        domain: mqtt
        device_id: YOUR_DEVICE_ID
        type: action
        subtype: single
        id: single
      - platform: device
        domain: mqtt
        device_id: YOUR_DEVICE_ID
        type: action
        subtype: double
        id: double
      - platform: device
        domain: mqtt
        device_id: YOUR_DEVICE_ID
        type: action
        subtype: hold
        id: hold
    action:
      - choose:
          - conditions:
              - condition: trigger
                id: single
            sequence:
              - service: scene.turn_on
                target:
                  entity_id: scene.vecher_v_gostinoy
                data:
                  transition: 1
          - conditions:
              - condition: trigger
                id: double
            sequence:
              - service: scene.turn_on
                target:
                  entity_id: scene.kino
          - conditions:
              - condition: trigger
                id: hold
            sequence:
              - service: light.toggle
                target:
                  entity_id: light.living_ceiling

3) Snapshot/restore: “сделать подсветку и вернуть как было”

Паттерн полезен для движения ночью, дверного звонка, уведомлений цветом.

automation:
  - id: motion_snapshot_restore
    alias: "Движение: подсветить и восстановить"
    mode: restart
    trigger:
      - platform: state
        entity_id: binary_sensor.hall_motion
        to: "on"
    condition:
      - condition: state
        entity_id: sun.sun
        state: "below_horizon"
    action:
      - service: scene.create
        data:
          scene_id: before_hall_motion
          snapshot_entities:
            - light.hall

      - service: light.turn_on
        target:
          entity_id: light.hall
        data:
          brightness: 80

      - wait_for_trigger:
          - platform: state
            entity_id: binary_sensor.hall_motion
            to: "off"
        timeout: "00:02:00"

      - delay: "00:00:10"

      - service: scene.turn_on
        target:
          entity_id: scene.before_hall_motion

Для snapshot_entities надежнее перечислять конкретные лампы. Если передать group.*, восстановление может быть “как у группы”, а не как у каждой лампы отдельно.

4) “Дожим” команды, если лампа иногда пропускает включение

script:
  ensure_light_on:
    alias: "Дожать включение света"
    mode: restart
    fields:
      target_light:
        description: "Сущность света (например light.kitchen)"
    sequence:
      - repeat:
          sequence:
            - service: light.turn_on
              target:
                entity_id: "{{ target_light }}"
            - delay:
                milliseconds: 200
          until:
            - condition: template
              value_template: "{{ is_state(target_light, 'on') }}"

Частые ошибки

  • Делать “логику” внутри сцен: сцена должна быть простым набором целевых состояний.
  • Оставлять автоматизацию в mode: single для кнопок: быстрые нажатия начнут теряться.
  • Слать пачки команд без пауз на большую группу ламп (яркость+цвет+вкл): сеть Zigbee и устройства могут не успевать.
  • Пытаться “выключить по таймеру” без учета ручного включения: вместо этого используйте snapshot/restore или проверку текущего состояния.
  • Смешивать критичное управление светом (коридор) и “умные” условия в одной цепочке: базу лучше отдать в binding, а HA — для дополнительных действий (двойной клик, ночной режим).

FAQ

Нужны ли сцены, если можно просто light.turn_on?
Сцены удобнее, когда один режим включает сразу несколько сущностей и вы хотите единый “пресет” с одинаковыми параметрами и переходом.

Что выбрать для кнопок: restart или queued?
restart — когда важнее последнее нажатие (часто для сцен). queued — когда команды должны выполниться по очереди (полезно, если устройство/сеть “задыхается” от параллельных действий).

Почему иногда свет включается не весь?
Чаще всего причина — слишком много команд подряд (особенно цвет/яркость на группе) или слабая Zigbee-сетка. Упростите действие (сцена/группа), добавьте паузы, сократите количество одновременных изменений.

Можно ли сделать “цикл сцен” одной кнопкой?
Да: используйте helper (input_select/input_number) как указатель текущего режима и переключайте его по кругу, а затем включайте сцену по выбранному значению.

Binding отменяет автоматизации Home Assistant?
Binding работает параллельно: базовые команды кнопки могут идти напрямую на лампу, а Home Assistant — слушать отдельные жесты (например double/hold) и включать сцены/скрипты поверх.