Дисклеймер: Данная статья не является рекламой бренда Artel, просто так уж вышло, что я его купил. ;) Кроме того, описанный ниже способ работает и с другими его OEM собратьями, коих довольно много.
Если вам лень читать всю статью, можно сразу перейти к технической сути, кликнув сюда.
Сложный выбор
Вряд-ли кто-то станет спорить с фактом, что кондиционер в “умном доме” является одним из ключевых элементов. Но какой кондиционер наиболее совместим с этим самым умным домом?
В идеале, я хотел купить изделие, которое прямо из коробки интегрируется с Home Assistant или, на худой конец, просто с mqtt. Но всё, что я находил в интернете, совершенно никак не относилось к ассортименту местного рынка.
В качестве компромисса, я стал искать то, что хотя бы как-то подключаться к Wi-Fi.
Лето было жарким, бюджет не велик и мой выбор пал на Artel Art-12HI. Благодаря таможенной политике нашей страны (удружили, блин), цена сего девайса была ощутимо ниже импортных конкурентов. В то же время, друг-кондиционерщик сказал, что это, практически, копия китайского Aux (и прочих его OEM клонов) и по начинке, в целом, критики не вызывает.
– Да и чёрт с ним, берём! Подумал я, и отправился за покупкой.
Первое знакомство
Кондиционер оказался и в правду, вполне достойным своей цены. Или, как минимум, мне достался удачно собранный экземпляр… В температурный режим выходит довольно быстро, особо противного шума при работе внутреннего блока – не замечено. Короче, проверив его основной функционал, я принялся изучать его “умную” часть. И вот тут меня ждал очень неприятный сюрприз!
В качестве “умного” модуля установлен какой-то OEM девайс от broadlink. Ранее, я пользовался “умным пультом” от Broadlink, который работал просто отвратительно. По этому, увидев снова это название, я сразу заподозрил неладное. Юзер интерфейсом к этому модулю служит приложение “AC freedom”, которое, работает через китайское облако. И это облако периодически недоступно! А если и доступно, то команда, отправленная кондиционеру, может выполниться с задержкой в 5 – 10 секунд. Ну а самое печальное то – что в итоге у кондиционера нет никакой прямой интеграции ни с Home Assistant ни с Яндекс.станцией. Что-ж, пойдём окольными путями…
Как добавить в Home Assistant?
Всё-же, у этой системы есть и локальное управление. А раз оно есть, с ним ведь можно как-то взаимодействовать?
Способ #1 (программный)
Погуглив, я набрёл на проект некого энтузиаста, представляющий собой софт-адаптер, между модулем broadlink и mqtt.
Установил. И в принципе, это было то, что нужно! Софт подключался напрямую к модулю и позволял вывести в mqtt самые основные функции кондея. Часть функционала, имеющаяся в родном приложении, всё же не была реализована, но это меня не сильно беспокоило. С mqtt я смог затащить кондиционер в Home Assistant и далее, в яндекс станцию. К сожалению, на этот раз я нарвался на нестабильную работу самого wifi модуля. Кондей мог перестать пинговаться, а следом падала и программный посредник.
Я пытался вставлять костыли для мониторинга и перезапуска софта, но всё равно, по крайней мере раз в 4-6 дней управление наглухо переставало работать и требовало ручного вмешательства. Примерно три года оно работало с переменным успехом и я регулярно хватался за физический пульт.
Способ #2 (аппаратный)
Однажды меня это так допекло, что я задумался… А зачем мне вообще родной wifi модуль с костылями? Погуглив на тему реверса протокола взаимодействия с кондиционером, я офигел от найденного! Оказалось, что для кондиционеров этого семейства OEM клонов, кое-кто уже давно выложил отличное решение: “Кастомный компонент для ESPHome для управления кондиционером по Wi-Fi”
Ближе к сути…
Из железа понадобилось: esp32-C3, понижающий dc-dc модуль (с 14 до 5 вольт) и проводочки.
На фото первый вариант модуля управления, собранного на nodemcu esp8266 с огромной “понижайкой”. Всё это хозяйство не помещалось под крышку кондиционера и было заменено на более компактный набор.
Работа с паяльником
В соответствии с распиновкой выходного коннектора кондиционера, подключаем вход DC-DC преобразователя к жёлтому проводу +14в, вешаем на выход вольтметр и крутим подстроечный резистор до тех пор, пока на выходе не получится 5,2 Вольта (с учётом отсутствия нагрузки).
Да, в распиновке имеется какой-то провод +5V, но не зная, нафиг он нужен, я не рискнул вешать на него нагрузку.
Далее, припаиваем положительный выход с преобразователя на вход esp32-C3 +5V, отрицательный к GND, TX к GPIO6, а RX к GPIO7.
Прошивка
Прошить esp32 можно разными способами, но поскольку для интеграции в любом случае потребуется установка ESPhome в Home Assistant, шить будем прямо оттуда.
Добавьте в ESPhome новое устройство. В процессе, мастер добавления устройства предложит дать ему имя (например AC).
Далее, будет предложено соединиться с устройством. Чтобы не тратить время, пропустите этот шаг, затем выберите из списка вручную ваше устройство (в моём случае, esp32-C3)
И в следующем диалоге тоже нажмите SKIP. На данный момент, нас не интересует установка базовой прошивки. Позже, мы зальём её в уже сконфигурированном виде.
Теперь, на появившемся устройстве нажимаем EDIT и настраиваем конфигурацию нашего устройства.
В оригинальном мануале используются переменные. В моём-же примере, все важные параметры будут захардкодены, ибо, в случае чего, мне проще перепрошить платку, чем менять параметры через веб портал.
esphome:
name: ac
friendly_name: ac
esp32:
board: esp32-c3-devkitm-1
framework:
type: arduino
external_components:
- source:
type: git
url: https://github.com/GrKoR/esphome_aux_ac_component
logger:
baud_rate: 0
api:
encryption:
key: "****" # этот ключ будет сгенерирован по ходу создания устройства, берите из его конфига.
ota:
- platform: esphome
password: "*****" # этот ключ, аналогично, берётся из сгенерированного конфига
wifi:
ssid: "Ваш SSID"
password: "пароль"
web_server:
port: 80
auth:
username: "логин от веб интерфейса"
password: "пароль"
uart:
id: ac_uart_bus
# ATTENTION! For TX and RX use GPIO4 (D2) and GPIO5 (D1) for NodeMCU-like boards!
# See docs for details: https://github.com/GrKoR/esphome_aux_ac_component/blob/master/docs/HARDWARE-EN.md
tx_pin: GPIO6
rx_pin: GPIO7
baud_rate: 4800
data_bits: 8
parity: EVEN
stop_bits: 1
climate:
- platform: aux_ac
name: "Artel"
period: 7s
show_action: true
display_inverted: false
timeout: 150
optimistic: true
visual:
min_temperature: 16
max_temperature: 32
temperature_step: 0.5
supported_modes:
- HEAT_COOL
- COOL
- HEAT
- DRY
- FAN_ONLY
custom_fan_modes:
- MUTE
- TURBO
supported_presets:
- SLEEP
custom_presets:
- CLEAN
- HEALTH
- ANTIFUNGUS
supported_swing_modes:
- VERTICAL
- HORIZONTAL
- BOTH
После редактирования конфигурации, жмём SAVE, а затем INSTALL.
Подключите esp32-C3 к USB порту вашего компьютера, затем зажмите на ней кнопку boot и удерживая, щёлкните reset. Таким образом вы переведёте устройство в режим прошивки.
Тут можно выбрать способ прошивки. Поскольку OTA у нас ещё не работает, выбираем “Plug into this computer”.
В появившемся диалоге браузера выберите соответствующий устройству com порт и нажмите “подключение”.
Если вы правильно перевели esp32 в режим прошивки, то после компиляции, микропрограмма будет установлена в память устройства. После окончания установки ещё раз нажмите reset и проверьте, подключилось ли устройство к вашей wifi сети.
Если всё сделано верно, статус устройства в ESPhome перейдёт в ONLINE, а в настройках Home Assistant появится новое устройство. Добавляем его в дэшборд и наслаждаемся новыми возможностями умного дома.
Алиса, включи кондиционер!
При наличии интеграции с яндекс.станцией, просто добавьте это устройство в “УДЯ” и кондиционером можно будет управлять голосом.
Примеры команд:
“Алиса, включи кондиционер на охлаждение/обогрев/вентиляцию.”
“Алиса, поставь кондиционер на 24 градуса”
“Алиса, сделай похолоднее” (снизит температуру на один градус)
“Алиса, в каком режиме сейчас работает кондиционер?” (Расскажет о текущем режиме и температуре)
Что примечательно, ваш умный дом всегда будет знать актуальный статус кондиционера, даже если кто-то изменил его при помощи физического пульта. И это работает исключительно при наличии двухсторонней связи, в отличии от костылей с инфракрасным ретранслятором (так называемым “умным пультом”)
Как насчёт надёжности?
Что-ж, самоделки на esp32 далеко не всегда могут похвастаться стабильной работой, однако уже около месяца мой кондиционер не отваливается от умного дома. В сравнении с заводским управляющим модулем – это уже прекрасный результат.
P.S.
Остаётся только выразить огромный респект автору проекта, что я и сделал, немного задонатив ему в TON. ;) Поддерживайте энтузиастов, на них держится всё самое светлое в этом мире!