Ночник за 10$ — добавляем ESPHome для управления в Home Assistant

Были куплены ночники по 10$ за штуку на али, специально для переделки под esp8266

Вот такие:

Внутри находится плата со светодиодами RGBWW и батареей 18650, сверху расположен тач сенсор:

Начнем подключать esp8266

Для начала я припаял землю (GND — черный провод) и плюс (VCC — фиолетовый провод). Именно на этой ножке чипа плюс есть всегда — и от сети, и от батареи

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

Дальше припаял контакты для управления светодиодами. На фото отметил куда именно припаял. Цвет проводов соответствует цветам led:

Теперь подключим это к esp8266. У меня это плата NodeMCU:

Схема подключения:

GND LED  >  GND ESP8266
VCC  LED  >  Vin (5v) ESP8266

RED LED       >  D5 ESP8266
GREEN LED  >  D6 ESP8266
BLUE    LED  >  D7 ESP8266
WHITE  LED  >  D8 ESP8266

Теперь в ESPHome делаем прошивку со следующей конфигурацией:

esphome:
  name: bedroom_bedside_nightlight1
  platform: ESP8266
  board: nodemcuv2
  esphome_core_version: latest

# Wifi
wifi:
  ssid: '*****'
  password: '*****'
  reboot_timeout: 60min
  manual_ip:
    static_ip: ***.***.***.***
    gateway: ***.***.***.***
    subnet: ***.***.***.***

# log
logger:

# Home Assistant API
api:
  password: '*****'

ota:
  password: '*****'

# led pins
output:

  - platform: esp8266_pwm
    id: output_red
    pin: D5
    max_power: 0.75


  - platform: esp8266_pwm
    id: output_green
    pin: D6
    max_power: 0.75


  - platform: esp8266_pwm
    id: output_blue
    pin: D7
    max_power: 0.75
    

  - platform: esp8266_pwm
    id: output_white
    pin: D8
    max_power: 0.75

# light
light:
  - platform: rgbw
    name: bedroom_bedside_nightlight1
    red: output_red
    green: output_green
    blue: output_blue
    white: output_white
    effects:
      - strobe:
      - flicker:
      - random:

# sensors
sensor:

# signal wifi
  - platform: wifi_signal
    name: bedroom_bedside_nightlight1_wifi
    update_interval: 15s

# nightlight ip
text_sensor:
  - platform: wifi_info
    ip_address:
      name: bedroom_bedside_nightlight1_ip

и проверяем:

Клеевым пистолетом я приклеил все провода к плате, чтобы не оторвались, и esp к ножке ночника:

Единственное, что я не сделал, так это не смог разобраться с верхним сенсором, в планах купить ему на замену готовый модуль на али, чтобы управлять ночником не только из Home Assistant, но и физически, тачем.

Update 18.12.2020:

Тач сенсор для esp8266 я встроил уже давно, не находил время написать об этом. Для этого использовал вот такой сенсор ttp223:

В его подключении нет ничего сложного, но про него можно рассказать много интересного. Возможно позже этим займусь.

Я его посадил на клей взамен штатного тача, вот таким образом:

Вывел его в плоскость с крышкой и он отлично работает уже второй год

Принцип управления одним тачем — на прикосновение включение/отключение, на долгое нажатие изменение яркости. Если ночник выключен — он включится и будет увеличивать яркость до максимума, а если включен и держать тач — будет уменьшать, пока не выключится. Итоговый конфиг для ESPHome получился следующий:

esphome:
  name: bedroom_bedside_nightlight1
  platform: ESP8266
  board: nodemcuv2

# Wifi
wifi:
  ssid: 'WRLS'
  password: 'pass'

logger:

api:
  password: 'bedroom_bedside_nightlight1'

ota:
  password: 'bedroom_bedside_nightlight1'

# Пины светодиодов
output:

  - platform: esp8266_pwm
    id: output_red
    pin: D5
    max_power: 0.75


  - platform: esp8266_pwm
    id: output_green
    pin: D6
    max_power: 0.75


  - platform: esp8266_pwm
    id: output_blue
    pin: D7
    max_power: 0.75
    

  - platform: esp8266_pwm
    id: output_white
    pin: D8
    max_power: 0.75

# Ночник
light:
  - platform: rgbw
    name: bedroom_bedside_nightlight1
    id: bedroom_bedside_nightlight1
    red: output_red
    green: output_green
    blue: output_blue
    white: output_white
    effects:
      - strobe:
      - flicker:
      - random:

# Датчики
binary_sensor:
  - platform: gpio
    pin: 
      number: D1
    name: bedroom_nightlight1_light_button
    id: bedroom_nightlight1_light_button
    on_click:
      then:
      - light.toggle: bedroom_bedside_nightlight1

