Найти в Дзене
Соловей с паяльником

Кондиционеры TCL в Home Assistant. Часть 1: Быстрый старт.

Оглавление

Мы делали-делали и, наконец, доделали! Косячки, конечно, остались, но все работает! С чем всех и поздравляю и о чем хочу рассказать вам в нескольких частях.

Наслаждение автоматизированной прохладой :)
Наслаждение автоматизированной прохладой :)

Первым делом- благодарности!

Хочу выразить огромную благодарность всем тем прекрасным людям, которые поддерживали меня на протяжении всей работы. Это и комментаторы, и естествоиспытатели, которые рвались в первые ряды проверять "как оно там вообще пашет, не?", и те, кто предметно общался со мной в личке по ошибкам или функционалу, и конечно всем тем, кто донатил на любимый пивасик! Всем вам хочу сказать: "Большое спасибо!". Без вас всех было бы трудно, плохо и печально, а могло бы и не быть вообще.

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

Оглавление.

Рекогносцировка на местности.

Итак, некоторое время назад фирма TCL запустила, условно говоря, новую платформу, на которой начала делать новые бюджетные кондиционеры, причем как под своей маркой, так и в OEM исполнении с перемаркировкой под марки партнеров. Новая платформа подразумевала не только конструктивное исполнение блоков сплит-систем, но так же и электронную начинку, которая, будучи довольно универсальной, могла адаптироваться под существенное разнообразие компонентов. Так, на новой платформе появились и простые старт-стопные системы, так и более дорогие и современные инверторные модели. В целом же можно сказать так: если Вы видели кондиционер типа TCL TAC-07CHSA/TPG, то, в целом, Вы можете понять, какие кондиционеры других марок сделаны на этой платформе: характерная геометрия внутреннего и внешнего блоков, похожие шторки, LED-дисплей с уставкой температуры, расположение фильтра под крышкой внутреннего блока и т.д.

Для нас же самое ценное- это электронная начинка, а точнее протокол управления этими кондиционерами, этот самый протокол так же общий на всех. Разумеется, энтузиастам захотелось подключить эти кондиционеры к своим системам Home Assistant, чтобы вытворять непотребства посредством разнообразных автоматизаций. Увы, сходу не вышло. К этому моменту в дело подключился я и у меня даже вышло, почитать о приключениях можно здесь. Но не на долго, ведь у Home Assistant (точнее у ESPHome) началась очередная борьба бобра со злом, очередные изменения, которые "ну в этот раз уж точно сделают всем хорошо и тогда заживем!", поэтому мой вариант был признан костыльным, сначала начал барахлить, а вскоре и совсем навернулся. Что-ж, я принял решение делать полноценный внешний компонент для ESPHome, что меня жуть как пугало, ведь я с подобным не сталкивался ни разу, документации толком нет и некому меня научить а я еще и не программист- я начальник отдела производства электроники, экс-радиомонтажник! Но при помощи собравшегося сообщества неравнодушных людей все же удалось сделать это дело- я написал не только сам внешний компонент, но и обвязку к нему из переключателей, событий и подгружаемых файлов. Но обо всем по порядку.

Итак, сейчас важно знать, что компонент работает и проверен на следующих кондиционерах:

  • Axioma ASX09H1/ASB09H1
  • Ballu Discovery DC BSVI-07HN8
  • Ballu Discovery DC BSVI-09HN8
  • Daichi AIR20AVQ1/AIR20FV1
  • Daichi AIR25AVQS1R-1/AIR25FVS1R-1
  • Daichi AIR35AVQS1R-1/AIR35FVS1R-1
  • Daichi DA35EVQ1-1/DF35EV1-1
  • Dantex RK-12SATI/RK-12SATIE
  • Ecostar Radium KVS-RAD09CH
  • Royal Clima Gloria Inverter
  • TCL ELI ONF 12
  • TCL Liferise ONF 09
  • TCL One Inverter TACM-09HRID/E1 (возможно, иной порядок контактов)
  • TCL TAC-07CHSA/TPG-W
  • TCL TAC-09CHSA/TPG
  • TCL TAC-09CHSA/DSEI-W
  • TCL TAC-09HRID/E1
  • TCL TAC-12CHSA/TPG
  • TCL TAC-XAL24I
  • TCL TPG31IHB

