Статья

Адресные светодиодные ленты с WLED в HomeKit

У меня, как и у многих владельцев умных домов, имеются светодиодные RGB ленты. Работают полностью автономно (сами включаются и выключаются, раз в 10 минут меняют цвет). Стало как-то скучно с ними и захотелось чего-то новенького. Взгляд пал на адресные светодиодные ленты. В таких лентах каждый светодиод имеет свой собственный драйвер, что дает возможность управлять каждым светодиодом отдельно. Также для таких лент есть очень крутой проект - WLED.

Выбор ленты:

Самым популярным вариантом адресной ленты является WS2812B - 60 диодов на метр т.к. она является оптимальным вариантом соотношения цены/качества. Главным недостатком этой ленты я считаю ее напряжение (5V), что дает просадки напряжения и необходимость питать ленту с двух сторон (а еще лучше - через каждый метр).

Существует также модель WS2815, она стоит гораздо дороже, но имеет много преимуществ, о которых расскажу далее.

  • Напряжение 12V, что дает нам возможность записать ленту с одной стороны.
  • Нет просадок напряжения.
  • В случае выхода из строя одного светодиода, последующие диоды продолжат работать.
  • Частота обновления 2000 Гц.

Необходимые компоненты:

  • Сама адресная лента. Я для пробы брал такую (не ECO).
  • Блок питания на 5V брал там же. Из расчета 3.5 А на метр ленты, при 60 диодах/метр. Рекомендую брать ленту на 144 диода/метр. Там эффекты смотрятся лучше.
  • Резистор на 470Ω Ом.
  • NodeMcu v3.

  • Провода.

Прошивка и подключение

Для начала нам нужно прошить нашу NodeMcu прошивкой с проекта. В данном случае - это файл WLED_0.10.0_ESP8266.bin.

Подробно о прошивке рассказывать не буду, т.к. есть много статей на эту тему.

После прошивки перезагружаем наш NodeMcu кнопкой или питанием. Появиться Wi-Fi сеть WLED-AP - подключаемся к ней с паролем wled1234.

После этого у вас выскочит окно первичной настройки. Если этого не произошло, то в браузере переходим по адресу 4.3.2.1.

В пункте WIFI SETTINGS вводим данные своей Wi-Fi сети и сохраняем. Отключаем NodeMcu от компьютера.

Так как ленту мы используем 5V, то подключать ее лучше с двух сторон, как на схеме выше. Для коротких лент можно попробовать подключение с одной стороны, но не рекомендую.

Настройка прошивки

После подключения ленты и подачи питания, в настройках роутера ищем IP адрес нашей ленты и переходим по нему в браузере. У нас появляется вот такой красивый WEB-интерфейс. Так как задача у нас - прокинуть все необходимое в HomeKit, то не буду подробно описывать все возможности этой прошивки.

Можно заметить, что не все диоды загораются при первом включении. Для этого нужно указать количество светодиодов, с которыми будет работать прошивка. Переходим в Config-> LED Preferences и указываем в строке LED count число диодов. Там же рекомендую снять галочки с Enable automatic brightness limiter и Turn LEDs on after power up/reset.

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

Осталось лишь связать данный девайс с нашим умным домом. Прошивка умеет отдавать данные по MQTT. Необходимо указать данные нашего брокера в Config -> Sync Interfaces -> MQTT. Не забываем поставить галочку Enable MQTT.

Интеграция в HomeKit через NodeRED

Для начала я выделил функционал, который мне нужен в Homekit. Важно, чтобы при всем этом, это было одно устройство:


Включение/Выключение.

Управление яркостью, цветом и температурой.

Управление скоростью эффектов.

Управление насыщенностью эффектов.

Смена эффектов из списка.

Включение и выключение рандомной смены эффектов с определенным интервалом.

Полная обратная связь.

undefined

Для добавления ленты в HomeKit можно взять мой flow. Пока громоздко, но буду постепенно его улучшать. В самом флоу достаточно указать данные MQTT, HK, порядковые номера эффектов и номера нужных вам EffectID.

Необходимо установить следующие плагины:

