Всем привет!
Есть статья без болтологии, для тех кто в теме: тут
Некоторое время назад благодаря сообществу пепперчан я зачем-то стал обладателем умного удлинителя от компании EKF модели Connect PRO Wi-Fi под кодовым названием RCE-2-WF.
С учетом того, что дома у меня достаточно много умных устройств, управляемых Home Assistant с пробросом в УД от Яндекс, я надеялся приспособить и удлинитель, хотя до него была одна редко используемая розетка Xiaomi Smart Plug, которая кочевала из комнаты в комнату. Также печалил тот факт, что это очередное устройство облачного сервиса и для подключения к Home Assistant требовалось облако от EKF/Tuya/Яндекса или вместе их взятых. Меня такой расклад не устроил и я решил найти способ подружить удлинитель с Home Assistant по локальной сети. А потому, вооружившись инструментом, принялся ковырять девайс.
Как позже выяснилось, за управление удлинителем и его связь с внешним миром отвечает модуль CBU на базе чипа Beken BK7231N, разработанный компанией Tuya, а за энергомониторинг - распространённая микросхема BL0942 от Shanghai Belling. Коммутацию розеток и блока USB обеспечивают четыре реле AFE BPD-SS112DM и одно реле Hongfa HF3FA соответственно.
Опираясь на полученные данные, путем недолгого гугления, нашлось два варианта для переезда удлинителя в локалку: прошивки от OpenBeken и ESPHome. Я опробовал оба варианта и оба без проблем работают с Home Assistant, но ESPHome все-таки "ближе", поэтому далее об этом фреймворке.
Все операции выполняем на обесточенном удлинителе!!!
Для разборки корпуса потребуется длинная Y-бита (Tri-Wing) #1, в простонародье - "секретка", чтобы открутить 4 винта, удерживающих нижнюю крышку. У меня уже был набор секреток, в котором оказалась нужная бита, поэтому сюрприз от EKF не удался. Далее, пластиковой карточкой или плоским спунжером отщелкиваем крышку по всему периметру и добираемся до интересующих нас внутренностей. На этом этапе важно запомнить или сфотографировать внутрятку, чтобы не было проблем со сборкой.
Откручиваем фиксатор провода с евровилкой, снимаем с платы центральное реле, отвечающее за USB, и отсоединяем шлейф с 5-пиновым разъемом. Затем все той же пластиковой карточкой прорезаем герметик в местах, где он соприкасается с корпусом, выкручиваем два винтика и аккуратно извлекаем плату, подтягивая основной провод внутрь корпуса.
На оборотной стороне платы распаян виновник сего мероприятия - CBU модуль. Для дальнейшей работы с ним потребуются: паяльник с расходниками, острый пинцет или разогнутая скрепка, длинные провода с разъемами dupont папа-мама, USB-UART преобразователь (для нашей цели отлично подходит недорогой программатор CH341A/B с регулятором напряжения AMS1117, которой способен тянуть модуль по питанию) и программа ltchiptool. Если есть простенький usb-uart преобразователь, типа CH340G, то и такой сойдёт, но для CBU придется организовать дополнительное питание 3.3 В, например, DC-DC конвертером или модулем питания макетной платы, кстати макетка тоже может пригодиться. Ну и соответственно схемы подключения будут немного отличаться.
Далее определяемся с нужными пинами CBU, их немного - VCC (3V3), GND, RX1, TX1 и CEN. Последний из них служит для перезагрузки модуля, т.е. при замыкании CEN на землю (GND) CBU уходит в ребут. Ниже оставлю распиновку:
При использовании CH341A/B убеждаемся, что перемычка переключения режимов работы программатора установлена на 2-3 пины, подпаиваем провода с dupont к модулю и подключаем их по схеме CBU<-->CH341: VCC<-->3.3, GND<-->GND, TX1<-->RX, RX1<-->TX. Если провода не жалко, советую откусить разъемы "папа" и подпаиваться к CBU без них, так меньше шанс в процессе манипуляций что-то оторвать.
Если пользуетесь простым USB-UART преобразователем, то подключаем немного иначе. Соединяем выводы CBU<-->USB-UART, как GND<-->GND, TX1<-->RX, RX1<-->TX, а дополнительное питание (ext_pow): CBU-VCC<-->ext_pow-3.3, CBU-GND<-->ext_pow-GND. Таким образом GND должна получится общей.
Подготовим прошивку ESPHome. Сразу уточню, речь пойдет о ESPHome в качестве аддона Home Assistant.
Создаем новое устройство: указываем имя, параметры Wi-Fi, если не делали это ранее, а когда предложит подключить устройство по USB - жмете Skip, выбираете esp8266 и снова Skip.
Должно появиться новое устройство, нажимаем Edit и содержимое конфигурационного файла заменяем следующим кодом:
Можно было сделать и проще, через File Editor или VS Code в директории esphome создать yaml-файлик и записать в него вышеуказанное содержимое, ну да ладно.
В коде раздел #Naming, network подгоняем под себя, не забывая, что ESPHome использует свой файл secrets.yaml:
После внесения нужных изменений сохраняем и закрываем файл, в карточке устройства жмем три точки -> Validate, убеждаемся, что все в порядке и выбираем Install. Затем Manual Download, ждем компиляции и на следующем шаге UF2 package.
Браузер подкачнет файл с расширением .uf2, он-то нам и нужен. Желательно сохранить его по короткому пути не содержащему кириллицу.
Запускаем ранее скачанную программу ltchiptool, подключаем программатор, (в случае с USB-UART и дополнительным питанием сначала вставляем USB-UART, затем запитываем модуль). В программе должен отразиться COM-порт, выставляем скорость порта 115200, переключаем режим, как Read flash и в строке Output file указываем файл, в который сохранятся считанные данные, тем самым сделаем резервную копию текущей прошивки, нажимаем Start. Теперь неспеша, т.к. программа в режиме ожидания, пинцетом замыкаем пин CEN на металлическую крышку - она соединена с GND, модуль перезагрузится и начнется процесс считывания прошивки. Если процесс не стартанул, придется обесточить модуль, аккуратно переподключив пин 3.3 В со стороны программатора или дополнительного питания.
Резервную копию моего модуля можно скачать здесь.
После успешного создания дампа переключаем в программе радио-кнопку на режим Write flash / identify file, через кнопку Browse в строке Input file выбираем скачанную ранее прошивку .uf2, нажимаем Start и снова перезагружаем модуль вышеописанным танцем.
Когда заливка прошивки завершится, перезапускаем модуль и проверяем вышел ли он на связь в ESPHome - цвет фона карточки устройства сменится с красного на белый, тут же можно через кнопку Visit зайти в web-интерфейс. В web-морде должны определиться свитчи, сенсоры и кнопки, некоторые будут недоступны и это нормально.
Отключаем программатор, преобразователь, питание; отпаиваем провода и собираем удлинитель. Все программные доработки можем проводить с помощью OTA-обновлений.
Из реализованного в прошивке: Включение/выключение всех реле по кнопке, из web-интерфейса, из HA c задержкой в 30 мс (включенные выключаются, затем включаются все), индикация состояния реле светодиодом в кнопке, восстановление состояний реле после перебоя, возможность перезагрузки контроллера из web-интерфейса или HA и энергомониторинг (ток, напряжение, мощность, расход электроэнергии).
Программная защита по превышению тока и высокому/низкому напряжению, как это сделано в стоке, пока что отсутствует, но реализовать возможно.
Я доволен девайсом, единственное, что меня бы остановило от последующих покупок этого удлинителя, если возникнет такая необходимость, так это РРЦ от EKF в размере 3749 руб. - считаю дорого! Ловите скидки!
На этом пока всё. Буду рад вопросам, конструктивным замечаниям и помощи в допилинге и оптимизации прошивки. Успехов!
Тэги: #прошивка, #умный удлинитель, #ekf, #ekf connect, #rce 2 wf, #esphome, #home assistant, #умный дом, #Алиса, #OpenBeken, #Tuya, #Beken, #firmware, #розетка