Бюджетный умный климат: как я заставил дешевый кондиционер поумнеть и слушаться Алису

Всем известно, что в Краснодарском крае, особенно летом, без кондиционера никак. Зимой они тоже помогают экономить нервы и средства. Тут очень важен подогрев.

Я установил в свою 3-комнатную квартиру три кондиционера DEXP AC-CH9ONF. Это самый простой и бюджетный вариант, я не ожидал от него особых возможностей.

Поначалу все устраивало, но учитывая, что в квартире реализован простенький умный дом на основе Zigbee контроллера SLS (https://slsys.io/), хотелось бы управлять кондиционерами дистанционно.

Управление по IR командам сразу забраковал, так как это неудобно.

Почему?

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

  • Ненадежность сигнала:  IR сигнал может потеряться по пути, и кондиционер не включится, хотя мы думали, что это сделали.

  • Ограниченный контроль:  алгоритм работы и контроль температуры остаются прежними.

Проблемы с алгоритмом

  • Режим охлаждения:  после отключения компрессора (по достижении заданной температуры) кондиционер продолжает обдув (типа просушки?), в результате чего в комнате повышается влажность, появляется неприятный запах и становится очень душно.

  • Режим нагрева:  в межсезонье, когда хочется немного согреться, кондиционер включается на подогрев, работает 15 минут и отключается. Датчик внутри считает, что в комнате тепло, хотя на самом деле это не так. Эффективность нагрева очень низкая.

Решение

Когда стало совсем холодно, и я с двумя детьми начал подмерзать — решил заняться доработкой кондиционеров.

Разобрал плату управления и нашел все дорожки, ведущие к основным органам управления:

  • Транзистор управления реле включения компрессора

  • Транзистор управления реле вентилятора внешнего блока

  • Транзистор клапаном обратного хода внешнего блока (обогрев/охлаждение)

  • Управление вентилятором внутреннего блока

Для управления использовал любимые контроллеры ESP32 — WeMos (Lolin) S2 mini.

готовый вариант, esp32 успешно пристроился к mothership :)

готовый вариант, esp32 успешно пристроился к mothership:)

Перерезав дорожки бортового контроллера к органам управления, я подключил ESP32. Все подключения удалось выполнить напрямую без дополнительной гальванической развязки (кроме одного момента, об этом ниже).

Далее я написал логику работы:

  • Получение температуры с внешнего ZigBee датчика в комнате

  • Включение/выключение кондиционера по заданной температуре (гистерезис около 0.5 градусов)

Первая прошивка была залита уже через час.

Я предусмотрел заливку прошивки удаленно через Wi-Fi — OTA, потому что каждый раз разбирать кондиционер — не очень удобно.

Сложности

  • Управление внутренним вентилятором:  он управляется через тиристор, а не транзистор (как я предпологал), и подача на него простого ШИМ разных частот не давала нужного результата. Оказалось, что это мотор переменного тока, и управляется через ШИМ 50Гц, срезом полупериодов. Это своего рода диммирование с открытием тиристора в нужный момент полупериода сети, что и ограничивает напряжение и скорость вентилятора. об том как это работает неплохо расписано например тут: https://habr.com/ru/articles/410467/

Для реализации этого метода в контроллер должен приходить оцифрованный сигнал 100Гц — удвоенная частота сети, характеризующая тайминг каждого полупериода и прохождение через ноль.

Мне пришлось снова разобрать кондиционер, найти эту цепь и вывести сигнал в контроллер. Так как на плате контроллер 5В, я зацепил его через резистор 5кОм, чтобы ESP32 не нервничал от такой амплитуды (он работает от 3.3v и не имеет защиты 5v tolerance, однако ограничивающего резистора вполне достаточно).

  • Получение температуры:  в реализации умного дома на этом объекте нет локального MQTT, используется облачный сервис, который сразу дружит все устройства с Яндекс Алисой. Но, если пропадет интернет, хотелось бы, чтобы кондиционер работал дальше?

Я прочитал про HTTP API SLS и понял, что можно получать состояние датчиков прямо с контроллера. Так и сделал.

Результат

Я реализовал простой веб-интерфейс с основными элементами управления и возможностью отладки (пощелкать релюшками, порулить скоростью, задать температуру и режим работы).

веб интерфейс на телефоне

веб интерфейс на телефоне

  • Теперь в режиме обогрева очень тепло: контроль по внешнему датчику.

  • В режиме охлаждения нет посторонних запахов (я почти сразу останавливаю вентилятор после отключения компрессора — 20 сек).

  • В комнате тишина, в режиме ожидания ничего не крутится и не шумит.

  • Четкий (в рамках гистерезиса 0.5 градуса) контроль состояния каждой комнаты.

Далее я подключил контроллер ESP32 к облачному MQTT и пробросил все параметры в умный дом Яндекса. Теперь Алиса тоже рулит кондиционером и сообщает в каком он текущем состоянии.

так видно кондер в умном доме Яндекса, обратная связь показывает температуру в комнате и работу компрессора.

так видно кондер в умном доме Яндекса, обратная связь показывает температуру в комнате и работу компрессора.

Внимательные люди могут заметить, что нет ни слова про жалюзи кондиционера?
-Управлять ими не так и сложно, там шаговый мотор. Но я никогда их не трогал, и даже наоборот руками подправлял так, как мне нужно. Так что, они просто всегда открыты и направлены в правильном направлении.

Всем благ! Интересны комментарии к реализации :)

© Habrahabr.ru