- Описание проекта
- Папки проекта
- Схемы подключения
- Материалы и компоненты
- Как скачать и прошить
- Настройка интеграции с HomeAssistant
- Настройка интеграции с Home Bridge и Apple Home Kit
- Настройка интеграции с Яндекс Алисой
- Настройка интеграции с Node-Red
- Управляющие топики MQTT (для интеграции с системами домашней автоматизации)
- FAQ
- Полезная информация
Представляю вашему вниманию светильник на адресных светодиодах с кучей эффектов, управлением по Wi-Fi и функцией будильник-рассвет!
- Проект собран на базе микроконтроллера ESP8266 в лице платы NodeMCU или Wemos D1 mini (неважно, какую из этих плат использовать!).
- Вместо адресной ленты используется гибкая адресная матрица 16×16, что выходит дешевле ленты (матрица 16×16 стоит 1500р, она состоит из 256 диодов с плотностью 100 штук на метр. Лента такой же плотности стоит 1000р за метр (за 100 светодиодов). Для склейки матрицы размером 16×16 понадобится 2.5 метра ленты, то есть 2500р. А готовая матрица стоит на 1000р дешевле!).
- Система управляется со смартфона по Wi-Fi (приложение GyverLamp для Android), а также “оффлайн” с кнопки на корпусе (сенсорная кнопка на TTP223).
- 14 крутых эффектов
- Настройка скорости, яркости и “масштаба” для каждого эффекта
- Настройка эффектов со смартфона
- Работа системы как в локальной сети, так и в режиме “точки доступа”
- Встроенный Wi-Fi менеджер для удобной настройки сети
- Система получает точное время из Интернета
- Управление кнопкой: смена режима, настройка яркости, вкл/выкл
- Режим будильник-рассвет: менеджер будильников на неделю в приложении
- Корпус выглядит очень презентабельно, несмотря на простоту и доступность материалов
- Рассеиватель – матовый плафон из Леруа Мерлен
- Остальные элементы корпуса – канализационные трубы, в лучших традициях жанра!
- Страница проекта на сайте: https://alexgyver.ru/GyverLamp/
ВНИМАНИЕ! Если это твой первый опыт работы с Arduino, читай инструкцию
- libraries - библиотеки проекта. Заменить имеющиеся версии
- firmware - прошивки для Arduino
- schemes - схемы подключения компонентов
- NodeMCU http://ali.ski/RgD5P http://ali.ski/_1FJZ
- Wemos D1 mini http://ali.ski/FuTgbO http://ali.ski/Z9feWU
- Матрица 16x16 http://ali.ski/BCKQT http://ali.ski/bRW14 http://ali.ski/X-tBrQ
- Адресная лента (для DIY матрицы) http://ali.ski/2dmOe_ http://ali.ski/rqgqdq http://ali.ski/4Ma9iH
- Сенсорная кнопка http://ali.ski/aWQBAa http://ali.ski/rsOrSB
- БП 5V (брать 3A минимум) http://ali.ski/K-CThT http://ali.ski/3UWXJ
- Проводочки http://ali.ski/JQRler http://ali.ski/_SuCF
- Плафон https://leroymerlin.ru/product/plafon-cilindr-18212968/
- Всё для пайки (паяльники и примочки)
- Недорогие инструменты
- Все существующие модули и сенсоры Arduino
- Электронные компоненты
- Аккумуляторы и зарядные модули
- Первые шаги с Arduino - ультра подробная статья по началу работы с Ардуино, ознакомиться первым делом!
- Скачать архив с проектом
На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP
- Установить библиотеки в
C:\Program Files (x86)\Arduino\libraries\
(Windows x64)
C:\Program Files\Arduino\libraries\
(Windows x86) - Подключить внешнее питание 5 Вольт
- Подключить плату к компьютеру
- Файл/Настройки, вставить ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json в в текст-бокс для дополнительных ссылок для менеджера плат
- Открыть Инструменты/Плата/Менеджер плат…, найти esp8266 by ESP8266 Community, установить версию 2.5.0
- Открыть Инструменты, настроить Плату, Порт и другие параметры как на скриншоте
- Загрузить прошивку
// -------- ВРЕМЯ -------
GMT 3 // смещение (москва 3)
NTP_ADDRESS "europe.pool.ntp.org" // сервер времени
// -------- РАССВЕТ -------
DAWN_BRIGHT 200 // макс. яркость рассвета
DAWN_TIMEOUT 1 // сколько рассвет светит после времени будильника, минут
// ---------- МАТРИЦА ---------
BRIGHTNESS 40 // стандартная маскимальная яркость (0-255)
CURRENT_LIMIT 2000 // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
WIDTH 16 // ширина матрицы
HEIGHT 16 // высота матрицы
COLOR_ORDER GRB // порядок цветов на ленте. Если цвет отображается некорректно - меняйте. Начать можно с RGB
MATRIX_TYPE 0 // тип матрицы: 0 - зигзаг, 1 - параллельная
CONNECTION_ANGLE 0 // угол подключения: 0 - левый нижний, 1 - левый верхний, 2 - правый верхний, 3 - правый нижний
STRIP_DIRECTION 0 // направление ленты из угла: 0 - вправо, 1 - вверх, 2 - влево, 3 - вниз
// при неправильной настрйоке матрицы вы получите предупреждение "Wrong matrix parameters! Set to default"
// шпаргалка по настройке матрицы здесь! https://alexgyver.ru/matrix_guide/
// --------- ESP --------
ESP_MODE 1
// 0 - точка доступа (192.168.4.1 или другой)
// 1 - локальный (192.168.1.232 или другой)
// -------- Менеджер WiFi ---------
AC_SSID "AutoConnectAP"
AC_PASS "12345678"
// -------------- AP ---------------
AP_SSID "GyverLamp"
AP_PASS "12345678"
AP_PORT 8888
input_number:
speed:
name: Speed
initial: 30
min: 0
max: 255
step: 1
scale:
name: Scale
initial: 30
min: 1
max: 100
step: 1
- alias: Gyver Speed
trigger:
platform: state
entity_id: input_number.speed
action:
- service: mqtt.publish
data_template:
topic: homeassistant/light/ESP-3dc22b/effect/speed/set
payload_template: "{{ trigger.to_state.state | int }}"
- alias: Gyver Scale
trigger:
platform: state
entity_id: input_number.scale
action:
- service: mqtt.publish
data_template:
topic: homeassistant/light/ESP-3dc22b/effect/scale/set
payload_template: "{{ trigger.to_state.state | int }}"
3dc22b - заменить на ID чипа ESP, он будет виден в названии лампы и в entity_id в конце строки после знака подчеркивания. Настройка MQTT сервера появится в wi-fi менеджере при первом запуске. Нужно указать адрес MQTT сервера, имя пользователя и пароль для доступа к вашему MQTT серверу.
Для управления из Home Bridge необходимо установить плагин homebridge-mqttthing:
npm install -g homebridge-mqttthing
И внести в файл конфигурации некоторые изменения. Переключение эффектов в Home Bridge не предусмотрено, поэтому заведем эффекты в компонент телевизора. Ну чем панель не телевизор? :)
"accessories": [
{
"accessory": "mqttthing",
"type": "lightbulb",
"name": "Gyver Lamp",
"url": "http://127.0.01:1883",
"mqttPubOptions": {
"retain": false
},
"topics": {
"getOn": "homeassistant/light/ESP-3bd20b/status",
"setOn": "homeassistant/light/ESP-3bd20b/switch",
"getBrightness": "homeassistant/light/ESP-3bd20b/brightness/status",
"setBrightness": "homeassistant/light/ESP-3bd20b/brightness/set",
"getRGB": "homeassistant/light/ESP-3bd20b/rgb/status",
"setRGB": "homeassistant/light/ESP-3bd20b/rgb/set"
},
"onValue": "ON",
"offValue": "OFF"
},
{
"accessory": "mqttthing",
"type": "television",
"name": "Gyver Lamp Effects",
"url": "http://127.0.0.1:1883",
"topics": {
"setActive": "homeassistant/light/ESP-3bd20b/switch",
"getActive": "homeassistant/light/ESP-3bd20b/status",
"setActiveInput": "homeassistant/light/ESP-3bd20b/effect/set",
"getActiveInput": "homeassistant/light/ESP-3bd20b/effect/status"
},
"inputs": [
{
"name": "Конфетти",
"value": "Конфетти"
},
{
"name": "Огонь",
"value": "Огонь"
},
{
"name": "Радуга верт.",
"value": "Радуга верт."
},
{
"name": "Радуга гориз.",
"value": "Радуга гориз."
},
{
"name": "Смена цвета",
"value": "Смена цвета"
},
{
"name": "Безумие 3D",
"value": "Безумие 3D"
},
{
"name": "Облака 3D",
"value": "Облака 3D"
},
{
"name": "Лава 3D",
"value": "Лава 3D"
},
{
"name": "Плазма 3D",
"value": "Плазма 3D"
},
{
"name": "Радуга 3D",
"value": "Радуга 3D"
},
{
"name": "Павлин 3D",
"value": "Павлин 3D"
},
{
"name": "Зебра 3D",
"value": "Зебра 3D"
},
{
"name": "Лес 3D",
"value": "Лес 3D"
},
{
"name": "Океан 3D",
"value": "Океан 3D"
},
{
"name": "Снегопад",
"value": "Снегопад"
},
{
"name": "Матрица",
"value": "Матрица"
},
{
"name": "Светлячки",
"value": "Светлячки"
}
],
"onValue": "ON",
"offValue": "OFF"
}
]
Здесь вместо 3bd20b нужно прописать ID чипа ESP. Как его получить - я писал выше. В итоге после перезагрузки Home Bridge просто и легко у нас в Home Kit появится два новых устройства: RGB лампа и "телевизор", выходами которого можно переключать эффекты.
Включение и выключение синхронизируется и в "телевизоре", в лампе, в Home assistant, в веб интерфейсе и в приложении для смартфона. Описанным выше способом можно добавить все остальные эффекты. Ползунки скорости и масштабирования если они необходимы можно добавить как отдельную лампу и управлять через уровень яркости.
Как же без "импортозамещения"? Сервис умного дома Яндекс хоть очень молод, можно сказать находится в стадии бета тестирования, но уже сейчас он может управлять умными устройствами вашего дома на русском языке. Для интеграции лампы Alex Gyver'а с умным домом Яндекс необходимо подключить интеграцию Домовенок Кузя и загрузить актуальную версию прошивки. На сайте предусмотрено два способов интеграции:
- С помощью брокера MQTT
- С помощью http запросов
Текущая версию прошивки поддерживает оба способа. Но так как не у всех есть возможность установить свой mqtt брокер, рассмотрим интеграцию через http запросы. Для удаленного управления необходимо прокинуть в роутере порт до вашей лампы. Далее необходимо настроить правила управления лампой на сайте Домовенка Кузи и связать их с виртуальной лампой.
Управление включением лампы: http://login:password@ip-address:8000/setconfig?on=1
Управление выключением лампы: http://login:password@ip-address:8000/setconfig?on=0
Установка яркости лампы: http://login:password@ip-address:8000/setconfig?brightness={value}
Состояние лампы: http://login:password@ip-address:8000/getconfig
Если вы собираетесь использовать навык Домовенок Кузя совместно с Умным домом Яндекс, можно настроить ответ домовенка в поле "Ответ Алисы" (да, да.. логика разработчика немного страдает..) необходимо вписать:
яркость {brightness} процентов, эффект {currentMode}
т.к. теперь у нас лампа будет доступна из интернет, в прошивку добавлена базовая аутентификация. Для ее включения необходимо раскоментировать строчку #define WEBAUTH в прошивке. В качестве логина и пароля используется уникальный идентификатор ESP, о котором говорилось выше. Он отображается при первичной настройке в менеджере подключения. Если вы не собираетесь использовать mqtt брокер, в поле mqtt server при первичной настройке необходимо указать none. Для управления доступны также переключение эффекта, скорости и масштабирования. Управляются следующими запросами:
Управление переключением эффекта лампы: http://login:password@ip-address:8000/setconfig?currentMode=1
Установка скорости эффекта : http://login:password@ip-address:8000/setconfig?speed=10
Установка масштабирования эффекта : http://login:password@ip-address:8000/setconfig?scale=10
Установка цвета из RGB палитры: http://login:password@ip-address:8000/setconfig?on=1¤tMode=14&r=254&g=100&b=10
Вместо 8000 нужно указать порт, который прокинут от лампы с порта 80 в интернет.
В первый раз надо прошить, полностью стерев ESP
После первого запуска лампа автоматически появится в списке устройств Home Assistant. С помощью MQTT интеграции можно подключить лампу не только к Home Assitant, но и к HomeBridge, ioBroker, а так же к любым системам домашней автоматизации.
Прошивка с поддержкой MQTT лежит https://github.com/Whilser/GyverLamp/tree/master/firmware/GyverLamp_v1.4_MQTT
- Поддержка работы с MQTT сервером
- Нативная интеграция с Home Assistant методом Discover
- Возможность ОТА обновления через сетевой порт с интересным эффектом "матрица" во время обновления
- Возможность выбирать цвет из палитры Home Assistant либо через MQTT сервер
- Автоматическое обнаружение подключенной сенсорной кнопки и корректная работа без нее
- Корректная работа в случае отключения WiFi сигнала либо MQTT брокера (адаптивное подключение)
- Возможность настроить работу как с MQTT брокером, так и без него без повторной компиляции прошивки. Для этого достаточно при настройке вместо адреса MQTT сервера ввести none.
- Добавлен веб интерфейс управления (не свой, доработал, взял наработки CoOre, который так же создал Fork проекта на GitHub) - для управления нужно перейти по адресу http://ESP-ID.local/. Вместо ID нужно вписать ID чипа ESP8266. Он отображается в названии лампы и в entity_id после знака подчеркивания
- Возможность выбирать цвет свечения лампы из RGB палитры
- OTA обновление - второй раз не нужно подключать через USB для прошивки, можно обновить прошивку через сетевой порт
Спасибо @cacherocks за проделанную работу. Картинка с флоу для лампы:
Флоу для импорта в нодред находятся в папке Node-Red: https://github.com/Whilser/GyverLamp/tree/master/Node-Red. Дополнительно необходимо установить: node-red-contrib-homekit-bridged для добавления в Homekit и node-red-contrib-color-convert для конвертации RGB в HSV и обратно.
- в mqtt нодах надо поменять ESP-267059 на свой ID
- всех homekit нодах надо поменять bridge на свой
- в нодах также необходимо заменить ESP-267059 на свой ID
Получение статуса лампы:
-- статус включено/выключено. Статус включено "ON" статус выключено "OFF"
"homeassistant/light/ESP-ID/status"
-- статус яркости от 0 до 255
"homeassistant/light/ESP-ID/brightness/status"
-- название эффекта, например "Огонь"
"homeassistant/light/ESP-ID/effect/status"
-- текущая скорость эффекта
"homeassistant/light/ESP-ID/effect/speed/status"
-- текущее значение масштабирования эффекта
"homeassistant/light/ESP-ID/effect/scale/status"
-- значение цвета в RGB палитре, например, 255,255,255 - белый цвет
"homeassistant/light/ESP-ID/rgb/status"
Управление лампой:
-- включение/выключение. Статус включено "ON" статус выключено "OFF"
"homeassistant/light/ESP-ID/switch"
-- установить яркость от 0 до 255
"homeassistant/light/ESP-ID/brightness/set"
-- включение эффекта, например "Огонь"
"homeassistant/light/ESP-ID/effect/set"
-- установить скорость эффекта
"homeassistant/light/ESP-ID/effect/speed/set"
-- установить масштабироване эффекта
"homeassistant/light/ESP-ID/effect/scale/set"
-- установить значение цвета в RGB палитре, например, 255,255,255 - белый цвет
"homeassistant/light/ESP-ID/rgb/set"
В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP
В: Скачался какой то файл .zip, куда его теперь?
О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.
В: Я совсем новичок! Что мне делать с Ардуиной, где взять все программы?
О: Читай и смотри видос http://alexgyver.ru/arduino-first/
В: Вылетает ошибка загрузки / компиляции! О: Читай тут: https://alexgyver.ru/arduino-first/#step-5
В: Сколько стоит?
О: Ничего не продаю.