Автоматизация - Управление обогревом помещения в Home Assistant
Наступила осень, на улице похолодало, а отопление включили ещё не везде и тем, кому повезло меньше приходится отапливать помещение при помощи электрических бытовых обогревателей. Включив такой обогреватель часто про него забывают, вспоминая о нем только когда становится совсем жарко после чего открываются окна для проветривания. Такой подход не самым положительным образом сказывается на счете за электричество. Имея дома умную розетку и датчик температуры процесс обогрева можно автоматизировать, нагревая помещение до комфортной температуры, обогреватель при этом может быть любой, главное, чтобы нагрузка была не больше допустимой. Дополнительным бонусом такого подхода может выступать удаленный контроль, например, подходя к дому можно заранее включить обогрев.
Задача
Автоматизировать обогрев помещения при падении температуры ниже заданной. Нижний порог включения на обогрев может выставляться вручную, верхний порог отключения обогрева +3 градуса от температуры включения. Что бы не обогревать улицу, предусмотреть отключение обогрева при открытии окна. Возможность отключения автоматического режима обогрева помещения.
Необходимые компоненты
- Датчик температуры. Например, Xiaomi MiJia temperature & humidity sensor (WSDCGQ01LM)
- Датчик открытия окна окна. Например, Xiaomi MiJia door & window contact sensor (MCCGQ01LM)
- Умная розетка. Например, Xiaomi Aqara socket Zigbee (QBCZ11LM)
- Система автоматизации. Home Assistant
Решение для Home Assistant
Для включения/отключения режима автоматического обогрева и выставления температуры включения обогрева нам понадобятся два дополнительных вспомогательных компонента (хелпера):
- Выключатель типа
Toggle
для включения/отключения режима автоматического обогрева - Ползунок типа
Number
для выставления температуры включения со значениями от 10 до 25 градусов и шагом 1
В меню Configuration -> Helpers -> +
добавляем хелперы, но я рекомендую каждый сценарий описывать в отдельном файле. Создадим файл room_heating.yaml
в папке .homeassistant/packages/
, в котором будет описан сценарий обогрева комнаты. Подробно про пакеты можно почитать на сайте Home Assistant.
$ sudo touch /home/homeassistant/.homeassistant/packages/room_heating.yaml
Добавляем хелперы в файл:
# Выключатель автоматического обогрева input_boolean: room_auto_heat: name: Автоматический обогрев комнаты icon: mdi:power # Температура включения обогрева input_number: room_heat_temperature: name: Температура включения обогрева icon: mdi:thermostat-box mode: slider min: 10 max: 25 step: 1
На панель Lovelace
выводим меню управления обогревом.
Итак, у нас есть умная розетка, датчик температуры и датчик открытия. Создаем автоматизации. Для понимания: xiaomi_socket_room_heater - розетка, xiaomi_temperature_room - датчик температуры, xiaomi_window_sensor_room - датчик открытия, room_auto_heat - выключатель автоматического обогрева, room_heat_temperature - выставленная температура, ниже которой включается обогрев.
Автоматизация номер один. Срабатывание автоматизации происходит при включении автоматического обогрева помещения, розетка включается при следующих условиях: температура на датчике ниже заданной температуры включения обогрева, датчик открытия в состоянии OFF и розетка в состоянии OFF. Добавляем автоматизацию в файл room_heating.yaml
.
# Автоматизация automation: # Включение автоматического обогрева помещения - id: 'room_heating_enable_auto_heat' alias: Room - Heating - Enable auto heating trigger: - entity_id: input_boolean.room_auto_heat platform: state to: 'on' condition: - condition: template value_template: '{{ (states(''sensor.xiaomi_temperature_room_temperature'')|float) < (states(''input_number.room_heat_temperature'')|float) }}' - condition: and conditions: - condition: state entity_id: binary_sensor.xiaomi_window_sensor_room_contact state: 'off' - condition: and conditions: - condition: state entity_id: switch.xiaomi_socket_room_heater_switch state: 'off' action: - service: switch.turn_on entity_id: switch.xiaomi_socket_room_heater_switch data: {} mode: single
Добавляем автоматизацию включающую розетку при падении температуры ниже заданной. Включение обогрева произойдет только в том случае если включен автоматический обогрев, датчик открытия в состоянии OFF и розетка в состоянии OFF.
# Включение обогрева при уменьшении температуры ниже заданной - id: 'room_heating_enable_when_temperature_decreases' alias: Room - Heating - Turn on heating when the temperature decreases trigger: - platform: template value_template: '{{ (states(''sensor.xiaomi_temperature_room_temperature'')|float) < (states(''input_number.room_heat_temperature'')|float) }}' condition: - condition: state entity_id: input_boolean.room_auto_heat state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.xiaomi_window_sensor_room_contact state: 'off' - condition: and conditions: - condition: state entity_id: switch.xiaomi_socket_room_heater_switch state: 'off' action: - service: switch.turn_on entity_id: switch.xiaomi_socket_room_heater_switch data: {} mode: single
Автоматизация отключающая обогрев в помещении при превышении температуры включения на +3 градуса. Розетка отключается только если она находится в состоянии ON.
# Отключение обогрева при превышении температуры на +3 градуса от заданной - id: 'room_heating_disable_when_temperature_excess' alias: Room - Heating - Turning off of heating at excess of temperature trigger: - platform: template value_template: '{{ (states(''sensor.xiaomi_temperature_room_temperature'')|float) > (float(states(''input_number.room_heat_temperature'')|float) + 3) }}' condition: - condition: state entity_id: switch.xiaomi_socket_room_heater_switch state: 'on' action: - service: switch.turn_off entity_id: switch.xiaomi_socket_room_heater_switch data: {} mode: single
Автоматизация отключающая обогрев в помещении при открытии окна, не надо греть улицу :). Розетка отключается только если она находится в состоянии ON.
# Отключение обогрева при открытии окна в помещении - id: 'room_heating_disable_when_window_open' alias: Room - Heating - Turning off heating when opening a window trigger: - platform: state entity_id: binary_sensor.xiaomi_window_sensor_room_contact to: 'on' condition: - condition: state entity_id: switch.xiaomi_socket_room_heater_switch state: 'on' action: - service: switch.turn_off entity_id: switch.xiaomi_socket_room_heater_switch data: {} mode: single
Последняя автоматизация, каждые 10 минут выполняется проверка превышения температуры и по необходимости отключение.
# Таймер 10 мин - Отключение обогрева при превышении температуры - id: 'room_heating_disable_by_timer_when_temperature_excess' alias: Room - Heating - 10 min timer - Turning off of heating at excess of temperature trigger: - platform: time_pattern minutes: /10 condition: - condition: template value_template: '{{ (states(''sensor.xiaomi_temperature_room_temperature'')|float) > (float(states(''input_number.room_heat_temperature'')|float) + 3) }}' - condition: and conditions: - condition: state entity_id: switch.xiaomi_socket_room_heater_switch state: 'on' action: - service: switch.turn_off entity_id: switch.xiaomi_socket_room_heater_switch data: {} mode: single
Последняя автоматизация может показаться излишней, но периодический контроль за включенным оборудованием не помешает.