# Автоматизация для изменения яркости
    on_press:
      then:
      - if:
          condition: 
            light.is_off: bedroom_bedside_nightlight1
          then:
          - delay: 0.5s
          - while:
              condition:
                binary_sensor.is_on: bedroom_nightlight1_light_button
              then:
                - light.dim_relative:
                    id: bedroom_bedside_nightlight1
                    relative_brightness: 5%
                    transition_length: 0.1s
                - delay: 0.1s
          else:
          - delay: 0.5s
          - while:
              condition:
                and:
                  - binary_sensor.is_on: bedroom_nightlight1_light_button
                  - light.is_on: bedroom_bedside_nightlight1
              then:
                - light.dim_relative:
                    id: bedroom_bedside_nightlight1
                    relative_brightness: -5%
                    transition_length: 0.1s
                - delay: 0.1s

Как видно по конфигу, для тача я задействовал пин D1:

Для питания 3.3в от NodeMCU:

Также были куплены наклейки на крышку в области тача взамен родных:

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

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

Второй нюанс — тач. А точнее то, что он всего один. Смотря на комментарии к этой записи я стал подумывать о замене esp8266 на esp32 для возможности подключения родной тач-панели. Еще esp32 будет полезна для реализации присутствия в комнате через BLE, что тоже для меня интересно. Поэтому в ближайшее время планирую ставить ESP32 + родной тач и покажу как задействовать родной переключатель питания для отключения есп.

Поделитесь с друзьями

