Stupid House

Автоматизация - Управление обогревом помещения в 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 выводим меню управления обогревом.

панель управления обогревом помещения в Home Assistant

Итак, у нас есть умная розетка, датчик температуры и датчик открытия. Создаем автоматизации. Для понимания: 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

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

Автор: muxa, 22.10.2020
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии