Статья

Интеграция светодиодной люстры с пультом в Home Assistant

Предисловие

Некоторое время назад я увлекся темой умного дома. В процессе ремонта я специально подбирал умные светильники для всех помещений в квартире: точечные светильники Philips downlight в коридор, ванную и кухню, Yellight с фоновой подсветкой в спальню. Остальные источники света управляются с помощью выключателей от Aqara, либо посредством реле той же фирмы. Все это замечательно интегрировалось в Home Assistant. Однако, для гостиной был куплен светодиодный светильник от российской фирмы (скорее всего китайской сборки) с регулировкой яркости и теплоты света. Оснащается RF пультом, что не позволяет использовать для управления универсальный ИК-передатчик от Xiaomi.

Практика показала, что пультом мы практически не пользовались, он постоянно не под рукой или вообще куда-то завалился. Очень хотелось, чтобы и этим светильником можно было управлять из общего интерфейса Home assistant и использовать в автоматизациях. Поиск решений в интернете не принес результата, так что было принято решение делать все самостоятельно.

Попытка реверс-инжиниринга

Как это можно сделать?

Сначала думал перехватить, а после - подменить сигнал управления. Драйвер люстры имеет маркировку Bluetooth и RF2.4G. Официально заявленного приложения для телефона от производителя не существует. Попытка использовать приложение от подобных драйверов с Aliexpress не увенчалась успехом - люстра не реагировала на Bluetooth. Для работы по RF на самом драйвере и в пульте стоят микросхемы, которые очевидно связываются между собой, но маркировка на них отсутствует. Протокол их работы остается загадкой. Я даже написал в техподдержку, но ожидаемо в ответ тишина.

Был приобретен тот самый драйвер с АЛИ для экспериментов, чтобы попытаться подружить его с модулем ESP8266, а именно, установить Wemos D1 mini вместо приемной и управляющей микросхемы или платы. Но продавец не положил в комплект пульт ДУ, поэтому отследить сигналы управления не получилось. Понять, как работает драйвер "вслепую", у меня не хватило знаний... Поэтому переходим к следующему этапу.

Родной драйвер
Драйвер с Али

По простому пути

Решил просто эмулировать нажатие кнопок на родном пульте ДУ. Разобрал пульт, прозвонил и нарисовал схему. Оказалось, что каждое нажатие на кнопку - это замыкание между собой двух ножек микросхемы.

Вот так выглядит пульт внутри. Возле кнопок есть маркировка, какие ножки микросхемы замыкаются.
Табличка для наглядного отображения и распиновка микросхемы.

Чтобы замыкать контакты с помощью ESP, необходимо использовать реле, либо оптопары. Слушать постоянные щелчки конечно же не хотелось, поэтому приобрел на Али модуль с восемью транзисторными оптопарами. Без доработки напильником не обошлось: с модуля для удобства подключения были выпаяны все клеммы, на входе напаяны штырьки, контакты "земли" соединены между собой. На выходе также припаяны штырьки к контактам V1-V8, на контактах G штырьки уже были - для замыкания перемычкой на общую землю.

Еще пришлось уменьшить номинал резисторов на выходе, иначе было очень большое сопротивление и нажатие не срабатывало.

Резисторы выпаивать не стал, просто припаял навесным монтажом 100 Ом параллельно (резисторы рядом с красными перемычками). Родные стоят 3 КОм, в параллели стало 97 Ом.

Далее снимаем все перемычки, кроме последней. Она нам понадобится для подачи питания на сам пульт. Это необходимо, потому что во время инициализации Wemos на некоторых пинах уже есть 5 вольт, а такие паразитные нажатия нам ни к чему. В коде программы установим задержку на подачу напряжения на пульт.

Собираем по схеме:

На самом пульте я аккуратно ножиком зачищал дорожки, идущие к микросхеме, лудил и припаивался проводом с ответной частью к штырьку.

Пишем программу для Wemos под ESPHome.