После этого в HomeKit у вас появится Телевизор. Что не самое лучшее для ленты. Но т.к к телевизору залинкованы эффекты, то он обязан быть в этой схеме Родительским устройством. Мне удалось изменить это небольшой манипуляцией:

  1. В ноде WLED Свет ставим Service Hierarchy - Parent.

  2. В ноде WLED ставим Service Hierarchy - Linked и указываем WLED Свет.

  3. node-red-restart.

  4. В ноде WLED ставим Service Hierarchy - Parent.

  5. В ноде WLED Свет ставим Service Hierarchy - Linked и указываем WLED.

  6. node-red-restart.

После этого лента появится как лампочка и порядок девайсов внутри уже будет по алфавиту.

На этом все. Постепенно планирую добавить еще немного функционала, который пригодится в процессе эксплуатации ленты.

Всем спасибо. Удачи!


Обрубило половину флоу, сохрани файлом подвесь куда нибудь. Я притер McLighning чтобы потетсить это :) новой настройки я не вынесу :)) особенно с xml в mqtt. 

Там же в NodeRed на Алису сможешь вывести ?

Спасибо.Поправил код.Видимо при копипасте что то не скопировало.По файлу и Алисе можно в нашем чатике NodeRED решить

Спасибо, прикрутил. MQQT обмен по докам вроде не сложный. Статус только из этой строки xml? или у меня глюк такой ?

Да.В MQTT in не все приходит отдельно.Многие параметры прилетают там именно в XML.
https://github.com/Aircoookie/WLED/wiki/HTTP-request-API">https://github.com/Aircoookie/...

Нашел, прикрутил Алису, цвет, яркость,вкл, эффект

Кстати в HomeKit получилось сделать багом чтоб не как ТВ было а как Лампа?Может только у меня так получается

Я попробовал сделать по мануалу чтобы на тип ленты сменить, не получилось, осталась теликом.  Чувствую для меня панель в хомбридже избыточна. Повешу классные эффекты на алису, остальное (цвет яркость он офф), через mqqtting заведу как лампу :)


Спасибо за мануал! Не знал про wled. На нем оставлю. 

Спасибо за статью! Взял на заметку, добавил в избранное. Давно присматривался к адресным лентам. Будет время, займусь обязательно. 

Опечатка в тексте "Напряжение 12V, что дает нам возможность записать ленту с одной стороны."
И на изображении NodeMcu V2, а не V3
Опечатка в тексте "Напряжение 12V, что дает нам возможность записать ленту с одной стороны."
И на изображении NodeMcu V2, а не V3

Если использовать ESP, то можно прокинуть напрямую в https://github.com/HomeKidd/Homekit-WS2812B-controller/wiki/Build-Instructions">HomeKit, либо в https://esphome.io/components/light/fastled.html">HomeAssistant.

Это не мешает параллельно запустить таким образом, у меня тоже в Hassio само вылезло

В смысле, можно сделать HomeKit аксессуар. Использовать напрямую в HomeKit без Hass.io или NodeRed.

Всмысле ты предлагаешь запилить в системы двумя разными проектами, у которых  функциональностью куда беднее. Homekitdd эффекты в бета тестировании, в HA через ESPeasy для которой тоже не понятно с эффектами, и так же придется пилить кучу кода чтобы настроить.


В WLED в ХА зашло мне через интеграцию. в Homekit напрямую можно затащить через плагин mqttthing как минимум. и работы там будет не больше чем заказывать детали для Homekitdd или допиливать ESPEasy. Nodered тут использован для запуска эффектов, и расширенной функциональности (иначе для чего ставить адресную ленту), чего ни в том ни в другом проекте из коробки нет.

за что автору - спасибо.

Вы много написали, но почти ничего по делу. В ESPEasy с эффектами полный порядок, прежде чем что-то утверждать, неплохо бы ознакомиться с предметом. И никакого кода там писать вообще не нужно, кроме конфигурации на стадии  прошивки ESP. 
Про бету вы вообще бред написали: Hassio целиком в бете пока что.

И как понять вашу фразу «напрямую через плагин»? Либо напрямую, либо через плагин.

