Site icon kvvhost

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

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

Вот такие:

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

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

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

 

Дальше припаял контакты для управления светодиодами. На фото отметил куда именно припаял. Цвет проводов соответствует цветам 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 + родной тач и покажу как задействовать родной переключатель питания для отключения есп.

Exit mobile version