Добрый день, уважаемые читатели. Подходит к концу потихоньку летний сезон, и я, спустя почти год, наконец могу описать свое взаимодействие с термостатом Nest в полной мере, как в холодный период, так и в теплый. Сразу оговорюсь, что я живу в квартире с индивидуальным газовым поквартирным отоплением, поэтому реализовать управление газовым котлом мне было проще. Такой вариант для жителей с централизованным отоплением, наверное, не совсем подойдет.
Во время этой интеграции были использованы следующие компоненты:
- Американская версия термостата Nest.
- Контроллер Wirenboard 6. ("SPRUTDELIVERY" промокод на бесплатную доставку в магазине https://wirenboard.com/)
- Модуль Wirenboard WBIO-DI-WD-14 для получения сигналов с термостата.
- Реле Wirenboard WB-MR6C для управления сухими контактами котла (или любое другое реле).
- Контроллер LOOK.in Remote для управления кондиционером. ("sprutai" - промокод на скидку 7% в магазине https://look-in.club/)
И еще несколько простых устройств, вроде канального вентилятора для притока свежего воздуха и понижающего трансформатора до 24V переменного тока для питания самого термостата.
Схема была собрана практически на коленке в силу того, что живу я пока на съемной квартире, поэтому просьба сильно не пугаться некоторым фото, которые могут выглядеть колхозно или недоделано. В своей собственной квартире я все сделаю по уму и обязательно поделюсь процессом переноса схемы.
Получаем нужную информацию с Nest
После правильного подключения питания термостата (информацию о подключении можно найти в Инструкции), мы получаем сигнал в 24 вольта переменного тока между питающим проводом и управляющим.Схему подключения и маркировку выходов можно посмотреть как в мобильном приложении, так и в самом термостате.
Для получения сигнала с термостата мы и будем использовать модуль WBIO-DI-WD-14. Подаем на вход COM модуля сигнал с одного из проводов трансформатора, а ко входам 1-14 (в зависимости от количества термостатов) подключаем провода с Неста.
Для получения состояний датчиков, в HA были заведены четыре сенсора, по которым можно понять, надо включать тот или иной девайс или наоборот - выключить. Сенсоры были получены путем MQTT интеграции в HA, а основой сервера выступил установленный на Wirenboard образ Spruthub, который, не смотря на отличный свой софт, имеет возможность интеграции в сторонние системы управления умным домом.
binary_sensor: - platform: mqtt name: "Nest heater" state_topic: "/spruthub/accessories/85/10/ContactSensor/ContactSensorState" payload_on: "1" payload_off: "0" device_class: power - platform: mqtt name: "Nest Cooler" state_topic: "/spruthub/accessories/86/10/ContactSensor/ContactSensorState" payload_on: "1" payload_off: "0" device_class: power - platform: mqtt name: "Nest Humidity" state_topic: "/spruthub/accessories/87/10/ContactSensor/ContactSensorState" payload_on: "1" payload_off: "0" device_class: power - platform: mqtt name: "Nest Fan" state_topic: "/spruthub/accessories/88/10/ContactSensor/ContactSensorState" payload_on: "1" payload_off: "0" device_class: power
Управление отоплением
Самое простое и актуальное на данный момент, поэтому начнём, пожалуй, с него. Зима близко, как-никак :) В холодное время года обогреваюсь я газовым двухконтурным котлом, у которого есть возможность управления отопительным контуром с помощью сухих контактов. То есть все что от нас требуется - включать реле, когда необходимо поднимать температуру, и выключать, когда она опускается. Всю логику по времени включения и отключения я передал Несту.
В Home Assistant, соответственно, необходимо создать несколько устройтсв типа binary_sensor, которые будут сигнализировать о наличии напряжения на нужных контактах. Для полной работы добавляется пара вот таких автоматизаций:
#Включить котел если есть сигнал с неста - alias: Turn on heater trigger: platform: state entity_id: binary_sensor.nest_heater from: 'off' to: 'on' action: service: switch.turn_on entity_id: switch.heater_switch #Выключить котел если нет сигнала с неста - alias: Turn off heater trigger: platform: state entity_id: binary_sensor.nest_heater from: 'on' to: 'off' action: service: switch.turn_off entity_id: switch.heater_switch
Термостат обучается вашим установкам в течении недели, и за это время выстраивает алгоритм, при котором вам более нет необходимости вручную настраивать необходимую температуру в помещении.
Управление охлаждением
Тут получилось немного сложнее, и в идеале с этим лучше справится либо канальная вентиляция с возможностью охлаждения, либо самый простецкий и тупой кондиционер, в котором нет зачатков разума, ну или максимум, что есть - wifi или zigbee модуль.
У меня установлен инверторный кондиционер, который нет смысла дергать на включение/выключение после достижения необходимой температуры, поэтому мне пришлось использовать кастомный компонент для HA, который умеет интегрировать Nest, получать с него данные и передавать необходимые команды.
Второе обстоятельство, которое меня спасло - термостат стоит достаточно далеко от кондиционера, так что температура воздуха достаточно редко опускается ниже установленой, что не прерывает работу кондиционера.
Что я передаю при включении кондиционера нестом? Я слежу за сенсором включения кондиционера на Wirenboard, и при его активности в течение трех секунд (защита от дурака), передаю команду на включение:
#Включить охлаждение конциционера - alias: Set Nest cool to on trigger: platform: state entity_id: binary_sensor.nest_cooler from: 'off' to: 'on' for: seconds: 3 action: - service: climate.set_temperature data_template: entity_id: climate.aeronik temperature: '{}' hvac_mode: cool
А как быть, если хочется сделать похолоднее или потеплее? Для начала я создал отдельный датчик температуры, который показывает необходимую для достижения, установленую температуру охлаждения:
- platform: template sensors: temperature_nest_set: friendly_name: "Nest установленная температура" unit_of_measurement: "°C" value_template: "{{ state_attr('climate.living_room_thermostat', 'temperature') }}" device_class: temperature entity_id: climate.living_room_thermostat
При изменении этой температуры, у меня срабатывает следующая автоматизация:
#Синхронизация температуры охлаждения конциционера - alias: Sync Nest Cool temp trigger: platform: state entity_id: sensor.temperature_nest_set condition: condition: and conditions: - condition: state entity_id: climate.aeronik state: 'cool' - condition: state entity_id: binary_sensor.nest_cooler state: 'on' action: - service: climate.set_temperature data_template: entity_id: climate.aeronik temperature: '{}' hvac_mode: cool
Все необходимые команды передаются кондиционеру через интеграцию с LOOK.in Remote. Да, не так красиво, как в случае с отоплением, но это недостатки моего кондиционера.
Планы на будущее
Теперь надо пережить полный осенне-зимний период с этим термостатом и посмотреть, как он будет отрабатывать. В силу того, что установил я его в начале весны, я застал очень малую часть холодов и толком не оценил корректность работы системы. Nest умеет учитывать в своей логике температуру «за бортом», и в теории, это должно влиять на корректность работы системы, хоть и берётся она из прогноза погоды.
Также надо будет учесть момент с переводом термостата в режим экономии, при котором в помещении поддерживается температура «от x до y» градусов. Это важно для включения кондиционера, потому что передавать надо не заданную температуру, а ту, которая является верхним порогом.
Ну и напоследок, добавить возможность включать увлажнитель, тем более, что термостат умеет ее замерять и подавать сигнал на его включение.
Поправьте..если я правильно понял....
Правильно, у меня опечатка) поправлю