Я предложил два варианта: один напрямую в HomeKit, не требующий наличия иных систем, вроде Hassio и Homebridge. Другой через интеграцию в Hassio. В обоих не требуется написания такого количества кода, как в предложенном варианте, но ни словом я не обмолвился о том, какой способ лучше. Каждый сам волен выбирать.

А вам бы нервы полечить, и разобраться в предмете, прежде чем комментировать.

Напрямую, это без участия других серверов.

Ну а если придираться к словам и то в hassio посредством Espeasy. а про эффекты homekitdd было сказано, что они не поддерживаются из коробки. 


Для меня лично Homekit это не более чем пульт управления.А для автоматизаций уже NodeRED.

Как?

Свои 5 копеек вставлю. - варианты Eco Смело брать можно - их яркости более чем достаточно они % на 20 слабее. Потребление у них тоже чуть меньше.
И у eco - несомненный плюс цена. лента ip67 - стоит столько же, сколько одноцветный 5050 с защитой ip67.
Если брать 144 на метр - то только в том случае, если маленькие метражи. Например если ставить по периметру комнаты, то берём примерно стандартные 3х4 - получаем 14 метров. 2016 диодов. Вы чем их питать собрались? И второй момент - от чего работать? Esp2866 - рекомендуемое максимальное кол-во диодов - 750, esp32 ~ 1200. Если больше - просадка частоты.

Спасибо за комментарий.Все по делу.Эко на 144 пока ещё едет мне для теста и сравнения.Статью писал про 60/м.По питанию каждый сам может  посчитать-сколько нужно для 144/м при покупке и расчете.По управлению-упустил,действительно нужно указать в статье максимальное рекомендуемое число диодов.Только на странице автора информация иная.New maximum is 1200 on ESP8266 and 600 on ESP32 и рекомендацией работать до 900 для лучшей производительности.

Так что-то не вяжется. 8266 - 1200, а 32 - 600? Когда я брал информацию - было 750 без уточнения платы. Я собственно в ишью поднимал вопрос - 900 рекомендуеться для esp32, но вытянет и 1200, но возможно потребуется отключать некоторые возможности (типа интеграцию для алексы, e1.31)

Глянул ваше ишью 12-ти дневной давности.Там за ESP32 я так понял отвечали.На 8266 я брал цифру(New maximum is 1200 on ESP8266 and 600 on ESP32) из предыдущих Releases.Пирчем ее потом увеличили до 1500.Да и народ на их форуме писал что и более 2к диодов юзали)

Я про что говорю - у тебя не вызывает вопросов эта фраза? (New maximum is 1200 on ESP8266 and 600 on ESP32)

Что esp32 - в более чем в 2 раза мощнее, а кол-во диодов переваривает меньше?

В ишью - автор весьма конкретно ответил 32 - 1000 будет работать. Для 8266 не хватает памяти. Максимум 750 для частоты обновления 

42fps (по умолчанию), при 1024 - уже снижение до 30fps.

Понятно что если использовать просто белое свечение можно хоть 3000 (утрирую), для быстрых эффектов - ресурсов может уже не хватить. У меня на текущий момент на esp32 - 600 висит (щас еще 10 метров приедет, попробую 1200), и с отключенными лишними сервисами в прошивке - остается свободно 170-200 кб памяти, в зависимости от эффектов. 

Кстати, есть 3 очень интересные возможности прошивки, которые в квартире скорее всего не так востребованы будут, как в рамках загородного дома. 1 - это сегментация. Как по мне - это куда интересней, чем все эффекты вместе взятые. Я использую ее на веранде, и я могу концентрировать свет где угодно. Надо над столом - пожалуйста. Хочешь только над столешницей - не вопрос. Отдельно освещение, отдельно эффекты - легко. Но компонент в НА еще не поддерживает сегменты, и в общем то пользоваться им пока не удобно. 

2 - это синхронизация с другими контроллерами wled. 


Да, только думал над этим.Видимо автор прошивки ошибся в описании(ибо не логично как то).Cегменты согласен, тоже думаю поюзать.Даже и в квартире востребованы зачастую.Плюс они есть в API 