Позже будут добавляться еще модели, по мере появления отзывов от владельцев.

Быстрый старт для нормальных людей.

Для быстрого старта нам понадобится что-то простое и удобное, как валенок. И чтобы купить можно было легко и дешево, как валенок. И чтобы сломать было так же сложно, как валенок. Можно было бы подумать, что нам нужен валенок, но нет, нам нужен модуль ESP-WROOM-32 DevKit v1. Его три главных достоинства для быстрого старта: цена, USB разъем для программирования и возможность запитать от 5 вольт. Сейчас я очень стремно нарисую, что и куда должно подключаться, если у Вас в кондиционере уже установлен USB разъем под WiFi модуль:

Вот так подключается
Вот так подключается

Если разъем у Вас какой-то другой- не беда, ведь подпаивается аналогично. А что делать, если вот никак дома разъема нет, а вот "прям щас" хочется? Не проблема- на схеме я не просто так нарисовал провода разными цветами! Если взять любой USB 2.0 кабель (например, принтерный USB A-B) и отрезать его, то внутри обнаружатся провода этих цветов. Соединять с модулем согласно цветам и будет счастье. Удалось спаять? Если да, то все шикарно, но в кондиционер модуль втыкать пока не надо, а надо модуль подключить к ПК кабелем с разъемом MicroUSB. Пора заняться программным обеспечением.

Программировай!

Итак, модуль программируется через ESPHome - удивительно удобное приспособление для программирования различных модулей для нативной работы с Home Assistant через его API. Подробную информацию можно найти на официальном сайте ESPHome, увы, только на английском. К счастью, яндекс в помощь- в русскоязычном сегменте интернета достаточно статей об этом инструменте. О способах установки есть документация на английском, но и на русском можно найти.

Для тех, кому не хочется залезать куда-то глубоко в дебри кода, у кого есть дела поважнее и поинтереснее разглядывания буковок и циферок на экране я сделал простой путь: подгружаемые файлы. Старт предельно простой, все что нужно- простая конфигурация, к примеру, подсмотрим вариант одного из первых испытателей компонента. Кстати, у него вообще можно подглядеть процесс чего-куда, но вернемся к конфигурации. Увы, конфигурация будет картинкой, потому как встроенный редактор дзена ультра-убогий. Но можно скачать образец конфигурации с моего гита. Итак:

Образец конфигурации
Образец конфигурации

Все, больше ничего не нужно! Все остальные файлы с настройками, скриптами и сам компонент кондиционера ESPHome подтянет из интернета самостоятельно!

Как видно, конфигурация состоит из 3 частей: 1 часть отвечает за переменные, в которых хранятся важные личные настройки, во 2 части указано, какие файлы тащить из интернета, а 3 отвечает за выбор модуля, на котором сделан адаптер для кондиционера.

Для быстрого старта 2 часть трогать не надо, да и нет необходимости в знаниях о 2 части, хотя, если любопытно, об этом написано в официальной документации к ESPHome.

Так же не нужно трогать и 3 часть, если в качестве модуля был выбран рекомендованный мной ESP-WROOM-32 DevKit v1.

А вот о первой части поговорим подробно. Итак, тут 11 переменных, и почти все они нужны и важны.

device_name - Уникальное имя этой конфигурации, стоит использовать только латинские буквы и цифры, никаких пробелов или спецсимволов, например, "tclac". Если будет несколько кондиционеров и, соответственно, модулей кондиционера, то device_name надо задавать отличными друг от друга, например, добавляя цифры: tclac1, tclac2, tclac3 и т.д.

humanly_name - Человеческое имя для кондиционера, это имя будет отображаться в интерфейсе, конкретнее- в карточке кондиционера.

wifi_ssid - Имя точки доступа WiFi Вашей сети. Данные могут храниться в файле "secret" в ESPHome, тогда нужно указать что-то вроде !secret wifi_ssid, иначе просто указывается имя.

