В моей квартире уже давно используются умные сенсорные выключатели с поддержкой ZigBee. Такой вариант был выбран не случайно: в монтажных коробках выключателей отсутствует нейтральный провод, а приобретённые модели умеют работать без нейтрали.
Первоначально такая схема меня полностью устраивала. Выключатели работают через ZigBee-шлюз SLS, а тот передаёт управление в мой сервер умного дома Home Assistant.
Однако со временем у этой системы обнаружились два недостатка. Первый связан непосредственно с особенностями ZigBee-сети, второй — с конструкцией самих выключателей.
Почему возникло желание отказаться от ZigBee
ZigBee — это ячеистая сеть, которая самостоятельно управляет своей топологией. Устройства могут менять маршруты, подключаться через соседние узлы и перестраивать сеть без непосредственного участия пользователя.
В большинстве случаев это является преимуществом. Но полностью контролировать происходящее внутри ZigBee-сети невозможно. Иногда отдельное устройство становится недоступным. Происходит это нечасто, но сам факт периодически возникающей недоступности меня не особенно устраивал.
Для обычного датчика подобная ситуация может быть практически незаметной. А вот выключатель — совсем другое дело. Если физическая кнопка должна включить свет здесь и сейчас, хотелось бы иметь максимально предсказуемую систему.
Но главная проблема моих выключателей оказалась вообще не связана с ZigBee.
Реле, которое стало слабым местом
В используемых мной выключателях применены реле с двумя устойчивыми состояниями. По принципу работы они очень интересны.
Реле не требует постоянного питания для удержания контактов. Для переключения достаточно короткого импульса, после чего оно остаётся в установленном состоянии без дальнейшего потребления энергии.
Для умного выключателя это практически идеальная характеристика:
- реле не потребляет энергию во включённом состоянии;
- не потребляет её и в выключенном состоянии;
- управляющая электроника выдаёт только короткий импульс;
- при отключении питания состояние реле сохраняется.
Но спустя некоторое время эксплуатации именно это достоинство превратилось в проблему.
Реле начали периодически зависать во включённом состоянии.
Причём программная команда на выключение при этом уже не помогала. Единственным способом вернуть реле в нормальное состояние было постучать по корпусу выключателя.
Причём для этого выключатель приходилось вынимать из монтажной коробки.
Замена реле проблему не решила
Первой мыслью была неисправность самих реле. Я заменил их — но проблема осталась.
При проверке отдельно от выключателя реле прекрасно работало от внешнего источника питания. Это заставило искать причину уже не в механике реле, а в схеме его управления.
Похоже, проблема связана с тем, что для надёжного переключения реле необходим достаточно определённый импульс, а в реальной схеме выключателя он получается слишком коротким или недостаточным по энергии.
Я даже заказал такие же выключатели у другого продавца, рассчитывая, что проблема могла быть связана с конкретной партией компонентов.
Результат оказался тем же.
Через некоторое время реле второго выключателя также начало зависать во включённом состоянии.
В итоге стало понятно, что это не случайный дефект одного экземпляра, а конструктивная особенность, с которой я больше не хотел мириться.
Почему я начал смотреть в сторону Wi-Fi
Wi-Fi-выключатели я рассматривал уже давно. Главным условием оставалось одно: они также должны работать без нейтрали.
На маркетплейсах таких моделей достаточно много. При этом хотелось найти не просто очередной облачный выключатель, а устройство, которое можно полностью подчинить локальной системе умного дома.
В итоге моё внимание привлекли сенсорные выключатели INLY.
Внешне они практически не отличались от уже установленных у меня ZigBee-выключателей. Сенсорная панель, размеры и общий внешний вид были привычными.
Для начала я заказал две модели — одноклавишную и двухклавишную. На ОЗОНЕ они представлены 1, 2, 3 клавишные, белые, серебристые и чёрные.
Но после получения решил не устанавливать их сразу, а сначала разобраться, что находится внутри.
Что обнаружилось внутри
После разборки выяснилось, что выключатели построены на Wi-Fi-модуле WB03A.
А внутри самого WB03A используется микроконтроллер LN882H.
Это оказалось особенно интересно, поскольку LN882H уже хорошо изучен энтузиастами альтернативных прошивок, а для устройств на его основе существует OpenBeken.
По сути, OpenBeken можно рассматривать как альтернативную универсальную прошивку для подобных IoT-устройств — примерно в той же концепции, в которой для ESP8266/ESP32 используется Tasmota.
Прошивка предоставляет веб-интерфейс, через который можно настроить назначение выводов микроконтроллера и работу подключённой периферии.
При этом устройство можно полностью использовать в локальной сети, без необходимости связываться с облаком производителя.
Что даёт OpenBeken
После установки альтернативной прошивки выключатель перестаёт быть привязанным к штатной экосистеме производителя.
Основные возможности, которые в данном случае представляют интерес:
- локальное управление через веб-интерфейс;
- работа без внешнего облака;
- MQTT для обмена данными с сервером умного дома;
- интеграция с Home Assistant посредством MQTT Discovery;
- настройка реле и других подключённых элементов;
- работа с PWM;
- подключение датчиков и счётчиков;
- создание собственных сценариев с использованием "autoexec.bat".
Таким образом, обычный серийный Wi-Fi-выключатель превращается в достаточно универсальное локальное устройство, которое можно самостоятельно интегрировать в Home Assistant.
Перепрошивка выключателя
Для прошивки потребуется USB/TTL-переходник с логическими уровнями 3,3 В.
Здесь есть один важный нюанс.
На плате выключателя действительно присутствуют контакты, обозначенные как RX и TX. На первый взгляд кажется, что достаточно подключить к ним USB/TTL-переходник и начинать прошивку.
В моём случае это оказалось не так.
Эти контакты не были непосредственно подключены к выводам самого Wi-Fi-модуля. Поэтому для прошивки пришлось подключаться непосредственно к контактам WB03A.
Кроме того, необходимо вывести модуль в режим программирования. Для этого к соответствующему выводу модуля припаивается дополнительный провод, который используется только на время прошивки.
При работе с платой необходимо соблюдать осторожность. Выключатель является сетевым устройством, поэтому при подключении к сети 230 В одновременно подключать USB/TTL-переходник к компьютеру нельзя. Для прошивки плата должна быть обесточена от сети.
Прошивка LN882H
Для загрузки прошивки можно использовать BK7231Flasher.
После подключения USB/TTL-переходника программа определяет доступный последовательный порт.
В программе необходимо выбрать соответствующий чип LN882H, после чего загрузить актуальную версию прошивки и запустить процесс записи.
Сама процедура занимает совсем немного времени — примерно минуту.
После завершения прошивки USB/TTL-подключение и временные провода необходимо удалить, после чего выключатель можно собрать.
Первое включение
После первого запуска прошитый выключатель не подключён к домашней Wi-Fi-сети. Он создаёт собственную точку доступа.
Подключаемся к этой сети со смартфона или компьютера и открываем в браузере:
192.168.4.1
Откроется интерфейс настройки устройства.
Здесь необходимо указать параметры домашней Wi-Fi-сети.
После сохранения настроек выключатель перезагрузится и подключится к домашней сети.
Следующий шаг — определить IP-адрес, который роутер выдал устройству. Это можно сделать непосредственно в интерфейсе роутера либо с помощью любого сканера локальной сети.
После этого веб-интерфейс выключателя уже доступен по его локальному IP-адресу.
Настройка выводов
Первое, что необходимо сделать после подключения устройства к домашней сети, — настроить назначение выводов микроконтроллера.
Для этого открываем:
Config → Configure Module
Здесь необходимо указать, какие выводы используются для реле, сенсорных кнопок, светодиодов и других элементов конкретной модели выключателя.
Это важный этап, поскольку одна и та же прошивка может работать с большим количеством различных устройств, а распиновка и назначение GPIO у них отличаются.
Поэтому настройки необходимо подбирать именно под конкретную плату выключателя.
Подключение к Home Assistant
Следующий этап — настройка MQTT.
В разделе:
Config → Configure MQTT
указываем параметры MQTT-сервера:
- адрес сервера;
- порт;
- имя пользователя;
- пароль;
- необходимые параметры подключения.
После подключения к MQTT выключатель получает возможность обмениваться командами и состояниями с сервером умного дома.
В моём случае MQTT-сервер используется как связующее звено с Home Assistant.
При использовании MQTT Discovery устройство может автоматически появиться в Home Assistant, после чего реле и другие доступные функции можно использовать в автоматизациях и сценариях.
В результате получается полностью локальная цепочка:
сенсорный выключатель → Wi-Fi → MQTT → Home Assistant
Без необходимости использовать сервер производителя выключателя.
А что если заменить WB03A на ESP-12F?
Здесь обнаружилась ещё одна интересная особенность.
По размерам и расположению выводов модуль WB03A практически совпадает с распространённым ESP-12F.
Это открывает гораздо больше возможностей.
ESP-12F — один из наиболее распространённых Wi-Fi-модулей на базе ESP8266. Для него существует огромное количество готовых прошивок и проектов.
Например:
- Tasmota;
- ESPHome;
- WiFi-iot;
- собственные прошивки на Arduino;
- различные MQTT-решения.
То есть сама конструкция выключателя потенциально позволяет рассматривать WB03A не как обязательную часть устройства, а как сменный вычислительный модуль.
Это особенно интересно для экспериментов.
Почему ESP-12F интереснее
Основное преимущество ESP-12F — не только распространённость самого модуля, но и огромное количество уже существующих инструментов.
Для него давно существуют готовые библиотеки, примеры, прошивки и документация.
В Tasmota и WiFi-iot, например, помимо MQTT доступно управление через HTTP API.
Это позволяет обращаться к устройству непосредственно по сети: получать его состояние и отправлять команды обычными HTTP-запросами.
Для локального умного дома это даёт ещё один вариант взаимодействия с устройством.
Кроме того, для ESP8266 существует огромное количество примеров программ, которые можно адаптировать под конкретный выключатель. А современные инструменты генерации кода позволяют достаточно быстро написать собственную прошивку под нестандартную задачу.
Что получилось в итоге
Изначально я искал всего лишь замену своим ZigBee-выключателям.
Причиной стали две проблемы: периодическая недоступность отдельных устройств в ZigBee-сети и, что гораздо важнее, зависание бистабильных реле в самих выключателях.
В результате обычный поиск Wi-Fi-выключателя привёл к гораздо более интересному варианту.
Аппаратная часть INLY оказалась построена на распространённом модуле WB03A с микроконтроллером LN882H, для которого существует альтернативная прошивка OpenBeken.
После перепрошивки выключатель можно использовать как полностью локальное устройство, подключённое к MQTT и Home Assistant.
А возможность заменить WB03A на ESP-12F потенциально открывает ещё больше вариантов — от Tasmota и ESPHome до собственной прошивки.
Для меня это оказалось гораздо интереснее, чем просто заменить один готовый выключатель на другой. Получается устройство, аппаратную часть которого можно оставить практически без изменений, а программную составляющую полностью изменить под собственную систему умного дома.
| Программма BK7231 Easy UART Flasher | 📥 Скачать |
| Прошивка OpenLN882H_1.18.313.bin | 📥 Скачать |