Управление котлом Protherm Lynx из Home Assistant

Приобрел я год назад квартиру и захотелось мне в ней сделать систему умный дом. Начал курить мануалы и смотреть видосы. Т.к. ремонт уже был сделан, то выбор пал на беспроводную систему Zigbee. Можно было сделать и на wifi датчиках, но тогда они конектились бы к одному роутеру и самые дальние из них теряли связь. Технология Zigbee решает эту проблему путём передачи сигнала через другие устройства.

Т.к. лёгких путей я не искал и готовые zigbee шлюзы не будоражили мой мозг, выбор пал мой на связку mini PC + стик SONOFF ZB Dongle-P. Заказал их у китайцев. Подождал месяц. И тут понеслось…

Приближался отопительный сезон. Для контроля температуры в квартире, первым делом решил автоматизировать котел Protherm Lynx. Начал изучать инструкцию на котел и оказалось, что к нему можно подключить термостат. Принцип работы простой. Термостат замыкает контакты — котел включается. Размыкает — котел выключается. Таким образом подключив к котлу zigbee реле мы можем управлять температурой в квартире. Снял кожух с котла и нашел заветную колодку.

Порадовало, что на этой колодке было питание 24 вольта. Подходящее реле нашлось быстро. Его я подключил по схеме.

Параллельно реле подключил еще термостат для ручного управления. Следующий этап — перевод котла в режим управления через термостат. Все делал по этому видео.

На у а дальше начал создавать автоматизации…. Первым делом создал сенсор в templates показывающий среднюю температуру в квартире.

      - name: "Средняя температура"
        unit_of_measurement: "°C"
        state: >
            {{
            ((
                (states('sensor.0xa4c1380235cf425f_temperature') | float) +
                (states('sensor.0xa4c1380235cef75e_temperature') | float) +
                (states('sensor.0xa4c1380235ae34ff_temperature') | float) 
            )/3) | round (2)
            }}
        icon: >
            mdi:temperature-celsius

В packages добавил следующий код.

protherm_termostat:
    input_number:
        hysteresis:
            name: Гистерезис нагрева котла
            min: 0.5
            max: 2
            step: 0.5
        heat_off:
            name: Темепратура выключения котла
            min: 0
            max: 30
            step: 0.5
    input_boolean:
        manual_heat:
            name: Ручное включение отоплением
            icon: mdi:hand-back-left

В templates создал бинарный сенсор.

      - name: "Отопление on"
        state: >
              {{  
                (states('sensor.sredniaia_temperatura') | float <= ((states('input_number.heat_off') | float) - (states('input_number.hysteresis') | float)))  
                and is_state('input_boolean.manual_heat', 'off')
              }}

      - name: "Отопление off"
        state: >
              {{ 
                (states('sensor.sredniaia_temperatura') | float >= (states('input_number.heat_off') | float))   
                and is_state('input_boolean.manual_heat', 'off')    
              }}

Ну и сама автоматизация.

- alias: Включить котел
  trigger:
  - platform: state
    entity_id:
    - binary_sensor.otoplenie_on
    to: 'on'
  condition:
  - condition: state
    entity_id: switch.0x00124b00246f2949
    state: 'off'
  action:
  - service: switch.turn_on
    data: 
      entity_id: switch.0x00124b00246f2949
  mode: single
  
- alias: Выключить котел
  trigger:
  - platform: state
    entity_id:
    - binary_sensor.otoplenie_off
    to: 'on'
  condition:
  - condition: state
    entity_id: switch.0x00124b00246f2949
    state: 'on'
  action:
  - service: switch.turn_off
    data: 
      entity_id: switch.0x00124b00246f2949
  mode: single

Добавил карточку в Обзор. Получилось как-то так.

Теперь сижу довольный с телефона управляю отоплением.

контакт