esphome: name: lustra platform: ESP8266 board: d1_mini on_boot: - delay: 5s - switch.turn_on: lustra_remote_power # Enable logging logger: baud_rate: 0 # Enable Home Assistant API api: password: "pass" ota: password: "pass" web_server: port: 80 wifi: ssid: "ssid" password: "pass" # Включить точку доступа если не подключится к WiFi ap: ssid: "Lustra Fallback Hotspot" password: "pass" captive_portal: sensor: - platform: wifi_signal # Уровень Wi-Fi сигнала положительным числом name: "signal_lustra" update_interval: 60s filters: - lambda: return x * (-1); #------------------------------------------------------------------------------ - platform: uptime # Время работы после последней перезагрузки name: uptime_lustra id: uptime_lustra switch: # на каждую кнопку после включения после 0.5 секунд отключается - platform: gpio pin: GPIO1 id: lustra_power_off name: "Power OFF" icon: "mdi:ceiling-light-outline" on_turn_on: - delay: 500ms - switch.turn_off: lustra_power_off - platform: gpio pin: GPIO3 id: lustra_power_on name: "Power ON" icon: "mdi:ceiling-light" on_turn_on: - delay: 500ms - switch.turn_off: lustra_power_on - platform: gpio pin: D3 id: lustra_brig_up name: "Brightness UP" icon: "mdi:ceiling-light-outline" on_turn_on: - delay: 500ms - switch.turn_off: lustra_brig_up - platform: gpio pin: D4 id: lustra_brig_down name: "Brightness DOWN" icon: "mdi:ceiling-light-outline" on_turn_on: - delay: 500ms - switch.turn_off: lustra_brig_down - platform: gpio pin: D5 id: lustra_light_colder name: "Colder" icon: "mdi:ceiling-light-outline" on_turn_on: - delay: 500ms - switch.turn_off: lustra_light_colder - platform: gpio pin: D6 id: lustra_light_hotter name: "Hotter" icon: "mdi:ceiling-light-outline" on_turn_on: - delay: 500ms - switch.turn_off: lustra_light_hotter - platform: gpio pin: D7 id: lustra_connect name: "Connect" icon: "mdi:ceiling-light-outline" on_turn_on: - delay: 500ms - switch.turn_off: lustra_connect - platform: gpio pin: D8 id: lustra_remote_power name: "Remote power" icon: "mdi:remote"

Не забываем менять пароли на свои. Алгоритм работы программы такой:

Через 5 секунд после включения, замыкается оптрон №8, подавая напряжение на пульт. Далее, нажимая на любой из переключателей, он отключится автоматически через 0.5 секунды, эмулируя одно нажатие пальцем. Кнопка, подключенная к D7, отвечает за подключение пульта к люстре. Ее нужно зажимать, поэтому она автоматически не отключается.

После перезагрузки, в Home assistant отображаются следующие сущности:

Заключение

Работа получившегося изделия меня полностью устраивает, теперь регулярно пользуемся всеми возможностями люстры, так как телефон всегда под рукой.

В процессе эксплуатации стало понятно, что эмулировать нажатия кнопок ON и OFF на пульте совершенно ни к чему - обратной связи нет и я не могу знать, включена ли люстра, если я не нахожусь рядом. Для включения/выключения люстры используется обычный выключатель Aqara. Так мне всегда наглядно видно в интерфейсе, работает люстра или нет.

Таким образом, на будущее если освободится два оптрона, думаю стоит использовать их под кнопки ночника и максимальной яркости.

Вот так выглядит карточка в интерфейсе HASS:

Несколько фотографий конечного устройства и расположения. В этой мини полочке в верхнем шкафчике кухни еще блок питания для подсветки кухни, реле для ее включения. На Wemos сидит еще дисплей 16х2 с отображением количества использованной фильтрованной воды за текущие сутки и датчик включения подсветки кухни. Но это уже не относится к теме управления люстрой. Если интересно - пишите, расскажу подробнее.

Моя первая статья и первое самостоятельное изделие для умного дома.

Спасибо за прочтение!


Недавно пробовал подобное подключать, тоже ноги на микросхеме пульта замыкал. Сначала через NPN транзисторы пробовал - работает. Что-то не понравилось не помню. Поменял на N-каналы - работает. Потом попробовал напрямую, прямо с контактов еспэшки на контакты микросхемы, через 1 ком поставил - работает. Походу все это ни к чему, колхоз, напрямую нормально. Уже пол года без сбоев. 

Вы на один контакт микросхемы подаёте +5 вольт? А если замыкаете две ноги напрямую с есп, прошу рассказать как, очень интересно.

Не совсем понял вопрос. Ну примерно как у вас и описано. У меня не нужно было две ноги пульта замыкать, каждую ногу на землю сажалось, ну или pullup  подтяжка и нулем управлять. Ну а если одновременно две ноги пульта, то можно отдельную кнопку создать, чтобы два сразу нажимала. Ну или две кнопки зажать, вы ведь так делаете?

Очень неплохо для первой статьи. Но я бы все-таки доковырял драйвер либо пошел по простому пути - поставил другой драйвер, что-то вроде диммера Shelly либо zigbee/wifi драйвера для светодиодных лент (в зависимости от того, на какое напряжение рассчитаны светодиоды. Судя по драйверу с али, там все-таки вольт 24).