wifi_password - Пароль к точке доступа WiFi Вашей сети. Данные могут храниться в файле "secret" в ESPHome, тогда нужно указать нечто типа !secret wifi_password, иначе просто указывается пароль.

recovery_pass - Пароль для точки доступа для восстановления, если модуль не сможет подколючиться к Вашей сети, то он сам создаст точку доступа, к которой можно будет подключиться для, например, прошивки. Имя точки доступа будет: "{device_name} Fallback Hotspot"

ota_pass - Пароль для обновления по воздуху, для возможности обновлять модуль из ESPHome прямо через WiFi. Этот пароль придумывается один раз и потом используется всегда на автомате. Как придумать? Просто возьмите образец и замените любую букву или цифру. Только запишите куда-нибудь! Забудете- придется прошивать через кабель.

api_key - Ключ подключения к Home Assistant API, новый ключ можно получить здесь: https://esphome.io/components/api.html Это ключ шифрования трафика между модулем и сервером Home Assistant, помнить его не обязательно, в будущем, при необходимости, всегда можно будет подсмотреть его в ESPHome.

uart_rx - Вывод модуля, к которому подключен сигнал RX порта UART. В нашем случае быстрого старта это GPIO3

uart_tx - Вывод модуля, к которому подключен сигнал TX порта UART. В нашем случае быстрого старта это GPIO1

receive_led и transmit_led - Выводы модуля для подключения сигнальных светодиодов, в нашем случае оно, вроде как, и не надо, потому и там и там просто указано GPIO2

На самом деле, если заглянуть ко мне в репозиторий по адресу https://github.com/I-am-nightingale/tclac, то можно там найти файл TCL-Conditioner.yaml, в котором есть подробные комментарии того, что где и как надо менять. Да и инструкция там есть, но об этом поговорим во 2 части.

Теперь, когда мы знаем что и как надо делать, пора добавить конфигурацию в ESPHome. Начнем с того, что нам нужен Chrome-образный браузер, например, Chromium, Google Chrome, Яндекс.Браузер или даже Microsoft Edge. Заходим через него в свой web- интерфейс сервера Home Assistant и жмем сюда:

Куда надо жмякать
Куда надо жмякать

Тут добавляем новое устройство:

Добавить новое устройство, типа
Добавить новое устройство, типа

Дальше жмем CONTINUE, вводим имя кондиционера без кавычек и спецсимволов, например, tclac11 (а почему бы нет?), потом выбираем "ESP32" и в последнем окне жмем "Skip" , и в результате получаем новое устройство, под которым надо нажать Edit:

Так редактируется конфигурация устройства
Так редактируется конфигурация устройства

Откроется редактор, где все стираем и вставляем указанную выше конфигурацию:

Вставленная конфигурация
Вставленная конфигурация

Кстати, не забудьте отредактировать переменные, согласно описанию, которое я привел выше!

Ага, конфигурация составлена, надо скомпилировать ее в живую прошивку. Как? А вот так: жмем сначала 1 кнопку, потом 2:

Вот эти вот
Вот эти вот

Далее жмем на "Ручную загрузку":

Загрузка вручную
Загрузка вручную

После этого начнется процесс компиляции прошивки. Трогать ничего не нужно до тех пор, пока не вылезет вот такое окно, где нужно будет выбрать современный формат прошивки:

Современный формат прошивки
Современный формат прошивки

И в итоге файл прошивки будет скачан и сохранен, вероятнее всего, в папке "Загрузки":

Не забыть бы потом, куда оно сохранилось
Не забыть бы потом, куда оно сохранилось

Не потеряйте его, он скоро нам понадобится.

Кройка и шитье

Что-ж, пора прошивать. Так как на нашем модуле есть USB разъем, то многого знать не нужно, по сути уже все есть, так что подключив модуль к ПК, надо будет лишь установить драйвер на чип USB-UART моста. Обычно все случается автоматически и ОС находит все сама. Далее, через диспетчер устройств надо будет найти этот мост и узнать номер виртуального COM-порта.

Вот она, плата моей мечты!
Вот она, плата моей мечты!

