Автоматизация - Управление выключателем по датчику движения в Home Assistant
Одной из самых распространенных автоматизаций является управление освещением по датчику движения, очень удобно войти в помещение и включение света происходит автоматически, через какое-то время свет отключается сам. Рассмотрим примеры ее реализации.
Пример 1
Задействованные объекты:
- Датчик движения - ID устройства: 0x001
- Управляемый выключатель физически замыкающий/размыкающий электрическую линию - ID устройства: 0x002
Описываемые действия:
- Включение освещение по датчику движения
- Отключение освещения через 3 минуты после окончания обнаружения движения датчиком
- Отключение освещения через 3 минуты после включения выключателя (на случай если свет был включен с выключателя, но в помещении не было обнаружено движение)
Правим файл automations.yaml
или пользуемся редактором автоматизаций Configuration -> Automations -> +
.
Действие 1. При переходе сенсора движения в состояние on
проверяется текущее состояние выключателя, если выключатель находится в состоянии off
, то освещение включается.
- id: turn_on_light_by_motion_sensor alias: Turn on light by motion sensor trigger: - platform: state entity_id: binary_sensor.0x001_occupancy to: 'on' condition: - condition: state entity_id: switch.0x002_switch state: 'off' action: - service: switch.turn_on entity_id: switch.0x002_switch data: {}
Действие 2. При переходе сенсора движения в состояние off
через 3 минуты проверяется текущее состояние выключателя, если выключатель находится в состоянии on
, то освещение выключается.
- id: turn_off_light_by_motion_sensor alias: Turn off light by motion sensor trigger: - platform: state entity_id: binary_sensor.0x001_occupancy to: 'off' for: 00:03:00 condition: - condition: state entity_id: switch.0x002_switch state: 'on' action: - service: switch.turn_off entity_id: switch.0x002_switch data: {}
Действие 3. При включении освещения через 3 минуты проверяется состояние датчика на присутствие движения, если оно не обнаружено, то освещение выключается. Иначе, свет должен отключиться, когда сенсор движения перейдет в состояние off
- действие 2.
- id: turn_off_light_after_3_min_when_switch_on alias: Turn off light after 3 min when switch on trigger: - platform: state entity_id: switch.0x002_switch to: 'on' for: 00:03:00 condition: - condition: state entity_id: binary_sensor.0x001_occupancy state: 'off' action: - service: switch.turn_off entity_id: switch.0x002_switch data: {}
Пример 2
Автоматическое включение и отключение освещения - это отлично, но бывают ситуации, когда это не нужно и надо иметь возможность выбора отключения данной функции. Можно отключить автоматизации в настройках, но будет удобнее создать переключатель, который будет отвечать за автоматическое включение и отключение освещения.
Создаем выключатель автоматики тип Toggle
с наименованием auto_light_on_off
в меню Configuration -> Helpers -> +
или в файл configuration.yaml
добавляем следующую запись:
input_boolean: auto_light_on_off: name: Auto light on
Кнопку удобно вывести на панель lovelace для быстрого доступа.
Задействованные объекты:
- Выключатель автоматического включения/отключения освещения - ID: input_boolean.auto_light_on_off
- Датчик движения - ID устройства: 0x001
- Управляемый выключатель физически замыкающий/размыкающий электрическую линию - ID устройства: 0x002
Описываемые действия:
- Включение освещения по датчику движения
- Отключение освещения через 3 минуты после окончания обнаружения движения датчиком
- Отключение освещения через 3 минуты после включения выключателя (на случай если свет был включен с выключателя, но в помещении не было обнаружено движение)
- Отключение освещения через 3 минуты после включения выключателя автоматики
Действие 1. При переходе сенсора движения в состояние on
проверяется текущее состояние выключателя автоматики и выключателя освещения, если первый находится в состоянии on
, а второй выключатель находится в состоянии off
то освещение включается.
- id: turn_on_light_by_motion_sensor alias: Turn on light by motion sensor trigger: - platform: state entity_id: binary_sensor.0x001_occupancy to: 'on' condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'off' action: - service: switch.turn_on entity_id: switch.0x002_switch data: {}
Действие 2. При переходе сенсора движения в состояние off
через 3 минуты проверяется текущее состояние выключателя автоматики и выключателя освещения, если первый находится в состоянии on
и второй выключатель находится в состоянии on
, то освещение выключается.
- id: turn_off_light_by_motion_sensor alias: Turn off light by motion sensor trigger: - platform: state entity_id: binary_sensor.0x001_occupancy to: 'off' for: 00:03:00 condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - service: switch.turn_off entity_id: switch.0x002_switch data: {}
Действие 3. При включении освещения через 3 минуты проверяется состояние выключателя автоматики и датчика на присутствие движения, если автоматика включена и движение не обнаружено, то освещение отключается. Иначе, свет должен отключиться, когда сенсор движения перейдет в состояние off
- действие 2.
- id: turn_off_light_after_3_min_when_switch_on alias: Turn off light after 3 min when switch on trigger: - platform: state entity_id: switch.0x002_switch to: 'on' for: 00:03:00 condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.0x001_occupancy state: 'off' action: - service: switch.turn_off entity_id: switch.0x002_switch data: {}
Действие 4. При включении автоматического включения освещения через 3 минуты проверяется текущее состояние выключателя автоматики (может быть выключено в период ожидания), датчика движения и выключателя освещения. Если автоматика on
, движение off
и свет включен, то освещение отключается.
- id: turn_off_light_after_3_min_when_auto_on alias: Turn off light after 3 min when switch on trigger: - platform: state entity_id: input_boolean.auto_light_on_off to: 'on' for: 00:03:00 condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.0x001_occupancy state: 'off' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - service: switch.turn_off entity_id: switch.0x002_switch data: {}
Пример 3
В примере 2 есть недостаток в действии 4, при окончании обнаружения движения до окончания таймера отключение освещения произойдет раньше, чем ожидается, т.к. состояния устройств будут соответствовать условиям. Решить проблему перекрестных таймеров можно создав свой таймер, по которому будет происходить отключение освещения. В файле configuration.yaml
описываем таймер, время отключения 180 секунд:
timer: light_turn_off: name: Light turn off timer duration: 180
Задействованные объекты:
- Выключатель автоматического включения/отключения освещения - ID: input_boolean.auto_light_on_off
- Таймер автоматического отключения освещения - ID: timer.light_turn_off
- Датчик движения - ID устройства: 0x001
- Управляемый выключатель физически замыкающий/размыкающий электрическую линию - ID устройства: 0x002
Описываемые действия:
- Включение автоматического освещения
- Выключение автоматического освещения
- Включение освещения с выключателя
- Выключение освещения с выключателя
- Включение освещения по датчику движения
- Отмена таймера при обнаружении движения
- Датчик движения прекратил обнаружение действия
- Таймер завершил отсчет
Действие 1. При включении выключателя автоматики происходит перезапуск таймера отключения освещения, если датчик движения в состоянии off
и освещение включено.
- id: 'turn_on_auto_light' alias: Auto light on trigger: - platform: state entity_id: input_boolean.auto_light_on_off to: 'on' condition: - condition: state entity_id: binary_sensor.0x001_occupancy state: 'off' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - service: timer.cancel entity_id: timer.light_turn_off data: {} - service: timer.start entity_id: timer.light_turn_off data: {}
Действие 2. При отключении выключателя автоматики если был запущен таймер отключения, то он отменяется.
- id: 'turn_off_auto_light' alias: Auto light off trigger: - platform: state entity_id: input_boolean.auto_light_on_off to: 'off' condition: - condition: state entity_id: timer.light_turn_off state: active action: - service: timer.cancel entity_id: timer.light_turn_off data: {}
Действие 3. При включении освещения с выключателя происходит перезапуск таймера отключения, если выключатель автоматики on
и датчик движения off
.
- id: 'turn_on_light' alias: Light turn on trigger: - platform: state entity_id: switch.0x002_switch to: 'on' condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.0x001_occupancy state: 'off' action: - service: timer.cancel entity_id: timer.light_turn_off data: {} - service: timer.start entity_id: timer.light_turn_off data: {}
Действие 4. При отключении освещения с выключателя если был запущен таймер отключения, то он отменяется.
- id: 'turn_off_light' alias: Light turn off trigger: - platform: state entity_id: switch.0x002_switch to: 'off' condition: - condition: state entity_id: timer.light_turn_off state: active action: - service: timer.cancel entity_id: timer.light_turn_off data: {}
Действие 5. При обнаружении движения включается освещение, если выключатель автоматики on
и освещение на данный момент выключено.
- id: 'turn_on_light_by_motion' alias: Light turn on by motion sensor trigger: - platform: state entity_id: binary_sensor.0x001_occupancy to: 'on' condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'off' action: - service: switch.turn_on entity_id: switch.0x002_switch data: {}
Действие 6. При обнаружении движения происходит отмена таймера отключения при его активном текущем состоянии.
- id: 'cancel_timer_by_motion' alias: Timer cancel by motion sensor trigger: - platform: state entity_id: binary_sensor.0x001_occupancy to: 'on' condition: - condition: state entity_id: timer.light_turn_off state: active action: - service: timer.cancel entity_id: timer.light_turn_off data: {}
Действие 7. При окончании обнаружения движения датчиком, включенном выключателе автоматики и включенном свете происходит запуск таймера на отключения освещения.
- id: 'start_timer_by_motion' alias: Timer start by motion sensor trigger: - platform: state entity_id: binary_sensor.0x001_occupancy to: 'off' condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - service: timer.start entity_id: timer.light_turn_off data: {}
Действие 8. При окончании отсчета таймера происходит отключение освещения, если выключатель автоматики on
, датчик движения off
и освещение включено.
- id: 'turn_off_light_by_timer' alias: Timer finished trigger: - platform: event event_type: timer.finished event_data: entity_id: timer.light_turn_off condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.0x001_occupancy state: 'off' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - service: switch.turn_off entity_id: switch.0x002_switch data: {}
Пакеты
Для удобства управления наборы вспомогательных компонентов и автоматизаций, объединенных общим сценарием можно записать в отдельный файл с расширением yaml
. Для подключения данных из этого файла его необходимо положить в папку .homeassistant/packages/
и в configuration.yaml
прописать:
homeassistant: packages: !include_dir_named packages
Для примера выше создадим файл .homeassistant/packages/room_auto_light.yaml
с сценарием управления света в помещении с содержанием:
# Переключатель автоматического вкл/откл. освещения в помещении input_boolean: auto_light_on_off: name: Auto light on # Таймер отключения освещения в помещении (180 секунд) timer: light_turn_off: name: Light turn off timer duration: 180 # Автоматизации automation: # Включение автоматического освещения - id: 'turn_on_auto_light' alias: Auto light on trigger: - platform: state entity_id: input_boolean.auto_light_on_off to: 'on' condition: ... # Отключение автоматического освещения - id: 'turn_off_auto_light' alias: Auto light off trigger: - platform: state entity_id: input_boolean.auto_light_on_off to: 'off' condition: ... ... ...
После перезагрузки Home Assistant дополнительные компоненты и автоматизации будут доступны в системе.