В этой части расскажу вариант «простой» интеграции кондиционера (а вообще, практически любого устройства, управляемого через ИК) с помощью WiFi<=>IR-шлюза.
Для того, чтобы было интереснее — выбрал популярный шлюз (кстати, Яндекс для своей Алисы как раз его и использует). Купить такой можно на Али, цена что-то около 1200 рублей (у Яндекса — дороже).
Устройство довольно компактное (легко умещается в ладони), из видимых органов есть один маленький ненаваязчивый синий светодиод и кнопка для сопряжения. Все остальное скрыто за черным ИК-прозрачным корпусом. В качестве источника питания можно использовать любой доступный USB-порт (БП, комп и т.п.). Шлюз подключается к нему с помощью microUSB-кабеля (из комплекта поставки или любым удобным).
Особенность этого устройства — он построен на «хорошо известном в узких кругах» esp8266, а это значит, что достаточно несложно его можно «приручить».
Прежде чем перешивать устройство, попробовал использовать его в штатном режиме: установил приложение TuyaSmart на телефон (есть версии как под Android, так и под iPhone), а дальше все просто:
Вот и все. После этого на телефоне появляется примерно такой пульт управления:
С его помощью можно управлять основными базовыми функциями:
В общем, уже можно пользоваться для удаленного управления, но где же тут «умный дом» и интеграция?
Поскольку это простой путь — с умным домом тут плохо, а вот с интеграцией — несколько лучше.
Сначала «ложка дегтя» — интеграции с Apple HomeKit нет, так что Siri — пока «недоступна», а вот с другими конкурирующими платформами все гораздо веселее:
В обоих случаях русский язык не поддерживается, но голосом управляется легко и просто. Я нашел следующие команды:
— Alexa, turn on Mr.White
— Hey, Google, set Mr.White to 24 degrees
— Alexa, turn off Mr.White
Напомню, голосовое управление у меня реализовано с помощью Amazon Echo Dot и Google Home Mini — оба устройства идентично отрабатывают команды.
Кстати, какими голосовыми командами можно управлять режимом работы и скоростью воздушного потока — я не нашел. Если кто-то подскажет — буду благодарен.
А дальше была сделана «полу-автоматическая» интеграция с УД: при повышении температуры в комнате выше пороговой — контроллер УД отправляет сообщение с требованием включить кондиционер, а я, удаленно, с помощью приложения TuyaSmart — включал кондиционер в нужном режиме.
Решение «так себе», конечно, но уже хоть как-то можно пользоваться.
Но ведь это не наш путь — двигаемся дальше:
Есть вариант прошить устройство и без вскрытия, способ описан вот тут.
Мне этот способ показался излишне сложным (столько телодвижений, когда для прошивки требуется всего-то 4 проводка подпаять), да и интересно было заглянуть внутрь.
К сожалению, я в процессе увлекся и забыл сфотографировать, поэтому покажу чужие фотографии:
Больше фото можно посмотреть тут.
На фото хорошо видно, что используется модуль TYWE3S (даташит на который находится очень просто в Google).
Теперь надо прошить модуль. Оригинальная прошивка затирается и восстановить ее невозможно.
Прошивка делается очень просто: берем среду Arduino (или Atom, или что-то еще — выбирайте на свой вкус). Загружаем в среду разработки скетч с прошивкой Tasmota. Дальше подключаем на модуле TYWE3S RX, TX, GND, VCC от любого usb-serial (не перепутайте — нужно 3.3В питания и соответствующие уровни сигналов, если будет 5В — придется заказывать новый шлюз). Перед подачей питания не забываем замкнуть (любым удобным способом) GPIO0 модуля на землю, тем самым переводя модуль в режим прошивки. Прошиваем.
Конфигурировать прошивку не требуется — все можно оставить в коде «как есть», нам просто нужно «приручить» модуль.
Если все сделано верно (после отключения проводов для прошивки, конечно), включаем шлюз. На телефоне или компьютере включаем поиск WiFi-сетей — должна появиться новая сеть с именем sonoff-xxxx (где xxxx — цифры), которую поднимает наше устройство.
Подключаемся к этой сети и заходим по адресу: 192.168.4.1 — это уже веб-интерфейс нашего шлюза.
Для начала в настройках шлюза укажем домашнюю WiFi-сеть и пароль к ней (устройство перезагрузится и подключится к домашней сети). Дальше уже все действия проще делать в ней. Естественно, надо любым удобным образом узнать, какой адрес получил шлюз в домашней сети.
Заходим на страницу с релизами прошивки Tasmota. Скачиваем два файла — sonoff-minimal.bin и sonoff-ir.bin
Теперь с помощью веб-интерфейса шлюза делаем обновление прошивки в два этапа — сначала шьем «минимальную» версию, а вторым шагом — sonoff-ir.
После всех этих нехитрых действий у нас в руках уже будет модуль с актуальной версией прошивки, осталось его только сконфигурировать следующим образом:
Собственно, это минимальная необходимая конфигурация — в описываемом примере будем взаимодействовать с модулем с помощью GET-запросов (хотя можно и через MQTT).
Проверить работу модуля, а заодно и узнать кое-что полезное можно в его консоли (ссылка на нее доступна с заглавной страницы веб-интерфейса). Открываем консоль и смотрим, как «живет» модуль.
Теперь уже можно начать изучать интерфейс управления кондиционером. Для этого берем в руки штатный пульт от кондиционера и нажимаем кнопку включения. Если все хорошо, то в консоли появится строчка типа:
Модуль принял и «разобрал» ИК-команду от пульта ДУ. Т.е. по консоли сразу понятно, какой протокол (в моем случае это COOLIX) используется штатным пультом кондиционера и какие параметры закодированы в посылке.
Отлично, теперь можно уже управлять кондиционером. Чтобы это сделать осмысленно, лучше ознакомиться с вот этим описанием команд.
Для проверки через консоль шлюза отправим, например, вот такую команду (все команды привожу для своего кондиционера, у вас может быть другой протокол управления):
Чудесным образом при этом кондиционер включается и сразу в требуемом режиме. Miracle!
Выключаем кондиционер следующей командой:
В общем, модуль подготовлен и проверен.
Вперед к интеграции!
В качестве основной системы автоматизации у меня используется Domoticz, поэтому «дружить» будем именно эту систему.
План работ следующий:
При создании устройств требуется задать их имена. Я привожу свои, вы можете выбрать любые другие, только не забудьте потом скрипты поправить под них.
Создаем обычный выключатель (тип «Switch») с именем «HVAC». Этот выключатель будет использоваться для включения/выключения по одной кнопке.
Для выбора режимов работы кондиционера добавим виртуальный переключатель «HVAC-Mode» (тип «Selector Switch») со следующими характеристиками:
Обратите внимание, что тут я создал всего два режима — «обогрев» и «охлаждение». Хотя кондиционер еще имеет режим «Авто» и «Вентилятор», для меня они бесполезны — первый работает как-то странно и для домочадцев некомфортен, а второй — вообще никогда не был нужен. Если вы используете эти режимы — можете их просто добавить в селектор.
Аналогично создаем селектор «HVAC-FanSpeed»:
Теперь остается создать только термостат «HVAC-Temp» (тип устройства — «Thermostat Setpoint»).
Мне как-то ближе в Domoticz скрипты на Lua (Devices), поэтому делаю на том, что мне удобнее.
Для определенности — IP-адрес ИК-шлюза в моей домашней сети 10.40.20.254 и именно этот адрес фигурирует в одном из скриптов, вам надо будет исправить его на адрес своего шлюза.
Создадим три следующих скрипта.
HVACauto:
Этот скрипт в сравнивает заданную температуру кондиционера и температуру с датчика «Комната» для того, чтобы выбрать правильный режим — «охлаждение» или «нагрев».
HVACpower:
Этот скрипт следит за состоянием «общего» выключателя кондиционера и выбирает нужный режим работы при включении или отключает кондиционер.
И последний скрипт HVACmain:
А вот этот скрипт — самый главный. Он формирует правильные команды с нужными параметрами и реализует GET-запрос к шлюзу. Не забудьте поправить в нем IP-адрес своего шлюза.
Собственно, на этом все. Можно переходить интерфейсе Domoticz на соответствующие вкладки и «нажимать кнопочки» управления кондиционером. Если все сделано правильно — климатическая установка будет управляться так, как вам требуется.
У такого варианта управления через ИК-шлюз есть один недостаток — отсутствие обратной связи. Т.е. если кто-то воспользуется штатным пультом, то статусы в Domoticz не изменятся и будут отображать уже неактуальную информацию.
В целом, это не очень мешает (особенно, если не пользоваться ИК-пультом, а использовать только возможности УД).
Можно, конечно, отслеживать с помощью ИК-шлюза, какие команды отправляются через ИК (эту информацию шлюз передает через MQTT) и еще немного попрограммировать, чтобы даже при использовании штатного пульта в системе УД устанавливались актуальные статусы и параметры.
Но пока на это у меня нет времени, да и особой необходимости тоже нет (проще «заглянуть» в систему видеонаблюдения и посмотреть, включен ли кондиционер).
Естественно, на этом мы не останавливаемся.
Как минимум, текущая реализация управления — уже гораздо функциональнее, чем вариант «для самых маленьких».
После «проброса» кондиционера в Domoticz — сделал и управление с помощью Siri:
После того, как появилась возможность управлять из системы УД (и особенно, голосом через Siri), необходимость в использовании штатного ИК-пульта пропала.
В ближайших планах написать «зимний» скрипт, который будет в отсутствие хозяев и при температуре «на улице» не ниже -10 для отопления дома использовать ресурсы кондиционера (он более энергоэффективен в этом режиме, чем электрические теплые полы, но менее комфортен), а при возвращении хозяев — снова переход на обогрев теплым полом.
Конечно же, будет и «летний» скрипт, который будет автоматически включать режим охлаждения и поддерживать заданную температуру дома.
Естественно, все возможные сценарии использования ограничиваются только фантазией. Не сдерживайте себя ;)
На текущий момент анонсированный WiFi-модуль для управления кондиционером так и не появился в продаже.
Если будет время (долгими зимними вечерами) — сделаю еще один подход к интерфейсному модулю кондиционера и постараюсь все-таки «отловить» внутренние команды кондиционера.
Так что… stay tuned!
Для того, чтобы было интереснее — выбрал популярный шлюз (кстати, Яндекс для своей Алисы как раз его и использует). Купить такой можно на Али, цена что-то около 1200 рублей (у Яндекса — дороже).
Устройство довольно компактное (легко умещается в ладони), из видимых органов есть один маленький ненаваязчивый синий светодиод и кнопка для сопряжения. Все остальное скрыто за черным ИК-прозрачным корпусом. В качестве источника питания можно использовать любой доступный USB-порт (БП, комп и т.п.). Шлюз подключается к нему с помощью microUSB-кабеля (из комплекта поставки или любым удобным).
Особенность этого устройства — он построен на «хорошо известном в узких кругах» esp8266, а это значит, что достаточно несложно его можно «приручить».
Вариант «для самых маленьких»
Прежде чем перешивать устройство, попробовал использовать его в штатном режиме: установил приложение TuyaSmart на телефон (есть версии как под Android, так и под iPhone), а дальше все просто:
- регистрируемся в приложении,
- проходим небольшого мастера по подключению нового устройства (для этого шлюз надо подключить к питанию и ввести его в режим «сопряжения» с помощью единственной кнопки на нем,
- после появления шлюза в приложении, создаем новый «пульт управления» — еще один небольшой мастер, где выбирается тип устройства (в моем случае — Кондиционер), дальше выбирается производитель (Electrolux-а в приложении нет, но замечательно заработало при выборе Midea). Тут же придумываем «имя» нового пульта (я выбрал «Mr.White»).
Вот и все. После этого на телефоне появляется примерно такой пульт управления:
С его помощью можно управлять основными базовыми функциями:
- включение/выключение,
- установка температуры,
- выбор режима работы («Авто», «Охлаждение», «Обогрев», «Вентилятор»),
- выбор скорости вентилятора («Авто», «Низкий», «Средний», «Высокий»).
В общем, уже можно пользоваться для удаленного управления, но где же тут «умный дом» и интеграция?
Поскольку это простой путь — с умным домом тут плохо, а вот с интеграцией — несколько лучше.
Сначала «ложка дегтя» — интеграции с Apple HomeKit нет, так что Siri — пока «недоступна», а вот с другими конкурирующими платформами все гораздо веселее:
- Для Amazon Alexa — есть скилл Tuya Smart. Достаточно его активировать и указать в нем свой аккаунт, который завели при регистрации в приложении — появляется возможность голосового управления кондиционером.
- Аналогичным образом можно подключить Tuya Smart и к Google Ассистенту.
В обоих случаях русский язык не поддерживается, но голосом управляется легко и просто. Я нашел следующие команды:
— Alexa, turn on Mr.White
— Hey, Google, set Mr.White to 24 degrees
— Alexa, turn off Mr.White
Напомню, голосовое управление у меня реализовано с помощью Amazon Echo Dot и Google Home Mini — оба устройства идентично отрабатывают команды.
Кстати, какими голосовыми командами можно управлять режимом работы и скоростью воздушного потока — я не нашел. Если кто-то подскажет — буду благодарен.
А дальше была сделана «полу-автоматическая» интеграция с УД: при повышении температуры в комнате выше пороговой — контроллер УД отправляет сообщение с требованием включить кондиционер, а я, удаленно, с помощью приложения TuyaSmart — включал кондиционер в нужном режиме.
Решение «так себе», конечно, но уже хоть как-то можно пользоваться.
Но ведь это не наш путь — двигаемся дальше:
Путь джедая
Вскрытие и подготовка
Есть вариант прошить устройство и без вскрытия, способ описан вот тут.
Мне этот способ показался излишне сложным (столько телодвижений, когда для прошивки требуется всего-то 4 проводка подпаять), да и интересно было заглянуть внутрь.
К сожалению, я в процессе увлекся и забыл сфотографировать, поэтому покажу чужие фотографии:
Больше фото можно посмотреть тут.
На фото хорошо видно, что используется модуль TYWE3S (даташит на который находится очень просто в Google).
Теперь надо прошить модуль. Оригинальная прошивка затирается и восстановить ее невозможно.
Прошивка делается очень просто: берем среду Arduino (или Atom, или что-то еще — выбирайте на свой вкус). Загружаем в среду разработки скетч с прошивкой Tasmota. Дальше подключаем на модуле TYWE3S RX, TX, GND, VCC от любого usb-serial (не перепутайте — нужно 3.3В питания и соответствующие уровни сигналов, если будет 5В — придется заказывать новый шлюз). Перед подачей питания не забываем замкнуть (любым удобным способом) GPIO0 модуля на землю, тем самым переводя модуль в режим прошивки. Прошиваем.
Конфигурировать прошивку не требуется — все можно оставить в коде «как есть», нам просто нужно «приручить» модуль.
Если все сделано верно (после отключения проводов для прошивки, конечно), включаем шлюз. На телефоне или компьютере включаем поиск WiFi-сетей — должна появиться новая сеть с именем sonoff-xxxx (где xxxx — цифры), которую поднимает наше устройство.
Подключаемся к этой сети и заходим по адресу: 192.168.4.1 — это уже веб-интерфейс нашего шлюза.
Для начала в настройках шлюза укажем домашнюю WiFi-сеть и пароль к ней (устройство перезагрузится и подключится к домашней сети). Дальше уже все действия проще делать в ней. Естественно, надо любым удобным образом узнать, какой адрес получил шлюз в домашней сети.
Заходим на страницу с релизами прошивки Tasmota. Скачиваем два файла — sonoff-minimal.bin и sonoff-ir.bin
Теперь с помощью веб-интерфейса шлюза делаем обновление прошивки в два этапа — сначала шьем «минимальную» версию, а вторым шагом — sonoff-ir.
После всех этих нехитрых действий у нас в руках уже будет модуль с актуальной версией прошивки, осталось его только сконфигурировать следующим образом:
Собственно, это минимальная необходимая конфигурация — в описываемом примере будем взаимодействовать с модулем с помощью GET-запросов (хотя можно и через MQTT).
Проверить работу модуля, а заодно и узнать кое-что полезное можно в его консоли (ссылка на нее доступна с заглавной страницы веб-интерфейса). Открываем консоль и смотрим, как «живет» модуль.
Теперь уже можно начать изучать интерфейс управления кондиционером. Для этого берем в руки штатный пульт от кондиционера и нажимаем кнопку включения. Если все хорошо, то в консоли появится строчка типа:
19:24:09 MQT: tele/IRbridge/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB29F70","DataLSB":"0x4DF90E","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"on","Mode":"cool","Celsius":"on","Temp":22,"FanSpeed":"min","SwingV":"off","SwingH":"off","Quiet":"off","Turbo":"off","Econo":"off","Light":"on","Filter":"off","Clean":"on","Beep":"off","Sleep":-1}}}
Модуль принял и «разобрал» ИК-команду от пульта ДУ. Т.е. по консоли сразу понятно, какой протокол (в моем случае это COOLIX) используется штатным пультом кондиционера и какие параметры закодированы в посылке.
Отлично, теперь можно уже управлять кондиционером. Чтобы это сделать осмысленно, лучше ознакомиться с вот этим описанием команд.
Для проверки через консоль шлюза отправим, например, вот такую команду (все команды привожу для своего кондиционера, у вас может быть другой протокол управления):
IRhvac{"Protocol":"COOLIX","Power":"On","Mode":"Cool","FanSpeed":"min","Temp":22}
Чудесным образом при этом кондиционер включается и сразу в требуемом режиме. Miracle!
Выключаем кондиционер следующей командой:
IRhvac{"Protocol":"COOLIX","Power":"Off"}
В общем, модуль подготовлен и проверен.
Вперед к интеграции!
Кондиционер + Domoticz = дружба навсегда!
В качестве основной системы автоматизации у меня используется Domoticz, поэтому «дружить» будем именно эту систему.
План работ следующий:
- Создать несколько виртуальных устройств: выключатель, два селектора (для выбора режимов и скорости воздушного потока) и термостат.
- Добавить несколько скриптов, которые по действиям с виртуальными устройствами будут отправлять команды шлюзу.
- Проверить, что все управляется как надо.
Виртуальные устройства
При создании устройств требуется задать их имена. Я привожу свои, вы можете выбрать любые другие, только не забудьте потом скрипты поправить под них.
Создаем обычный выключатель (тип «Switch») с именем «HVAC». Этот выключатель будет использоваться для включения/выключения по одной кнопке.
Для выбора режимов работы кондиционера добавим виртуальный переключатель «HVAC-Mode» (тип «Selector Switch») со следующими характеристиками:
Обратите внимание, что тут я создал всего два режима — «обогрев» и «охлаждение». Хотя кондиционер еще имеет режим «Авто» и «Вентилятор», для меня они бесполезны — первый работает как-то странно и для домочадцев некомфортен, а второй — вообще никогда не был нужен. Если вы используете эти режимы — можете их просто добавить в селектор.
Аналогично создаем селектор «HVAC-FanSpeed»:
Теперь остается создать только термостат «HVAC-Temp» (тип устройства — «Thermostat Setpoint»).
Скрипты
Мне как-то ближе в Domoticz скрипты на Lua (Devices), поэтому делаю на том, что мне удобнее.
Для определенности — IP-адрес ИК-шлюза в моей домашней сети 10.40.20.254 и именно этот адрес фигурирует в одном из скриптов, вам надо будет исправить его на адрес своего шлюза.
Создадим три следующих скрипта.
HVACauto:
commandArray = {}
for deviceName,deviceValue in pairs(devicechanged) do
if (deviceName=='HVAC-Temp') then
if (tonumber(deviceValue) < tonumber(otherdevices_temperature['Комната'])) then
commandArray['HVAC-Mode'] = 'Set Level: 10' --"Cool"
else
commandArray['HVAC-Mode'] = 'Set Level: 20' --"Heat"
end
commandArray['HVAC'] = "On"
end
end
return commandArray
Этот скрипт в сравнивает заданную температуру кондиционера и температуру с датчика «Комната» для того, чтобы выбрать правильный режим — «охлаждение» или «нагрев».
HVACpower:
commandArray = {}
for deviceName,deviceValue in pairs(devicechanged) do
if (deviceName == 'HVAC') then
if deviceValue == "Off" then
print('надо выключить кондиционер')
commandArray['HVAC-Mode'] = 'Set Level: 0' --"Off"
else
if (tonumber(otherdevices['HVAC-Temp']) < tonumber(otherdevices_temperature['Комната'])) then
commandArray['HVAC-Mode'] = 'Set Level: 10' --"Cool"
else
commandArray['HVAC-Mode'] = 'Set Level: 20' --"Heat"
end
end
end
end
return commandArray
Этот скрипт следит за состоянием «общего» выключателя кондиционера и выбирает нужный режим работы при включении или отключает кондиционер.
И последний скрипт HVACmain:
commandArray = {}
local cmnd
for deviceName,deviceValue in pairs(devicechanged) do
if (deviceName=='HVAC-Mode' or deviceName=='HVAC-FanSpeed' or deviceName=='HVAC-Temp') then
if (otherdevices['HVAC-Mode']=='Off') then
cmnd = 'http://10.40.20.254/cm?cmnd=IRhvac{"Protocol":"COOLIX","Power":"Off"}'
else
cmnd = 'http://10.40.20.254/cm?cmnd=IRhvac{"Protocol":"COOLIX","Power":"On","Mode":"'..otherdevices['HVAC-Mode']..'","FanSpeed":"'..otherdevices['HVAC-FanSpeed']..'","Temp":'..otherdevices['HVAC-Temp']..'}'
end
print(cmnd)
os.execute("wget '"..cmnd.."'")
end
end
return commandArray
А вот этот скрипт — самый главный. Он формирует правильные команды с нужными параметрами и реализует GET-запрос к шлюзу. Не забудьте поправить в нем IP-адрес своего шлюза.
Собственно, на этом все. Можно переходить интерфейсе Domoticz на соответствующие вкладки и «нажимать кнопочки» управления кондиционером. Если все сделано правильно — климатическая установка будет управляться так, как вам требуется.
Особенности
У такого варианта управления через ИК-шлюз есть один недостаток — отсутствие обратной связи. Т.е. если кто-то воспользуется штатным пультом, то статусы в Domoticz не изменятся и будут отображать уже неактуальную информацию.
В целом, это не очень мешает (особенно, если не пользоваться ИК-пультом, а использовать только возможности УД).
Можно, конечно, отслеживать с помощью ИК-шлюза, какие команды отправляются через ИК (эту информацию шлюз передает через MQTT) и еще немного попрограммировать, чтобы даже при использовании штатного пульта в системе УД устанавливались актуальные статусы и параметры.
Но пока на это у меня нет времени, да и особой необходимости тоже нет (проще «заглянуть» в систему видеонаблюдения и посмотреть, включен ли кондиционер).
А дальше?
Естественно, на этом мы не останавливаемся.
Как минимум, текущая реализация управления — уже гораздо функциональнее, чем вариант «для самых маленьких».
После «проброса» кондиционера в Domoticz — сделал и управление с помощью Siri:
После того, как появилась возможность управлять из системы УД (и особенно, голосом через Siri), необходимость в использовании штатного ИК-пульта пропала.
В ближайших планах написать «зимний» скрипт, который будет в отсутствие хозяев и при температуре «на улице» не ниже -10 для отопления дома использовать ресурсы кондиционера (он более энергоэффективен в этом режиме, чем электрические теплые полы, но менее комфортен), а при возвращении хозяев — снова переход на обогрев теплым полом.
Конечно же, будет и «летний» скрипт, который будет автоматически включать режим охлаждения и поддерживать заданную температуру дома.
Естественно, все возможные сценарии использования ограничиваются только фантазией. Не сдерживайте себя ;)
Часть III?
На текущий момент анонсированный WiFi-модуль для управления кондиционером так и не появился в продаже.
Если будет время (долгими зимними вечерами) — сделаю еще один подход к интерфейсному модулю кондиционера и постараюсь все-таки «отловить» внутренние команды кондиционера.
Так что… stay tuned!