Лампа-будильник Alex Gyver'а на адресных светодиодах и esp8266. Добавление в Home Assistant, Apple Home Kit, интеграция с Алисой

02 августа 2019, 20:59

Содержание:

Не так давно наткнулся на очень интересный проект Alex Gyver'a "Лампа-будильник на адресных светодиодах". Проект мне очень понравился, решил собрать себе такую лампу! Это отличный и уникальный декор, возможность использовать в сценариях и оповещениях. Кто еще не посмотрел ролик - ссылка ниже, обязательно посмотрите. 

Собрался в Леруа, закупил плафон и пару ПВХ труб :)

Светодиодной матрицы у меня небыло, зато была катушка адресной свтодиодной ленты (которая ждала своего часа) и желание все спаять. Светодиоды самоклеящиеся, перед поклейкой важно хорошо обезжирить поверхность. Я использовал изопропиловый спирт "Калоша", которым обычно оттираю флюс. На всю сборку ушел всего один вечер, проект не сложный, время проходит незаметно. После сборки возник вопрос интеграции в систему управления умным домом. К сожалению у Алекса это не было предусмотрено, поэтому я решил реализовать это самостоятельно. Возник вопрос, каким спососбом это сделать. Было по большому счету два варианта: написать собственный компонент/плагин либо добавить платформу-посредник,  поддерживаемую большинством систем домашней автоматизации, например, MQTT. Я выбрал второй вариант т.к. в этом случае лампу можно будет интегрировать сразу во все системы домашней автоматизации. Home Assistant довольно популярен в последнее время, поэтому я решил акцент сделать именно на нем. 

Подключаем все по схеме Alex'а: 

Добавление в Home Assistant

Доработанная прошивка позволяет с легкостью добавить лампу Gyver'а в Home Assistant, используя встроенный механизм MQTT Discovery - лампа просто появится в списке устройств после указания адреса вашего MQTT сервера.  Для функций масштабирования и скорости необходимо добавить дополнительные настройки в Home Assistant:

В файле configuration.yaml

input_number:
  speed:
    name: Speed
    initial: 30
    min: 0
    max: 255
    step: 1

  scale:
    name: Scale
    initial: 30
    min: 1
    max: 100
    step: 1

В файле automations.yaml

- 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 чипа ESP8266, он будет виден в названии лампы и в entity_id в конце строки после знака подчеркивания, а также на портале первоначальной конфигурации. Настройка MQTT сервера проводится в wi-fi менеджере при первом запуске. Для этого создается открытая точка доступа с именем, начинающимся с ESP. Нужно указать адрес MQTT сервера, имя пользователя и пароль для доступа к вашему MQTT серверу.

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

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

Добавление в Home Bridge и Apple HomeKit

Как я уже говорил, с поддержкой MQTT брокера лампу стало возможно интегрировать во все системы управления умным домом, поддерживающих платформу MQTT. Если у вас еще не установлен MQTT брокер, необходимо его установить. Как это сделать - описано в статье - просто переходим до места "Установка MQTT брокера Mosquitto" и делаем все по инструкции. Там описана установка без пароля, при настройке лампы можно указывать любые пароли для 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"
        }
    ]

Если доступ к вашему MQTT брокеру осуществляется с логином и паролем, необходимо добавить еще пару строчек в конфигурацию после строчки "url":

"username": "MQTT_username",
"password": "MQTT_password",

Здесь вместо 3bd20b нужно прописать ID чипа ESP. Он отображается в консоле Arduino IDE, а также на портале конфигурации при первоначальной настройке. Перезагружаем HomeBridge, после перезагрузки перезагружаем лампу. В итоге после перезагрузки Home Bridge просто и легко у нас в Home Kit  появится два новых устройства: RGB лампа и "телевизор", выходами которого можно переключать эффекты. 

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

Управляющие топики MQTT (для интеграции с прочими системами домашней автоматизации)

Получение статуса лампы:

-- статус включено/выключено. Статус включено "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"

Интеграция с Яндекс Алисой

Как же без "импортозамещения"? Сервис умного дома Яндекс хоть очень молод, можно сказать находится в стадии бета тестирования, но уже сейчас он может управлять умными устройствами вашего дома на русском языке. Для интеграции лампы 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

Вместо 8000 нужно указать порт, который прокинут от лампы с порта 80 в интернет. 

