devices.esphome.io

Tuya RGBW LED controller

Tuya RGBW LED controller

Device Type: light
Electrical Standard: global
Board: esp8266

The Tuya RGBW controller is inexpensive, available on ebay, and can be OTA flashed using tuya-convert, after which it can be OTA flashed via the ESPHome web interface (NOTE: a port must be explicitly set if using a Home Assistant add-on for this, and you need to connect directly to that port instead of using the proxied port via Home Assistant).

image

The configuration below shows an example that can be compiled to a binary firmware file that works correctly for this device, and that cycles through three different brightnesses and an off state based on the number of button presses. The device can also be controlled via Home Assistant, of course, setting specific RGBW combinations and brightness levels.

esphome:
name: example-device
friendly_name: Example Device
esp8266:
board: esp8266
# OTA flashing
ota:
- platform: esphome
wifi: # Your Wifi network details
# Enable fallback hotspot in case wifi connection fails
ap:
# Enabling the logging component
logger:
# Enable Home Assistant API
api:
# Enable the captive portal
captive_portal:
output:
- platform: esp8266_pwm
id: output_red
pin: GPIO14
- platform: esp8266_pwm
id: output_green
pin: GPIO5
- platform: esp8266_pwm
id: output_blue
pin: GPIO12
- platform: esp8266_pwm
id: output_white
pin: GPIO15
globals:
- id: action_state
type: int
restore_value: no
initial_value: '0'
binary_sensor:
- platform: gpio
pin: GPIO13
name: "RGBW Controller Button"
filters:
- invert:
- delayed_on_off: 20ms
on_press:
then:
- lambda: id(action_state) = (id(action_state) + 1) % 4;
- if:
condition:
lambda: 'return id(action_state) == 0;'
then:
- light.turn_off: rgbw_lightstrip1
- if:
condition:
lambda: 'return id(action_state) == 1;'
then:
- light.turn_on:
id: rgbw_lightstrip1
brightness: 60%
- if:
condition:
lambda: 'return id(action_state) == 2;'
then:
- light.turn_on:
id: rgbw_lightstrip1
brightness: 40%
- if:
condition:
lambda: 'return id(action_state) == 3;'
then:
- light.turn_on:
id: rgbw_lightstrip1
brightness: 15%
light:
- platform: rgbw
name: "rgbw_strip_01"
id: rgbw_lightstrip1
red: output_red
green: output_green
blue: output_blue
white: output_white
# Ensure the light turns on by default if the physical switch is actuated.
restore_mode: ALWAYS_OFF
Edit this page on GitHub