"Кондиционер айтишника", моя версия
18.08.2024
Длинная и печальная история настройки устройства "Яндекс-Пульт" для управление климатом.
Статья является отчётом о проделанной работе по следам https://habr.com/ru/articles/473680/
Решил я попробовать пройти путь за "avstepanov" и немного задокументировать свои успехи. Его статья показывает как всё может быть просто! И я понял, что мне нужно именно так просто.
Немного забегая вперёд скажу, что на это "просто" у меня ушло какое-то неимоверное количество времени. И пару раз я уже был готов сдаться окончательно. Но финал моей статьи тоже будет радостным! И рекомендую листать сразу к финалу…
Началась вся история с того, что для реализации очередного проекта умного дома мне понадобилось управление кондиционерами. Все предыдущие разы я решал эту задачу с помощью старого, проверенного средства Zennio IRSC. Устройство себя прекрасно зарекомендовало, самые старые монтажи были больше 14 лет назад и никаких сложностей за это время с ними не было.
Но на 2024 год – есть проблема. Устройство Zennio IRSC можно купить не дешевле, чем за 200 EUR. По текущему курсу это больше 16 000 рублей. Да и то это цены не в России. А в России всё и того хуже.
Но когда в проекте уже есть KNX-инфраструктура – всё немного проще. А вот если KNX нужен только для управления кондиционерами, то становится как-то слишком кучеряво. Для нормального подключения Zennio IRSC нужно ещё к нему в комплекте доставить IP Router (99014 рублей) и блок питания (43470 рублей). Короче, для того, чтобы управлять 5 кондиционерами – бюджет мероприятия получается около 300 тысяч рублей. Понятно, что можно найти всё это немного дешевле, но чуда не случится. 100-200 тысяч потратить точно придётся. И это не вариант.
Поэтому будем двигаться по максимально бюджетному пути. Хотя нет. Максимально бюджетный – это купить модуль ESP и просто подключить к нему диоды. Так делать не хотелось, поскольку итоговый результат слишком плохо выглядит. Нужно что-то чуть менее бюджетное.
Заказал себе на пробу один Яндекс-Пульт (YNDX-0006) на OZON и приступил к экспериментам.
Для начала я его открыл. Крышка прикреплена к корпусу на защёлках, поэтому чем-то тонким и пластиковым проходим по кругу под крышкой, и она открывается.
Дальше стало понятно, что моя модель полностью совпадает с моделью, которую обозревал avstepanov. Это хороший знак. Значит шансы есть.
Моя версия Яндекс-Пульт.
Версия Яндекс-Пульт от avstepanov. Найдите, как говорится, 10 отличий.
Для начала я решил обновить прошивку без пайки. Я хотел поставить для начала около 10 подобных модулей и очень не хотелось 10 раз что-то паять. Возни слишком много. Поэтому для начала я попробовал обойтись утилитой прошивки OTA.
https://github.com/ct-Open-Source/tuya-convert
Она упоминается во всех статьях, где люди собирались перепрошивать tuya-модули. Опущу описание возни вокруг этой утилиты… Я убил на неё в разных вариациях около двух часов. Скажу сразу финал – в 2024 году ни один из Tuya-модулей купленных в магазине – данной утилитой не прошивается. Если у вас откуда-то завалялся дико старый модуль, то, наверное, шанс есть. А так – нет.
Припаялся я к выходам, любезно оставленным производителем. И заодно закоротил GPIO прямо на самой микросхеме. Это я, кстати, сделал зря – порт на лицевой части с названием I00 вёл как раз туда же, поэтому можно было сделать проще. Но это я понял немного позже.
Подключил всё это к USB2Serial конвертеру и начал прошивать.
И, конечно же, ничего у меня почему-то не вышло.
Вообще, ни разу ещё ничего хорошего у меня не получалось с Tuya-устройствами. Они всегда подкупают своей дешевизной, но попытки с ними сделать что-то, что не заложил туда сам производитель – всегда даются с какой-то болью. Это далеко не первое устройство, которое мне сразу не далось.
Дальше было много разных экспериментов. И подача внешнего питания, и перебор программ для прошивки, и перебор компьютеров для прошивки, сбор всей схемы на breadboard, короче часов 5 на это ушло легко.
Ничего не шьётся. Модуль полностью мёртвый. Но если включить его в том виде, как его задумал производитель – с ним всё прекрасно! Ну, значит, я его хотя бы не сжёг…
И тут… И тут я заметил, что основная плата управления (которая с ESP-модулем) имеет другую маркировку! В статье avstepanov это модуль TYWE3S.
А в моём устройстве это CB3S. Я было подумал что это не имеет значения – какая разница-то, если сама плата устройства та же самая? Но немного поискав в сети я обнаружил, что это какой-то принципиально другой модуль. Настолько другой, что прошивка tasmota его не поддерживает даже теоретически! И всё что я делал – не имело смысла.
Да больше того – у этого модуля даже pinout другой! И для его прошивки требуется совершенно другая последовательность действий. И другая программа прошивки. Вот это я удивился.
Сдаваться не хотелось и я продолжил.
Вот здесь https://mysku.club/blog/aliexpress/99292.html добрый человек уже научился прошивать CB3S. И в общем достаточно внятно расписал что нужно сделать. Подтверждаю, что эта последовательность действий работает. Из нюансов – да, для начала прошивки модуля нужно подать кратковременную GND на ногу ENABLE. И вдобавок – для прошивки моего модуля потребовалось внешнее питание (вполне подошло то, которое делал сам "пульт"). В остальном со второй-третьей попытки модуль прошился и показал, что он теперь не Tuya, а OpenBeken!
Что такое OpenBeken (Open Beken?) – я не знаю. Начал смотреть, пытаться разобраться. Что-то сложное. Очень похоже на какой-то геморрой. Насколько tasmota проста и лаконична, настолько же здесь было ничего не понятно. Но с какими-то матами я смог подобрать нужные пины для IR receiver, и это чудо-пульт наконец принял свой первый IR-сигнал.
Принять он его, конечно принял. Но расшифровывать он его не стал. Отдал в двоичном виде и сказал, чтобы я делал с ним всё, что мне заблагорассудится. Но и к этому я был теоретически уже готов. Но когда я с пульта управления кондиционером стал подавать последовательные сигналы с изменением температуры, и когда я увидел что двоичный код, получаемый на приёмнике никак не отличается при изменении этой "температуры" – я признал мысль о том, что здесь ловить нечего. Немного поисков в сети не дали никаких результатов. Это был идеологический тупик. Дальше делать было нечего.
Что же предпринять? Значит нужно как-то найти "умный пульт", который будет собран на старой управляющей плате TYWE3S!
Попробовал на ozon что-то поискать. Но, конечно же, в описании устройства для обычного пользователя – никто не будет писать модель управляющей платы. Ладно, будем пробовать перебором.
https://www.ozon.ru/product/infrakrasnyy-pult-distantsionnogo-upravleniya-tuya-umnyy-dom-umnyy-pult-1416098402/
Интересный пульт. В нём основную микросхему сразу распаяли на плате. Это, наверное, даже логичнее.
Мест для прошивки не оставили совсем. Ну да мне и не нужно – на микросхеме написано BK3271N. Это название я уже запомнил – оно как раз из проекта Open Beken. Так что это снова не тот модуль.
https://www.ozon.ru/product/umnyy-ik-pult-hiper-iot-ir-v2-1338766891/
Интересная модель... Но внутри тот же самый CB3S. Снова мимо.
Не понятно – где искать дальше? И зачем мне склад нелепых разломанных пультов на CB3S?
И тут я наткнулся на комментарий Iamnotauser, https://mysku.club/blog/aliexpress/78336.html#comment4066031, который рассказывает о том, что вообще с Hiper IoT IR2 – всё должно быть нормально, на самом деле. И там должен быть TYWE3S…
Где-то тут меня начало переклинивать и я начал пытаться понять – есть ли отличие "Hiper IoT IR v2", который я купил на озоне, от "Hiper IoT IR2"? Понять толком не удалось, но упаковки у них разные…
IR2 выглядит так.
И продаётся в МВидео.
https://www.mvideo.ru/products/universalnyi-umnyi-pult-hiper-iot-ir-2-hi-ir2-50134864
Это скриншот со страницы товара.
А IRv2, который я купил, выглядит так.
Может быть это знак? Знак того, что в МВидео завалялись старые версии? Те ещё барахольщики…
Ладно, попробую купить там, посмотреть.
Приехала. Из МВидео. Всё равно IRv2, вместо IR2.
Но при этом упаковка другая. И другой номер модели… P/N HP22010000ST, против HP2306000LMD, который был в версии из ozon (которую я уже выкинул). Может случится чудо?
И чудо случилось!!! Внутри этого барахла оказался TYWE3S.
Ну ладно, хотя бы что-то. Хоть какое-то движение вперёд. Начну прошивать. Посмотрим, как дело пойдёт на этот раз.
И дело… не пошло. Три часа я пытался прошить этот модуль. Что я только не пытался сделать, как я не пытался лучше или хуже перепаять контакты, подать внешнее питание, внутреннее. Ничего. Не шьётся и всё тут.
Уже почти сдавшись и приготовившись идти покупать Zennio IRSC, я решил попробовать заменить Serial TTL converter на другой. До этого я шился с помощью HW-597 (на базе CH340G), который (вроде как) считается лучшим. Да и CB3S им нормально прошился…
Но от безысходности решил попробовать другой. Взял CP2102. И… И всё прошилось с первой попытки. Я даже не поверил в это. Перепрошил ещё раз. Ещё раз. Всё заработало. Я не знаю что это было. Но здесь я об этом написал хотя бы для того, чтобы в следующий раз начать сразу с CP2102.
Прошилось. Да, теперь было всё просто, по изначальной инструкции от avstepanov. Добавлю, что в таком варианте прошивки мне даже не понадобилось внешнее питание. Питания TTL converter вполне оказалось достаточно.
Паяемся напрямую к модулю вот по этой схеме и дальше всё случается само собой.
Ну а дальше? А дальше простая и понятная tamota-ir.bin цепляется на mqtt-сервер, и без какой-то помощи начинает туда передавать более чем адекватные команды с IR-приёмника с пульта кондиционера GREE. Выглядит приблизительно так:
{
"IrReceived" : {
"Data" : "0x39066050062000B0",
"Repeat" : 0,
"IRHVAC" : {
"iFeel" : "Off",
"Turbo" : "Off",
"Celsius" : "On",
"FanSpeed" : "Max",
"Light" : "On",
"SwingV" : "Lowest",
"Vendor" : "GREE",
"Mode" : "Cool",
"Clean" : "Off",
"Command" : "Control",
"SwingH" : "Off",
"Filter" : "Off",
"Beep" : "Off",
"SensorTemp" : null,
"Econo" : "Off",
"Quiet" : "Off",
"Sleep" : -1,
"Model" : "YAW1F",
"Temp" : 22,
"Power" : "On"
},
"Bits" : 64,
"Protocol" : "GREE"
}
}
А для того, чтобы что-то послать в кондиционер – даём команду похожую на это:
send_mqtt_message.pl "dirty:tasmota/tasmota_F7D397/cmnd/irhvac" '{"Vendor":"GREE","Model":"YAW1F","Command":"Control","Mode":"Cool","Power":"On","Celsius":"On","Temp":20,"FanSpeed":"Max","SwingV":"High","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}'
И о чудо! Кондиционер включается и делает именно то, что написано в команде.
Осталось сделать нормальное внешнее питание для пульта "Hiper IoT IR v2", и пожелать ему долгой и счастливой жизни.
DC-DC converter 12 -> 5VDC, плюс магнит для фиксации.