Спасибо! Нет, посмотрите на фото родного драйвера, там напряжение вывода 120-205 вольт постоянки. А таких я не находил с wifi / zigbee. Но мне в личку написал человек с комментариями, как раз подсказал, куда копать, чтоб подключить есп прямо к микросхемам драйвера. Думаю попробовать, если получится - будет действительно элегантное решение с минимумом колхоза.

Интересна эта история с комментариями. Тоже есть такая люстра с пультом на 2,4, которая никуда не интегрируется. С подобным напряжением на выходе с драйвера, 60-100В где-вроде бы... Поделитесь подробностями?

Обязательно, если получится сделать. 

Там смысл в том, что на драйвере стоят микросхемы. Они имеет встроенный высоковольтный мосфет с выходом на ногах 5, 6. А регулировка осуществляется второй ногой. вот туда то и нужно подключить есп на контакт с ШИМ. И регулировать с помощью компонента cwww esp home

Привет, получилось что-нибудь ещё сделать для управления люстрой или решение описанное в статье окончательное?

А у меня была идея попробовать через Miboxer WL-Box1 от Mi Light. Типа такого https://aliexpress.ru/item/32761798341.html?spm=a2g2w.productlist.0.0.7cad704atRMhTF&sku_id=62017171269">Miboxer. Вроде все необходимое в коробке имеется, но что с программной частью непонятно. Но чет так и не заказал даже

Порылся в сообществе HA.

Сначала нашел https://community.home-assistant.io/t/limitlessled-miboxer-wl-box1/148283/21">статью про то как miboxer легко связывают с tuya и затем через localtuya управляют в HA.

Но потом нашел ещё https://community.home-assistant.io/t/newer-miboxer-wl5-and-wl-box1-with-tuya/266886">статью и в ней написано, что можно обойтись esp8266 и NRF24L01+ создав свой хаб и для связи с HA использовать MQTT.

Инструкция как создать такой хаб и прошивка к нему https://github.com/sidoh/esp8266_milight_hub">тут.

Попробую собрать такой хаб на досуге.

Интересно. И непонятно зачем тут тогда вообще miboxer. Сочетание 

esp8266 и NRF24L01+ и есть по сути 

miboxer. Есть и пара статей на тему преобразования 2.4 RF в MQTT. https://github.com/rpakdel/arduino-esp8266-nrf-mqtt">Раз и https://zen.yandex.ru/media/two/umnyi-dom-majordomo-opyt-primeneniia-mysensors-mqtt-i-ds1820-shliuz-mqtt-gateway-5b557d7d4b58fc00a975b00a">два

ага, поэтому и написал в конце предыдущего сообщения, что можно создать свой хаб c mqtt загрузив готовую прошивку вместо miboxer + проброс через localtuya в ha

А,если попробовать в ЕСП 

- platform: gpio 

    name: "Relay" 

       pin: 

        number: D5 

        inverted: true 

        mode: OUTPUT_OPEN_DRAIN

то наверное и опторазвязка не нужна, тогда pin просто замыкается на gnd .

И питание пульта можно сразу взять с ЕСП 3.3 вольта .

Аналогичная сейчас задача, все очень похоже. Но пошел по другому пути. Через СС2530 подаю ШИМ сигнал. Но есть пока не решенные проблемы. Одна из них, это значение 255 приводит к большому току, т.к. стандартный контроллер, когда включается и теплый и холодный выдает не более 2В на канал. 2 момент, это из-за того, что по факту в люстре нет нормальной гальванической развязки, есть существенные помехи и пульсации, в следствие чего WEMOS отказалась работать, а СС2530 - работает. Но в случае чего, не получится переспарить, т.к. после отключения питания на люстру, емкости еще какое-то время его питают и сколько нужно времени держать выключенным пока не разбирался. Проще микрокнопку где-то вынести, есть не видимые части.

На счёт реверс-инженеринга, может https://github.com/sidoh/esp8266_milight_hub/wiki/Radio-Configs">эта статья пригодится?

Я на android использую https://new.zscbled.com/app/download">SmartControl для управления подобной люстрой,  драйвер которые так же имеет маркировку Bluetooth и RF2.4G

Существует приложение на андроид для управления подобным светильником по
bluetooth. Возможно можно узнать какой сигнал шлёт телефон для управления светильником ?

Спасибо за схемы и прошивку. Плата оригинального пульта отличается от указанной в статье, читается чип радио TLSR8367EP16. Купил доп пульт для повторения чего-то аналогичного, внешне одинаковые, а внутри схема другая (доп пульт имеет аналогичную плату как в статье) и не привязывается. Лампа кстати под другой ТМ  LUMINARIA VOLNA SLIM DOUBLE 85W, но видать с одного китайского завода.


