Для очередной автоматизации мне потребовалось реле, которое поддерживает управление по протоколу MQTT и через Web API. Рассмотрев различные варианты, я остановился на готовом устройстве и перепрошил его под свои нужды. В этой статье расскажу, как это сделал.
Самый очевидный путь — собрать устройство самостоятельно на базе микроконтроллера ESP8266 или ESP32, добавив к нему модуль реле и блок питания на 5 вольт. Однако в таком случае потребовался бы еще и отдельный корпус. Как ни компонуй детали, итоговая конструкция получается довольно громоздкой, поэтому я решил пойти другим путем и присмотрелся к готовым промышленным решениям.
Я начал изучать ассортимент интернет-магазинов в поисках компактного Wi-Fi реле. Такие устройства уже содержат всё необходимое: встроенный блок питания, реле и микроконтроллер с Wi-Fi-модулем внутри. Мое внимание привлекла модель SmartMaxi SM-DIY-16. Это российское устройство китайской сборки, которое стоило недорого. В отзывах покупателей были фотографии внутренней платы, и на одном из снимков я разглядел маркировку установленного Wi-Fi-модуля — wb2s. Я быстро нашел даташит на этот модуль и выяснил, какой микроконтроллер в нем используется. Им оказался чип Open Beken BK7231T.
Заказал пару экземпляров для экспериментов.
Стоит сказать несколько слов о самом модуле. Вот его основные технические характеристики:
| Параметр | Значение |
| Микроконтроллер | Open Beken BK7231T (32-битное ядро ARM Cortex-M4F) |
| Тактовая частота | до 120 МГц |
| Память | 2 МБ встроенной Flash, 256 КБ SRAM |
| Wi-Fi | 802.11 b/g/n, 2.4 ГГц |
| Интерфейсы | UART, SPI, I2C, PWM, ADC |
| Напряжение питания | 3,0–3,6 В (номинально 3,3 В) |
| Потребляемый ток | до 300 мА в режиме передачи |
Модуль выполнен в компактном форм-факторе и имеет распаянные контакты TX, RX, GND и 3,3 В, что делает его удобным для подключения к компьютеру и перепрошивки.
Получив заказ, я сразу вскрыл устройство. Сборка оказалась аккуратной. Важное отличие от многих аналогичных Zigbee-реле: здесь установлено полноценное электромеханическое реле, рассчитанное на ток до 16 ампер. В дешевых аналогах часто используют миниатюрные реле, на которые и 2 ампера страшно подавать.
Из коробки устройство работает с облачной платформой Tuya через приложение SmartLife. Однако у облачного управления есть ряд недостатков, которые меня не устраивают:
- задержки — команда проходит через внешний сервер, что добавляет лаг;
- требуется постоянный доступ в интернет, без выхода в сеть устройство не управляется;
- зависимость от стороннего сервера — если у Tuya возникают проблемы, реле перестает работать;
- Tuya нестабильно интегрируется с локальными домашними серверами вроде Home Assistant.
Поэтому я принял решение перепрошить реле, чтобы оно работало полностью локально и независимо от облаков.
Мне нужна была прошивка с поддержкой MQTT, Web API и возможностью гибкой настройки. Оптимальным вариантом оказался Tasmota — популярная открытая прошивка для устройств автоматизации. Для чипа BK7231T я нашел готовую сборку. Для прошивки я использовал программу BK7231 Easy UART Flasher. Это удобный инструмент, который объединяет в себе несколько функций: создание резервной копии заводской прошивки, чтение настроек устройства, автоматическую загрузку подходящего бинарного файла из интернета и непосредственно прошивку микроконтроллера.
Я выпаял модуль WB2S из платы реле и припаял к нему переходник USB-TTL, после чего подключил к ноутбуку.
При попытке чтения программа начала выдавать ошибки и не могла определить подключенный контроллер. Причина выяснилась быстро: модуль оказался довольно прожорливым по питанию, и мощности, которую давал USB-TTL переходник, оказалось недостаточно для стабильной работы. Я решил вопрос просто: подал напряжение 3,3 вольта на вывод VBAT модуля с лабораторного блока питания. После этого программа без проблем сделала бэкап заводской прошивки и залила бинарник с Tasmota.
Кстати, эта программа универсальна и позволяет прошить в Tasmota большинство распространенных китайских Wi-Fi модулей. Вот список поддерживаемых контроллеров:
BK7231T, BK7231U, BK7231N (T2, T34), BK7231M, BK7236 (T3), BK7238 (T1), BK7252, BK7252N (T4), BK7258 (T5), RTL8710B (AmebaZ), RTL87XOC (AmebaZ2), RTL8720DN (AmebaD), LN882H, LN8825, BL602, BL702, ECR6600, W800, W600 (write), RDA5981, TR6260, Beken SPI CH341, Generic SPI CH341, ESP32, ESP32-SB, ESP32-C3, ESP8266.
Прошитый модуль я вернул на место и подал питание на реле. В списке доступных Wi-Fi сетей появилась точка доступа с именем, начинающимся на OpenBK7231T_. Я подключился к этой сети со смартфона, открыл браузер и перешел по адресу 192.168.4.1. На открывшейся странице зашел в раздел Config, затем в подраздел настройки Wi-Fi, ввел данные своей домашней сети и нажал Submit. Устройство перезагрузилось и подключилось к моему роутеру.
Для корректной работы реле необходимо указать, какие физические порты за что отвечают. Я нашел IP-адрес устройства в интерфейсе роутера, перешел по нему в веб-интерфейс и снова зашел в Config, а затем в Configure Module. В моем экземпляре устройства задействованы три порта:
- P6 — на нем висит реле. В выпадающем меню я выбрал Rel и указал 1;
- P7 — светодиод. Тут можно выбрать по желанию либо отображение состояния реле (LED_n, 1), либо индикацию подключения к Wi-Fi (WIFILED_n);
- P11 — кнопка. Я выбрал Btn и указал 1, чтобы по нажатию реле включалось и выключалось.
После выбора параметров я нажал кнопку Save внизу страницы.
Если требуется управление через MQTT, в настройках нужно зайти в раздел Configure MQTT. Здесь всё просто: вводишь адрес MQTT-брокера, логин, пароль и другие параметры, затем нажимаешь Submit. Для интеграции с Home Assistant предусмотрен раздел Home Assistant Configuration, где достаточно нажать кнопку Start Home Assistant Discovery, после чего реле автоматически обнаружится в системе умного дома.
Управлять реле через Web API можно простыми HTTP-запросами. Команды вводятся прямо в адресной строке браузера:
- Переключить (вкл/выкл): http://IP/cm?cmnd=Power%20Toggle>
- Включить: http://IP/cm?cmnd=Power%20On>
- Выключить: http://IP/cm?cmnd=Power%20Off>
- Узнать статус: http://IP/cm?cmnd=Power>
Здесь IP — это адрес вашего реле в локальной сети.
Стоимость реле SmartMaxi SM-DIY-16 составила всего 449 рублей. За эти деньги я получил компактное устройство с качественным 16-амперным реле, которое после перепрошивки работает полностью локально, не требует интернета и легко интегрируется в любую систему автоматизации через MQTT или Web API. Покупкой я остался доволен, а процесс перепрошивки оказался несложным благодаря удобной программе BK7231 Easy UART Flasher и готовой сборке Tasmota.
| Программма BK7231 Easy UART Flasher | 📥 Скачать |
| Прошивка OpenBK7231T_UA_1.18.277.bin | 📥 Скачать |