Изменения относительно оригинальной прошивки

  • Поддержка работы с MQTT брокером
  • Нативная интеграция с Home Assistant методом Discovery
  • Возможность ОТА обновления через сетевой порт с интересным эффектом "матрица" во время обновления
  • Возможность выбирать цвет из палитры Home Assistant либо через MQTT брокер
  • Автоматическое обнаружение подключенной сенсорной кнопки и корректная работа без нее
  • Корректная работа в случае потери WiFi сигнала либо MQTT брокера (адаптивное подключение)
  • Возможность настроить работу как с MQTT брокером, так и без него без повторной компиляции прошивки. Для этого достаточно при настройке вместо адреса MQTT сервера ввести none
  • Добавлен веб интерфейс управления (не свой, доработал, взял наработки CoOre, который так же создал Fork проекта на GitHub) - достаточно перейти по адресу http://ESP-ID.local/. Вместо ID нужно вписать ID чипа ESP8266. Он отображается в названии лампы и в entity_id после знака подчеркивания, а также в консоле Arduino IDE и на портале первоначальной конфигурации.
  • Доработана интеграция с Яндекс Алисой через интеграцию с Домовенком Кузи.

Я думаю проект будет дальше развиваться и дорабатываться, есть пара интересных идей, которые я в скором времени реализую в этом проекте. А пока все желающие могут собрать и поставить прошивку из репозитория на GitHub. Прошивка пока находится в бета версии, в дальнейшем возможны изменения. 


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Александр Вайдуров (AlexAW)

    Классно! Подключаюсь к тестированию.

  2. (HEoH)
    (HEoH) 20 дней назад

    очень понравилось, соберу себе такую

  3. (aurodionov)
    (aurodionov) 20 дней назад

    тоже заказал матрицу и по мелочи , зацепило ... надо делать :)

    • (gonczarov)
      (gonczarov) отредактировано 19 дней назад
      Комментарий был удален
  4. Александр Вайдуров (AlexAW)

    Ну вот, пару дней тестирования, усердной работы автора, и лампа становится вполне приемлемым продуктом. Мне нравится и функционал и эксплуатационные фишки. И устойчивость работы улучшилась. 

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) 19 дней назад

      Да, спасибо Александру за тестирование, удалось сделать прошивку значительно стабильней и быстро исправить найденные баги. 

  5. Владимир Иванов (saylar964)

    Доброго времени суток, подскажите, пожалуйста, все сделал по инструкции, при добавлении в home Bridge и Apple HomeKit в конфигурации менял только  ID чипа ESP на свой. По адресу http://esp-6ac738.local/ заходит, в Home Kit  появились два новых устройства, но они не реагируют. Где то сделал ошибку, скорее всего при авторизации не верно указал ip адрес MQTT (я указал адрес малинки). Правильно ли сделал и нужно ли еще менять что либо в конфигурации, ip адрес, порт?  

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) отредактировано 16 дней назад

      А MQTT брокер установлен на малинке? Как установить описано здесь. Если установлен, то с паролем или без пароля? Если с паролем, то их надо добавить в конфигурацию:

      "url": "http://127.0.0.1:1883",
      "username": "MQTT_username",
      "password": "MQTT_password",

      Так же нужно указать правильный логи н пароль при настройке лампы в случае использования MQTT с логином и паролем. 

      • Владимир Иванов (saylar964)

        У меня установлен HomeBridge и для управления из Home Bridge я по инструкции установил плагин homebridge-mqttthing. Больше ни чего не устанавливал. 

  6. Владимир Иванов (saylar964)

    Я установил  MQTT брокер по ссылке выше, там ни где не требовалось вводить пароль и так далее (честно говоря не изучал как им пользоваться) но все равно c home kit не управляется((((  

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) 16 дней назад

      Попробуй перезагрузить малинку, потом после перезагрузки минут через пять перезагрузить ESP. По ссылке выше установка брокера без пароля. В качестве адреса MQTT брокера нужно указать IP адрес малинки (если установка была на нее). 

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) 16 дней назад

      Надо убедиться, что mosquitto запустились: 

      sudo service mosquitto status

      Должно отображаться что-то вроде:

      Active: active (running)

      После этого перезагрузить лампу. И да, нужно убедиться, что IP адрес в настройках лампы введен корректно. Можно перепрошить устройство, полностью его стерев либо как вариант отключить на время роутер и перезагрузить лампу. Тогда она откроет на время точку доступа и конфигурационный портал. 

  7. Владимир Иванов (saylar964)

    А вообще без HA инструкция по добавлению отдельно в Home Bridge и Apple HomeKit можно рассматривать как отдельно? 

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) отредактировано 16 дней назад

      Да, для работы лампы устанавливать ХА не обязательно. Для работы требуется только MQTT брокер, HomeBridge и плагин homebridge-mqttthing. Ну и естественно моя версия прошивки. 

      • Владимир Иванов (saylar964)

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

  8. (sega66)
    (sega66) 14 дней назад

    Спасибо за прошивку!
    Хочется прикрутить Вашу прошивку к Яндекс-станци

     Для этого надо сделать HTTP запрос типа:
    http://192.168.1.16/control?cmd=GPIO,12,1 
    Можно ли это в Вашей прошивке?
    Если можно-напишите пример запроса на включение лампы.

  9. (sega66)
    (sega66) 14 дней назад

    "".....Пример: http://site.com/set-light/{1}, где {1} в это место будет подставлено значение найденое во фразе вкл или выкл передается как 0 - выкл и 1 - вкл, так же можно получить фразу которая пришла от Алисы матка {in}
    по этому url будет отправлен GET запрос"

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) отредактировано 14 дней назад

      Насколько я понял, IP адрес устройства должен смотреть напрямую в интернет? Не очень безопасная схема. Там у него есть интеграция с MQTT, можно вывести MQTT сервер в интернет (либо использовать внешний) и управлять через MQTT (с логином и паролем). Все это доступно без модификации текущей прошивки. 

  10. (sega66)
    (sega66) 14 дней назад

    Как это реализовать? У меня нет  MQTT сервера:(

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) отредактировано 14 дней назад

      Можно поискать бесплатные. Например у  www.cloudmqtt.com есть бесплатные тарифные планы для MQTT хостинга, либо установить свой на малинку по инструкции выше. Там при настройке в сервисе домовенка в качестве Payload нужно указать ON или OFF для включения или выключения лампы. Так же можно добавить включение эффектов. Если будет время, позже добавлю инструкцию. 

  11. (sega66)
    (sega66) 14 дней назад

    Спасибо! Если найдете время, напишите как интегрировать лампу с внешним  MQTT на примере  www.cloudmqtt.com 

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) 14 дней назад

      Маякни в телегу, сообщу когда добавлю инструкцию. Либо проверяй время от времени запись в блоге. 

  12. (sega66)
    (sega66) 14 дней назад

    Телеги нет:( Буду проверять блог!

  13. Белояр Иван (Ivan711)
    Белояр Иван (Ivan711) 10 дней назад

    Сюда бы еще приконтачить светомузыку

    • (aurodionov)
      (aurodionov) день назад

      так допишите , аналоговый вход свободен + фурье

  14. Maksim Zhdanov (zhdanovich_q)
    Maksim Zhdanov (zhdanovich_q) день назад

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

  15. (aurodionov)
    (aurodionov) день назад

    повторил , для нижней подставки использовал такую штуку ,подошла идеально .
    нужна ТОЛЬКО РОЗЕТКА БЕЗ ДАТЧИКА 

    69496e9b-f6d1-11e8-bbad-00155d0a1f03_f5e5b6ab-0f00-11e9-bbb8-00155d0a2206.jpg
К списку блогов

Скидки для сообщества

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Похожие записи

20 января 2019, 17:39
Создание очень бюджетной автоматизации рулонных штор
25 марта 2019, 05:02
Нативный Homekit на ESP8266 Relay_8CH
13 февраля 2019, 22:00
Подключение радио на Xiaomi Gateway к Home Assistant c дальнейшим использованием в автоматизациях
19 апреля 2019, 20:53
Требуется ваше мнение!
06 февраля 2019, 12:02
Автоматизированное открытие/закрытие окна
04 апреля 2019, 12:45
Самое важное из апдейта Home Assistant 0.91-0.91.4 от 03.04.19.
26 апреля 2019, 08:32
Обновление Умного зеркала, доработали, причесали, и теперь почти закончили наворачивать функционал зеркала.
21 марта 2019, 11:59
Самое важное из апдейта Home Assistant 0.9 от 20.03.19.
21 февраля 2019, 21:12
Самое важное из апдейта Home Assistant 0.88 от 20.02.19.
07 февраля 2019, 21:12
Самое важное из апдейта Home Assistant 0.87 от 06.02.19.