комментарий 31

  1. Для штатного тача стоит заменить nodemcu на esp32. Там есть поддержка из коробки тачевых кнопок. А дальше дело техники и правил.

  2. Здравствуйте! Помогите пожалуйста. Никак не получается создать прошивку в ESPHome для платы esp32doit-devkit-v1. Какую платформу указать? И какие пины? Платформы esp8266_pwr в ESP32 нет.

    • Здравствуйте! На esp32 вместо pwm используется ledc
      Пины, работающие с этим компонентом, указаны на странице по ссылке выше. Для esp 32 Doit я использовал platform: esp32 и board: esp32doit-devkit-v1

      • Правильно?
        # led pins

        output:

        # output_red
        — platform: ledc
        id: gpio_5
        pin: GPIO5
        max_power: 0.75

        # output_green
        — platform: ledc
        id: gpio_18
        pin: GPIO18
        max_power: 0.75

        # output_blue
        — platform: ledc
        id: gpio_19
        pin: GPIO19
        max_power: 0.75

        # output_white
        — platform: ledc
        id: gpio_21
        pin: GPIO21
        max_power: 0.75

        # light
        light:
        — platform: rgbw
        name: bedroom_bedside_nightlight1
        red: gpio_5
        green: gpio_18
        blue: gpio_19
        white: gpio_21
        effects:
        — strobe:
        — flicker:
        — random:

        # sensors
        sensor:

        # signal wifi
        — platform: wifi_signal
        name: bedroom_bedside_nightlight1_wifi
        update_interval: 15s

        # nightlight ip
        text_sensor:
        — platform: wifi_info
        ip_address:
        name: bedroom_bedside_nightlight1_ip

  3. Я правильно понимаю, что ‘из коробки’ этот ночник тачем плавно цвет менять не умеет и дает только 7 цветов?

    • Даже не помню что они могли из коробки, я то их приобретал для опытов) цветов мало, это помню. А насчет плавности включения точно не скажу. Меня интересовала возможность удаленного управления из Home Assistant и локального с помощью тача, что я и реализовал.

      • Судя по статье управление цветом с тача сделать не получилось?

        • Получилось, просто позже написания статьи. Где-то в комментариях я писал об этом

          • А вы можете дописать статью или сделать вторую часть (про ESP8266 + верхний тач)?

          • Да, дополню. Только я там использовал другой тач, вот такой модуль:

          • Т.е. вы поставили 7 тачевых кнопок с Али?

          • Нет, одну вместо штатного модуля. Нажатие включает/выключает, долгое нажатие меняет яркость. Цвет меняется из HA. Мы привыкли, обычно они у нас светят теплым белым, поэтому сменой цвета пользуемся редко

          • Понял. Буду ждать дополнения статьи. Спасибо.

      • Приехал мне вчера такой ночник.
        По регулировке цвета. Сенсоров цвета там 6. И, похоже, он умеет делать полутона между ними когда срабатывают два соседних сенсора.
        Хочется сохранить регулировку цвета с тача.
        Даташит на МС сенсора я не нашел, но судя по схеме включения она видимо выдает готовые управляющие сигналы на ключи светодиодов. Т.е. использовать ее не получится.
        Но есть такая микруха TTP226. Старшая сестра TTP223, но с 8 кнопками. Умеет: мультитач; работать в режиме 8*1, 4*2, 3*3; и по последовательному интерфейсу. Китайцы на Али продают и саму МС, и модули на ее основе. Т.е. можно от модуля сенсорные площадки отрезать и подключить штатные сенсоры. Это как один вариант.И второй — это сделать диск с семью сенсорами цвета (ну как бы цвета радуги Кр-Ор-Жел-Зел-Гол-Син-Ф). И подключится или от отрезаного модуля, или сделать на JLCPCB плату c сенсорами и распаять на ней TTP226 с обвеской. Благо там элементов меньше десятка. Останется только поковыряться с прошивкой чтобы подключить и обработать эти кнопки.

        • Будет очень круто, если реализуете задуманное, идея интересная. У меня обычный TTP223, посаженный на клей взамен штатного тача и я им пользуюсь только чтобы включить/выключить или изменить яркость. Если найдете время — обязательно покажите свою реализацию.

  4. Добрый день.
    Подскажите можно где-то прочитать про настройку ESPHome на русском?

    • Здравствуйте! Я обычно пользуюсь автопереводом их вики страниц в chrome, вроде все понятно. Если что-то не ясно, тогда уже через гугл искать на других ресурсах, опять же с переводчиком

  5. подскажите, каким образом выяснили куда именно припаяться для управления светодиодами? есть одна игрушка, ещё не вскрывал, не хочется сходу взять и всё сломать)

    • Мультиметром искал. Разбирать в любом случае придется, если хотите попробовать добавить управление по wifi. Главное несколько раз все перепроверить, перед тем, как что-то паять)

  6. Привет.Подскажите как подключить сенсорную кнопку к есп8266? На какие пины и что прописать?

    • Добрый день. Использовал ttp223 тач сенсор без каких-либо изменений. Просто посадил его на клей клеевым пистолетом.

      Вот часть моего конфига:

      # Пины светодиодов
      output:
      
      
        - platform: esp8266_pwm
          id: output_red
          pin: D5
          max_power: 0.75
      
      
      
      
        - platform: esp8266_pwm
          id: output_green
          pin: D6
          max_power: 0.75
      
      
      
      
        - platform: esp8266_pwm
          id: output_blue
          pin: D7
          max_power: 0.75
          
      
      
        - platform: esp8266_pwm
          id: output_white
          pin: D8
          max_power: 0.75
      
      
      # Ночник
      light:
        - platform: rgbw
          name: bedroom_bedside_nightlight1
          id: bedroom_bedside_nightlight1
          red: output_red
          green: output_green
          blue: output_blue
          white: output_white
          effects:
            - strobe:
            - flicker:
            - random:
      
      
      # Тач
      binary_sensor:
        - platform: gpio
          pin: 
            number: D1
          name: bedroom_nightlight1_light_button
          id: bedroom_nightlight1_light_button
          on_click:
            then:
            - light.toggle: bedroom_bedside_nightlight1
      
      
          on_press:
            then:
            - if:
                condition: 
                  light.is_off: bedroom_bedside_nightlight1
                then:
                - delay: 0.5s
                - while:
                    condition:
                      binary_sensor.is_on: bedroom_nightlight1_light_button
                    then:
                      - light.dim_relative:
                          id: bedroom_bedside_nightlight1
                          relative_brightness: 5%
                          transition_length: 0.1s
                      - delay: 0.1s
                else:
                - delay: 0.5s
                - while:
                    condition:
                      and:
                        - binary_sensor.is_on: bedroom_nightlight1_light_button
                        - light.is_on: bedroom_bedside_nightlight1
                    then:
                      - light.dim_relative:
                          id: bedroom_bedside_nightlight1
                          relative_brightness: -5%
                          transition_length: 0.1s
                      - delay: 0.1s
      
      
      
        • Здравствуйте. У меня опять вопрос. Сверху прочитал,что если использовать есп32,то можно оставить и родной тач? Жене и ребенку понравилась лампа просят оставить. Можно ли как то это сделать?

          • Здравствуйте, тоже в планах попробовать подцепить родной тач сенсор, нужно время выделить на изучение. Для родных оставьте один, а для опытов приобретите другой, я так делал)

          • Ждём с нетерпением продолжение про ESP32

  7. Классно придумали!
    Я очень хочу световой будильник, который можно легко брать в поездки.

    Я полный новичок в этом деле и есть пара вопросов:

    1. Есть ли возможность запрограммировать режим рассвета, как в световых будильниках филипс (красный-оранжевый-желтый-белый)? Вот пример работы https://www.youtube.com/watch?v=ms3t1Lc1gMI. Таких же классных аналогов не нашла.
    2. Можно ли настроить, чтобы по тачу был рассвет через 8 часов? Чтобы как бы был автономный светильник, без подключения к сети.

    Благодарю за такую крутую статью. Интересно будет посмотреть с esp32.
    С наступающим Новым годом! 🙂

    • Спасибо) Я думаю можно будет попробовать средствами esphome реализовать режим рассвета. Тоже нравится, нужно будет заняться.
      Второй пункт реализовать просто, если будет реализован первый)
      Насчёт того, чтобы брать его с собой — нужно будет посмотреть что там у esp32 в плане энергосбережения. Из коробки ночник держал от батареи прилично дольше, чем с esp8266.
      Интересную идею подкинули, спасибо)
      И вас с наступающим!?

      • Спасибо за подробный ответ!
        Посмотрела пару видео у Гайвера, поняла, что все можно сделать, но боюсь, что реализация этого займет много времени.
        Буду следить за вашими проектами!)

      • а esp32 будет интереснее, т.к. достаточно будет телефона с подключением bluetooth, не нужно будет постоянно подключаться к wi-fi

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Exit mobile version