Только хотел написать про софт под андроид, но ссылки https://sprut.ai/client/user/profile/9197">xrays72 день назад уже указал, подходят обе проги с его поста. Учитывая невозможность привязать пульт к лампе, как у автора, этот софт ему не поможет. Хотя для купленного
драйвер с АЛИ без пульта возможно подойдет. Эта ссылка с QR кода картинок китайца на али, который продает драйверы для светильников, указана в статье. Судя по картинке, али драйверы лампы внутри аналогичны моей, только надписи на корпусе иначе нанесены. Где-то пару недель тестировал на андроиде, всё работает.


Пытался привязать лампу с помощью esp8266_milight_hub, который обсуждали выше, но ничего не вышло. По идее внутри .apk которые работают с лампой должны быть верные "частоты", "каналы" или "коды" что бы их можно было повторить, например, чере bluetooth ESP32 или тотже NRF24L01 с esp8266 ??? 


Кстати, удалось привязать 3 телефона  с помощью QR кода который выдала софтина SmartControl (был привязан к лампе только один моб в первые 5 сек после подачи питания на светильник), в нем (QR коде) зашифрован текст 
{"current_uuid":"46f0b210-8b6b-4558-829a-885733b43268"}

. Как я понимаю, этот уникальный uuid только нужен для привязки пульта к лампы в первые 5 секунд после подачи питания, а дальше стандартный код сигнала который прописан в софтине на своем канале 2.4g. Таким образом, два аналогичные светильника могут управляться одинаковыми пультами отдельно.


https://sprut.ai/static/media/cache/00/79/07/5/10497730/83156/1000x_image.jpg?1635883067" alt="1000x_image.jpg?1635883067" />
https://sprut.ai/static/media/cache/00/79/07/5/10497730/83159/1000x_image.jpg?1635883157" alt="1000x_image.jpg?1635883157" />
https://sprut.ai/static/media/cache/00/79/07/5/10497730/83160/1000x_image.jpg?1635883199" alt="1000x_image.jpg?1635883199" />