в защиту WLED добавлю что она поддерживает не только 2812B, но и другие... спасибо за статью!

Не могу понять что не так? Контроллер прекрасно работает с 2812. Купил ленту 2811 - она тупо вся загорается белым и не управляется. Запускал кто в паре с NODEMCU+WLED ленту 2811 ???

На гитхабе в шью или на их форуме нужно почитать.На 2811 вроде логика работы другая.Что то типо того что по 3 диода рулится а не по 1му.Но я за 2811 не читал особо



победил. логика та же, но вот если рулить лентой с 8266, то у нее уровень сигнала 3.3В что не соответствует требованиям драйвера на ленте - там указан диапазон 3.5-5.5В. 


https://sprut.ai/static/media/cache/00/08/97/5/3998983/59873/1000x_image.png?1591340677" alt="1000x_image.png?1591340677" />

да, и на закуску у моего варианта ленты перепутаны каналы синего и зеленого. для проверки достаточно запустить какой нибудь эффект типа рождества и увидите сине-красные цвета, а значит надо лезть в настройки LED и менять GRB на BRG и тогда все ок. я собственно зачем к 2811 полез - мне надо завести 16 метров ленты и на 5В блоки питания просто ад...

BTW то что там рулится по 3 диода - никакой разницы, лишь то, что при плотности 60 диодов на метр - по факту имеем 20 на метр то есть в 3 раза меньше, но зато яркость выше.



Купил nodemcu с СP2102 по ссылке автора статьи. На обратной стороне написано что напряжение питания до 10 вольт. Поднял массу материала в инете, где пишут до 12 , где до 15, где до 20. У меня лента WS2815. Прошил с компа, OK. Подал 12 вольт - сгорела. Хорошо заказал парочку. И купил сразу десяток у другого продавца с CH340. 

https://sprut.ai/static/media/cache/00/06/10/5/3953000/61430/1000x_image.jpeg?1593325798" alt="1000x_image.jpeg?1593325798" />

Привет!

Правильно ли я понял, что для подключения 12в адресной ленты нужно понизить питание 12-5 для nodemcu, и сигнал из nodemcu перевести с 3.3в логики на 5.5?



Да.Я скоро статью дополню.И флоу добавлю с работой через JSON API

https://sprut.ai/static/media/cache/00/23/86/5/3999320/67442/1000x_image.jpeg?1601487177" alt="1000x_image.jpeg?1601487177" />
Не нашел дополнение к статье о котором Вы написали в 2020 году. Подскажите, в настоящее время, в какой связке положительно удалось использовать WS2815 с esp8266?

Кстати, при переключении эффектов лента вспыхивает и, иногда, включается рандомно.

Собрал по схеме, все контакты пропаяны хорошо, питание 5в 2А напрямую в ленту, и, параллельно, на NodeMCU. В настройках ограничение по току поставил 1500ма, ибо, рассчитываю, что NodeMCU в пике жрет до 300ма.

В чем может быть проблема?

Решили проблему?

Получается, я зря мучался. Мой NodeMCU V3 не подходит для 8 метров ws2812b...

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

по какой причине не подходит?

Не поставил усилитель логического канала 3.3v>5v

спасибо за flow, все работает

с эффектами надо подумать, как можно их в одном месте прописывать

Возможно осуществить данный проект без одноплатника?

Отличный проект (имеется в виду проект WLED). Только вот там немного не доделали логику сегментов. В текущих версиях сегмент может быть только последовательностью идущих по номерам друг за другом светодиодов. Например, с 1-го по 20-й. Или с 35-го по 43-й, и т.д. Но дело в том, что при размещении светодиодов их не всегда удается физически разместить в нужной последовательности - то длины кабеля между соседними сведодиодами маловато, то еще что.


Соответственно, было бы очень неплохо иметь возможность задавать сегменты из произвольной последовательности порядковых номеров. Но такой возможности пока нет.

Где можно скачать flow? Страница не доступна..

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

Устройства


Espressif Systems

ESP8266 NodeMcu v3

(15 отзывов)

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