Link

Lonsonho 9W E27 RGBWW bulb

This configuration is for the Lonsonho 9W E27 RGBWW bulb which is offered as a kit of 2 on aliexpress.com. The bulb has no special LED drivers built in and uses the ESP’s pulse width modulation for dimming.

GPIO Pinout

Pin Function
GPIO4 red channel
GPIO12 green channel
GPIO14 blue channel
GPIO13 warm white channel
GPIO5 cold white channel

Getting it up and running

Tuya Convert

This bulb is a Tuya device, so you’ll need to use tuya-convert to initially get ESPHome onto it. After that, you can use ESPHome’s OTA functionality to make any changes.

  • Put the bulb into “smartconfig” / “autoconfig” / pairing mode by switching the bulb off and on 4 or 5 times in a row in quick succession.
  • The bulb blinks white rapidly to confirm that it has entered pairing mode.

Remember to make the following changes to the example YAML config below:

  • line 6: Give your device a name.
  • line 7: Give an ID name, all lower case and change spaces to underscores.
  • line 10: Set up the static ip for your device that matches to your environment. Remember this IP must be unique in your LAN.
  • lines 26, 27 and 28: gateway is the IP of your router, subnet most certainly 255.255.255.0 and dns1 again the IP of your router.
  • line 31: This is only if a red cross appears here. AP SSIDs can only contain up to 32 symbols. If you’ve chosen a long device name it might exceed. Either shorten the device name or delete right after AP, “ (192.168.4.1)”.
  • line 32: You’ll probably don’t want to complicate your live with a WiFi password when your bulb enters access point mode. Feel free to change from password: ‘1234abcd’ to password: ‘’.

Once you’ve completed the tuya-convert process and flashed ESPHome, you can integrate your bulb in Home Assistant using a lovelace Light card.

Enjoy your hard work and impress some people with the magic 8-]

Basic Configuration

# device declaration: Lonsonho-9W-E27-RGBWW-bulb
# buying from: https://www.aliexpress.com/item/33006613923.html

# variables
substitutions:
  name: 'Fancy Device'
  device: 'fancy_device'
  reboot_timeout: 1h
  update_interval: 1min
  static_ip: 10.10.10.88

# core configuration
esphome:
  name: ${device}
  platform: ESP8266
  board: esp01_1m

# WiFi + network settings
wifi:
  ssid: 'Name of you homes WiFi'
  password: 'your supersecret wifi password'
  fast_connect: true
  reboot_timeout: ${reboot_timeout}
  manual_ip:
    static_ip: ${static_ip}
    gateway: 10.10.10.1
    subnet: 255.255.255.0
    dns1: 10.10.10.1
    dns2: 1.1.1.1
  ap:
    ssid: '${name} AP (192.168.4.1)'
    password: '1234abcd'         #  wifi password when in access point mode. Leave '' for no password.

# captive portal for access point mode
captive_portal:

# enabling home assistant legacy api
api:
  # uncomment below if needed
  # password: 'your secret api password'

# enabling over the air updates
ota:
  # uncomment below if needed
  # password: 'your secret ota password'

# synchronizing time with home assistant
time:
  - platform: homeassistant
    id: homeassistant_time

# Logging
logger:
  level: DEBUG
  # Disable logging to serial
  baud_rate: 0

# Defining the output pins
output:
  - platform: esp8266_pwm
    id: output_red
    pin: GPIO4
  - platform: esp8266_pwm
    id: output_green
    pin: GPIO12
  - platform: esp8266_pwm
    id: output_blue
    pin: GPIO14
  - platform: esp8266_pwm
    id: output_warm_white
    pin: GPIO13    
  - platform: esp8266_pwm
    id: output_cold_white
    pin: GPIO5

# here go the light definitions, effects and restore mode
light:
  - platform: rgbww
    name: '${name}'
    id: '${device}'
    red: output_red
    green: output_green
    blue: output_blue
    warm_white: output_warm_white    
    cold_white: output_cold_white
    warm_white_color_temperature: 2800 K
    cold_white_color_temperature: 6200 K
    
    effects:
      - random:
      - random:
          name: 'random slow'
          update_interval: 30s
          transition_length: 7.5s

    # Attempt to restore state and default to ON if the physical switch is actuated.
    restore_mode: RESTORE_DEFAULT_ON
Edit on GitHub