2024/10/25

ESPHome esp8266_pwm 컴포넌트



알리에서 저가 5v led strip을 구매 후 usb relay에 연결해 싱크대 수조위에 설치. 조명의 페이드인/아웃 기능이 아쉬워 구글링해보니 esp8266에서 소프트웨어 pwm 컴포턴트를 쓸 수 있었음.
바로 esphome이 플래싱된 usb relay에 pwm 설정하고 테스트해보니 꽤 만족했고 주방 재실센서에 연결해 자동화.

교류전원에 연결되는 led전구는 아쉽게 중간에 AC 디밍 모듈이 필요. 그리고 esp32에선 ESP32 LEDC 컴포넌트를 통해 구현.


usb-relay-1.yaml
esphome:
  name: usb-relay-1
  area: Kitchen
  friendly_name: USB Relay1

esp8266:
  board: esp01_1m

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

status_led:
  pin:
    number: GPIO16
    inverted: false

output:
  - platform: esp8266_pwm
    id: pwm_output
    pin: GPIO5
    frequency: 1000 Hz
    inverted: false

light:
  - platform: monochromatic
    name: "USB Strip"
    output: pwm_output
    id: usb
    default_transition_length: 1s
  - platform: status_led
    name: "USB-Relay-2 LED"
    restore_mode: ALWAYS_OFF
    entity_category: config
    pin:
      number: 14

switch:
  - platform: restart
    name: "USB-Relay-1 Restart"

  - platform: template
    id: "switch1"
    name: "USB-Relay-1"
    lambda: |-
      return id(usb).current_values.get_state();
    turn_on_action:
      - light.turn_on:
          id: usb
    turn_off_action:
      - light.turn_off:
          id: usb

binary_sensor:
  - platform: gpio
    id: button
    pin:
      number: GPIO04
      mode: INPUT_PULLUP
      inverted: True
    on_press:
      - switch.toggle: "switch1"