Кто-то делал управление пультом на зигби с помощью конфигураторы ptvo ? Есть неплохой пример и вроде бы как работает, но там максимум 8 контактов для управления оптопарами и задействовать можно не больше 5 (3 для непонятных задач, сигнал +- не шлют.

Купил сегодня в леруа Jlight Venus 5577/150C. Пока не монтировал, думаю соединить на столе и подумать сразу об управлении с помощью esphome. Приветствую любую помощь в этом направлении.
Светодиодные ленты из соединенных последовательно LED 2835. 5*50+5*80=650 светодиодов. Холодный и теплый белый пополам.
Драйвер с выходным напряжением DC132-198V собран на двух BP2958 + ny8a054. Каждый канал на свой цвет светодиода.
Микропроцессор NY8A054E имеет управление через ИК, соответственно пульт тоже ИК.
Буду пробовать смотреть сигнал на светодиоде пульта и эмулировать такой же через esp8266, подавая его на ножки фотодиода.
привет. получилось сделать управлении с помощью esphome?
>>Драйвер люстры имеет маркировку Bluetooth и RF2.4G. Официально заявленного приложения для телефона от производителя не существует.

Приложение есть.
У меня две люстры данного производителя одну покупал в 20г., вторую 22г.
Обе с поддержкой bluetooth. Ещё два года назад, а скорее всего и раньше уже было приложение Smart Estares, правда скачивалось не из маркета а по ссылке из инструкции (QR). Так же работает с приложением LampSmart Pro (это приложение в инструкции ко всем новым моделям). С приложением люстра работает, но интеграции для HA по Bluetooth протоколу к сожалению не нахожу.
Я пошёл вообще другим путём. Посмотрите на фото драйвера. Видите маленькую плату, впаянную вертикально? Это контроллер и одновременно приёмник RF. На него подаётся 3.3 В, а на выходах - ШИМ амплитудой 3,2 В для каналов тёплого и холодного белого (смотрел осциллографом) + опционально RGB. Я эту плату выпаиваю, а вместо неё подключаю ESP с прошивкой ESPHome. Настраиваю объект Light, ШИМ с ЕСП подаю напрямую на плату драйвера, на те контакты, куда они приходили со старого контроллера. Родной контроллер маломощный, питания 3.3 В с драйвера для ЕСП не хватает. Беру с конденсатора, стоящего перед 1117 8-10 вольт и через отдельный DC-DC запитываю ЕСП. Всё! Пульт не нужен, получаю полноценное управление через Home Assistant. На панели HA регулируются и яркость, и цветовая температура.
Для повышения живучести светодиодов есть смысл ограничить максимальные значения ШИМ программно.
Дополнительно подключаю выключатель на свободные входы ЕСП, в выключатель вставляю пружинку - теперь он кнопка. Но это не у всех прокатит, я предусмотрел ещё на стадии разводки электропроводки возможность перекоммутации выключателей, и напряжение 220 В у меня на них не приходит, а к светильникам дополнительно протянута слаботочка.
Издеваюсь над светильниками Estares без RGB.

Вот код:

output:

# Cold white
- platform: esp8266_pwm
pin: D7
max_power: 1
# Можно ограничить максимальный ток, например: max_power: 0.9
frequency: 1000 Hz
id: output_cold_white

# Warm white
- platform: esp8266_pwm
pin: D8
max_power: 1
frequency: 1000 Hz
id: output_warm_white


light:
- platform: cwww
name: "${plug_name} Light"
cold_white: output_cold_white
warm_white: output_warm_white
cold_white_color_temperature: 6536 K
warm_white_color_temperature: 2000 K
constant_brightness: false
restore_mode: RESTORE_DEFAULT_OFF
id: lamp_1
Здравствуйте! Столкнулся ровно с такой же проблемой. Очень понравилось предложенное вами решение. В целом подход понятен, но... Смотрю на вертикально впаянную плату. Она припаяна к основной плате контроллера 7 ножками. Ну две на землю и питание, найду. Осциллографа в наличии нет. Как опознать остальные 5 ножек? Может поделитесь какими-либо признаками или методой? Заранее благодарю!


Отвечу сам себе. Возможно кому-то будет полезно. Удалось! Успешно заменил штатный контроллер на esp32 и наслаждаюсь управлением люстрой через Home Assistant. Все оказалось не так страшно. Самое тяжелое для меня - выпаять эту маленькую плату и затем подпаять проводки для esp32. К счастью на плату нанесена маркировка и вопрос с ножками +3.3 В и земля отпал сразу. Остальные ноги (в моем случае 5 ) перебрал методом научного тыка, подключив предварительно настроенные (ШИМ из совета выше) ножки ESPшки. Задача существенно упростилась, когда посмотрел на плату на просвет источника света. Две ноги, хоть и распаяны, вообще ни к чему не коммутировались. Таким образом изыскания свелись к поиску двух ножек из трех доступных контактов. DC-DC адаптера под рукой не оказалось, покупать было лень, запитал ESPшку от старого блока питания от айфона. Фото результата прилагаю.


здравствуйте, в моем случае плата KDY-788B (на фото), питание +12, и нога 300V что означает? Возможно адаптировать ваше решение под ESP?
Пока пробую победить без паяльника и покупок новых устройств. Home Assistant установлен на NAS QNAP + в USB порт Bluetooth адаптер. Home Assistant его видит. Осталось найти нужные коды/библиотеки для интеграции. Должно всё работать. Поддержки обратной связи как я понял нет. Просто отправка команд на драйвер люстры по BLE.
Привет бро,как обстановка,тоже китайская люстра и тоже хочу интеграцию через ble.Ты нашол способ интегрировать в Ха?
Покупал люстру в Леруа, на пульте надпись REV. На коробке от люстры ни слова про приложение. Микросхема в пульте без маркировки. На драйвере надпись RF2.4. Решил я перехватывать сигнал с пульта, для этого купил на али SDR приемник (но макс. частота 1.7 ГГц, а нужно 2.4+ГГц). К приемнику нужна "понижайка", не нашел за недорого. Уже хотел купить другой драйвер с пультом и приложением в придачу, но решил проверить кит. прогу для управления люстрами Zhi Guang - и получилось! Далее убедился, что прога nRF Connect (на телефоне) что-то ловит с пульта. Цель - разобраться с командами и реализовать управление драйвером люстры через ESP32 BLE. Кто что нарыл в эту сторону? Исходники хоть от какой-то андроид-проги, которая через BLE управляет люстрами есть?
Тут хорошее направление https://rntlab.com/question/using-a-esp-32-to-controll-ble-led-light-controller/
Если интересно, то лампы от Smart Estares - работают через это приложение:

https://play.google.com/store/apps/details?id=com.jingyuan.lamp

Т.к. оригинальное приложение от этой фирмы, уже даже попросту не открывается.

Вернуться назад

Устройства


Aqara

Wall Light Switch

(12 отзывов)

Philips

Zhirui Downlight

(2 отзыва)

Espressif Systems

wemos D1 mini

(6 отзывов)

Вернуться назад