В моем случае это COM3, это великое знание нам пригодится. Теперь ломимся на сайт https://web.esphome.io/ через тот самый Chrome-образный браузер. Не через фаерфокс, не через оперу, именно через то, что я перечислил выше, иначе работать не будет. В моем случае будет Microsoft Edge, заходим на сайт и жмем сюда:

Вооооот сюда
Вооооот сюда

В общем- жать надо на "CONNECT", но это, наверное, уже понятно по стрелке, нарисованной прямо на сайте :)

Далее вылезет окно, в котором надо будет выбрать тот самый COM-порт, номер которого мы узнали раньше:

Вот в этой последовательности
Вот в этой последовательности

Появится вот такое вот окно, в котором нужно сразу и без зазрения совести жать "Install":

Жмякать здесь
Жмякать здесь

Откроется окно выбора файла. Помните, мы прошивку компилировали, потом она скачалась? Не потеряли? Тогда сначала жать на "Выбор файла", в открывшемся окне выбрать файл прошивки, а после жать на "Install":

Последовательность действий в студии!
Последовательность действий в студии!

Остальное все сделается само, надо только ждать:

Ожидаем
Ожидаем

После появления окна конгратуляций- все, с прошивкой разобрались!

Пробуем победу на вкус

Отключаем модуль от ПК, втыкаем в кондиционер и ждем загрузки. Обычно, все добавляется само, но иногда такой фокус не проходит и тогда в веб-интерфейсе Home Assistant в разделе "Уведомления" появляется новое уведомление, в котором будет сказано, что определилось новое устройство и надо чек ит аут. Жмем туда, дальше жмем настроить и вот тогда все само уже настроится до конца. Как узнать что точно до конца? В разделе "Обзор" появится вот такая карточка:

Карточка на панели
Карточка на панели

Это сокращенная версия полной карточки управления, которую можно вызвать, если нажать на 3 точки в правом верхнем углу карточки, жмякаем- вылезает это:

Полная карточка кондиционера
Полная карточка кондиционера

Почти то же самое, только больше, а поэтому именно тут остановимся поподробнее.

1 - Текущая температура воздуха в ближайшем окружении от внутреннего блока кондиционера, со встроенного датчика

2 - Состояние кондиционера прямо сейчас

3 - Колесо задания температуры, мелкий кружок- текущая температура, большой кружок- уставка температуры, большой кружок можно крутить по дуге, удобно. А можно под дугой жать кнопки "-" и "+"

4 - Уставка температуры, кондиционер будет стремиться привести показания текущей температуры именно к этой уставке

5 - Режим работы кондиционера, традиционно: выключено, автоматический, обогрев, охлаждение, осушение, вентиляция

6 - Скорость вентилятора, от малой к большей: тихий, низкий, среднее, средний, высокий, фокус, диффузный. Это не моя опечатка, это такой перевод и уже давно. Просто примите такой шакальный набор скоростей как данность..

7 - Предустановка кондиционера: Комфорт (ионизатор), Эко (режим сбережения энергии) и Сон (оптимизация работы во время сна). Увы, можно включать только 1 режим за раз, таков путь.

8 - Режим качания шторок: выключено, оба, вертикально, горизонтально

9 - Дополнительное меню.

Почему вообще я написал про дополнительное меню? Оно тут при чем? А при том, что если нажать на эти 3 точки и выбрать "Устройство", то откроются дополнительные настройки кондиционера:

Дополнительные настройки
Дополнительные настройки

Слева- краткая сводка по устройству, автоматизациям, сценам и скриптам, в которых кондиционер учавствует. Справа- история событий. А в центре самое ценное- настройки:

  • Beeper - переключатель работы пищалки, подтверждающей команды. Действует только для Home Assistant, с пульта будет пищать и дальше
  • Display - переключатель работы индикатора уставки температуры на корпусе внутреннего блока. На ночь можно выключить, но работает коварно, об этом ниже!
  • Display on module - светодиоды индикации обмена данными на модуле WiFi. Если бесят мигающие огоньки- выключить. Конечно, если Вы их изначально включали в конфигурации модуля.
  • Horizontal fixing - фиксация горизонтальных заслонок в указанном положении
  • Horizontal swing - режим качания горизонтальных заслонок
  • Vertical fixing - фиксация вертикальной заслонки в указанном положении
  • Vertical swing - режим качания вертикальной заслонки
  • Force config - принудительное применение настроек сразу после изменения

