От ZigBee к Wi-Fi: переделка сенсорных выключателей INLY на OpenBeken

В моей квартире уже давно используются умные сенсорные выключатели с поддержкой 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 📥 Скачать