Локальное управление кондиционером Haier Lightera через ESPHome: без китайских серверов, нестабильных облачных связок и лишней зависимости от Алисы.
Я купил кондиционеры Haier Lightera и, конечно, захотел подключить их к умному дому. Быстрый поиск показал: задача решаемая, но придётся немного поработать с железом. Ниже собрал рабочий вариант подключения, подводные камни и ссылки, которые пригодились в процессе.
Haier предлагает фирменные модули для управления через интернет, но они работают через китайские серверы. Для меня это было не лучшим вариантом: у меня уже есть кондиционеры с комплектным блоком управления, и качество облачной интеграции там оставляет желать лучшего. Я пробовал интеграцию Haier Evo, затем связку Haier → Алиса → Home Assistant, но в обоих случаях кондиционеры периодически отваливались. Поэтому хотелось именно локального решения.
Распиновка USB
Несмотря на разъём USB-A, выведенный в специальное место в корпусе для подключения модуля управления, в кондиционере используется не USB-протокол, а UART с уровнем 5 В вместо 3,3 В.
Board
USB
Wire color
ESP8266
5V
VCC
red
5V
GND
GND
black
GND
TX
DATA+
green
RX
RX
DATA-
white
TX
Выбор платы
Для подключения я выбрал проект haier-esphome. Главная сложность была в размере: хотелось поставить плату в штатное место, которое производитель предусмотрел для адаптера, а места там очень мало.
После нескольких попыток я остановился на LilyGO T-Dongle S3 без дисплея. Документация к плате лежит в репозитории LilyGO.
Донгл может использовать разъем USB как чистый UART, только с уровнем 5в вместо 3,3в (как и в кондиционере), для этого используются пины GPIO19 и GPIO20. Поэтому он просто вставляется в штатное место и более ничего с железом делать не надо.
Настройка прошивки
Но конечно же, прежде чем вставлять LilyGO, надо его прошить.
У Haier есть два протокола: старый smartAir2 и hOn. В моих кондиционерах используется smartAir2, поэтому конфигурация ниже написана под него. На транспортном уровне протоколы совместимы, и при запуске с подключенным кондиционером прошивка подскажет, если выбран не тот вариант.
Ниже пример конфигурации с максимально включённой отладкой. Для постоянной работы её лучше отключить, но на первом запуске подробные логи сильно помогают понять, что происходит.
# Необязательно, возможно пригодится для отладки
sensor:
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 10s
entity_category: "diagnostic"
# После отладки надо будет выключить
web_server:
port: 80
# После отладки переключить в менее подробный режим для повышения производительности
logger:
level: DEBUG
Подключаем донгл к компьютеру. Если на донгле уже стояла какая-то прошивка, то для его перепрошивки во время подключения надо нажать и держать несколько секунд кнопку на передней панели донгла. Далее запускаем в командой строке в только что распакованной директории esphome run haierac1.yaml --device /dev/tty.usbmodem144301
где /dev/tty.usbmodem144301 - устройство, которое определилось при подключении донгла. В дальнейшем можно обновлять по воздуху (если оставите эту возможность в конфиге), заменив имя устройства на ip адрес esphome run haierac1.yaml --device 192.168.100.100