Последнее надо пояснить: изначально было сделано так, что настройки не применяются сразу- они задействуются только при следующей подаче команды с карточки кондиционера на дашборде. Это связано с тем, что эти настройки- это, по сути, дописанные к компоненту кондиционера конфиги на YAML, с программным кодом на LAMBDA, они не имеют обратной связи и не считываются из данных, отправляемых кондиционером. То есть кондиционер никогда не знает, какую настройку может отправить ему модуль, в связи с чем при автоматизациях могут возникнуть непредвиденные моменты, которые решаются именно так, как изначально решил их я- в любых ситуациях отправлять то, что настроено пользователем.

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

Теперь разберемся с заслонками. В общем-то, все как и было до этого: заслонки всегда находятся в одном из 2 режимов: либо в режиме фиксации, либо в режиме качания. Именно это и выбирается в карточке кондиционера в разделе "Режим качания"- тут заслонки либо качаются, либо зафиксированы. К этой логике надо привыкнуть, ведь с пульта управляться заслонками куда проще, но увы- у Home Assistant управление организованно именно вот так, и создатели так и не поменяли его, хотя разговоры и были... Собственно, в разделе дополнительных настроек кондиционера есть 4 пункта, которые позволяют выбрать режимы фиксации (Horizontal fixing и Vertical fixing) и режимы качания (Horizontal swing и Vertical swing), а выбирая в карточке кондиционера "Режим качания", заслонки переключаются между одним и другим. Просто поэкспериментируйте и быстро все поймете.

Для примера, для указанных выше настроек, при выборе в карточке "Режим качания" пункт по умолчанию "Выключено" вертикальная заслонка останется в последнем заданном положении (каким бы оно ни было), и горизонтальные сделают то же самое. Если в "Режим качания" выбрать "Вертикально", то вертикальная заслонка будет качаться вверх-вниз на всю высоту, а горизонтальная так и останется на прежнем месте. Если же теперь в "Режим качания" выбрать "Выключено", то вертикальная заслонка замрет в том положении, в котором она была на момент выключения качания..

Как же сделать так, чтобы при отключении качания заслонка замирала в каком-то конкретном положении, а не замирала где была? Надо в Horizontal fixing или Vertical fixing выбрать конкретное положение из доступных.

Теперь что касается индикатора уставки температуры- чудесный мозг кондиционера настроен работать так, что если выключить индикатор уставки температуры, то кондиционер будет принудительно переключаться в режим "Авто", при этом сохраняя возможность изменять уставку температуры, скорость вентилятора и режимы шторок. И только так- победить это не возможно, то же самое происходит и при выключении индикатора с пульта, кондиционер тоже переводится в режим "Авто". Надо было брать кондей за 40 кусков :)

В качестве эпилога

В общем, всеми правдами и неправдами с быстрым стартом разобрались, кондей начал слушаться Home Assistant'а и жизнь прекрасна. Можно полноценно управлять кондиционером, составлять различные автоматизации (в том числе и с алисой) и вообще радоваться и хвалиться диковинкой перед гостями. Да, я так и делаю, обожаю, как люди офигивают. Но, возможно, кому-то захочется копнуть поглубже, повнимательнее изучить программную составляющую, чтобы сделать что-то свое, особенное? Об этом я расскажу во 2 и 3 частях статьи.

Классная новость: теперь на Дзене есть донаты и меня можно поддержать нативно, без переходов куда-либо еще! Просто красота!

Накидать денежек для поддержки, на которые я закуплю всякого для новых поделок можно авторизовавшись на дзене и далее либо кнопкой "Поддержать автора" в конце статьи, либо щелкнув сюда . Для тех же, кто не хочет авторизовываться, как и раньше работает старая форма для донатов.

Скоро увидимся снова, пока!