У меня, как и у многих владельцев умных домов, имеются светодиодные RGB ленты. Работают полностью автономно (сами включаются и выключаются, раз в 10 минут меняют цвет). Стало как-то скучно с ними и захотелось чего-то новенького. Взгляд пал на адресные светодиодные ленты. В таких лентах каждый светодиод имеет свой собственный драйвер, что дает возможность управлять каждым светодиодом отдельно. Также для таких лент есть очень крутой проект - WLED.
Выбор ленты:
Самым популярным вариантом адресной ленты является WS2812B - 60 диодов на метр т.к. она является оптимальным вариантом соотношения цены/качества. Главным недостатком этой ленты я считаю ее напряжение (5V), что дает просадки напряжения и необходимость питать ленту с двух сторон (а еще лучше - через каждый метр).
Существует также модель WS2815, она стоит гораздо дороже, но имеет много преимуществ, о которых расскажу далее.
- Напряжение 12V, что дает нам возможность записать ленту с одной стороны.
- Нет просадок напряжения.
- В случае выхода из строя одного светодиода, последующие диоды продолжат работать.
Частота обновления 2000 Гц.
Необходимые компоненты:
- Сама адресная лента. Я для пробы брал такую (не ECO).
- Блок питания на 5V брал там же. Из расчета 3.5 А на метр ленты, при 60 диодах/метр. Рекомендую брать ленту на 144 диода/метр. Там эффекты смотрятся лучше.
- Резистор на 470Ω Ом.
Провода.
Прошивка и подключение
Для начала нам нужно прошить нашу 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. Важно, чтобы при всем этом, это было одно устройство:
Включение/Выключение.
Управление яркостью, цветом и температурой.
Управление скоростью эффектов.
Управление насыщенностью эффектов.
Смена эффектов из списка.
Включение и выключение рандомной смены эффектов с определенным интервалом.
Полная обратная связь.
Для добавления ленты в HomeKit можно взять мой flow. Пока громоздко, но буду постепенно его улучшать. В самом флоу достаточно указать данные MQTT, HK, порядковые номера эффектов и номера нужных вам EffectID.
Необходимо установить следующие плагины:
После этого в HomeKit у вас появится Телевизор. Что не самое лучшее для ленты. Но т.к к телевизору залинкованы эффекты, то он обязан быть в этой схеме Родительским устройством. Мне удалось изменить это небольшой манипуляцией:
В ноде WLED Свет ставим Service Hierarchy - Parent.
В ноде WLED ставим Service Hierarchy - Linked и указываем WLED Свет.
node-red-restart.
В ноде WLED ставим Service Hierarchy - Parent.
В ноде WLED Свет ставим Service Hierarchy - Linked и указываем WLED.
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. На нем оставлю.
Спасибо за статью! Взял на заметку, добавил в избранное. Давно присматривался к адресным лентам. Будет время, займусь обязательно.
И на изображении NodeMcu V2, а не V3
И на изображении 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" />Кстати, при переключении эффектов лента вспыхивает и, иногда, включается рандомно.
Собрал по схеме, все контакты пропаяны хорошо, питание 5в 2А напрямую в ленту, и, параллельно, на NodeMCU. В настройках ограничение по току поставил 1500ма, ибо, рассчитываю, что NodeMCU в пике жрет до 300ма.
В чем может быть проблема?
Решили проблему?
Получается, я зря мучался. Мой NodeMCU V3 не подходит для 8 метров ws2812b...
Рандомным переподключением питания и земли удалость завести но если лед ленту выключить через выключатель то она уже не включится, и NodeMCU V3 будет офлайн
Не поставил усилитель логического канала 3.3v>5v
спасибо за flow, все работает
с эффектами надо подумать, как можно их в одном месте прописывать
Возможно осуществить данный проект без одноплатника?
Отличный проект (имеется в виду проект WLED). Только вот там немного не доделали логику сегментов. В текущих версиях сегмент может быть только последовательностью идущих по номерам друг за другом светодиодов. Например, с 1-го по 20-й. Или с 35-го по 43-й, и т.д. Но дело в том, что при размещении светодиодов их не всегда удается физически разместить в нужной последовательности - то длины кабеля между соседними сведодиодами маловато, то еще что.
Соответственно, было бы очень неплохо иметь возможность задавать сегменты из произвольной последовательности порядковых номеров. Но такой возможности пока нет.