How to Convert Leroy Merlin’s INSPIRE EMINGO Ceiling Light to ESPHome

I recently bought the INSPIRE EMINGO ceiling lamp from Leroy Merlin.

It comes with a proprietary RF remote but the remote is unreliable (button presses often don’t register), and the lamp frequently loses its brightness and color temperature settings.

After seeing a teardown of the similar Leroy Merlin GDANSK lamp here, I decided to fully replace the RF controller with an ESP32 running ESPHome.

This has given me reliable control, proper CCT/brightness mixing, and a native Home Assistant integration.

Below is a complete guide for converting the INSPIRE EMINGO to ESPHome.

Hardware info

  • Lamp Model: INSPIRE EMINGO
  • LED Driver Model: GPD-RCL-RP100-1780-1-CE (technical data sheet)
  • Driver Specs
    • Output: 60 V DC, 100 W
    • Luminous flux: 13500 lm
    • Two LED strips with a shared brightness setting but optionally independent color temperature

Some pictures

RF module from the top:

RF module from the bottom:

Oscilloscope captures:

PWM Pin - 90% duty for brightness at 90%

PWM Pin - 10% duty for brightness at 10%

CCT1 or CCT2 Pin - 90% duty for almost fully cold white

Pinout and How the Lamp Works

In practice, the RF module only makes use of 6 out of 9 pins. It communicates with the LED driver using three PWM signals:

Pin Function Notes
VCC (3.3V) Powers the RF board Not enough current for an ESP32
GND Ground
PWM Brightness 4 kHz PWM, 0–100%
CCT1 Warm/Cold mixing (Strip 1) 4 kHz PWM, inverted
CCT2 Warm/Cold mixing (Strip 2) Same as CCT1
Unused
Unused
SFP (or SP/EN) Must be held at 3.3V Enable signal
AC Unused

Behavior

  • PWM = overall brightness
  • CCT1/CCT2 = color temperature
    • 0% → Warm
    • 100% → Cold
  • SFP must stay high or the driver disables output.
  • VCC cannot power an ESP32 (too little current).
  • A nearby 5.3V pad can power the ESP32 reliably.

Here is the connection diagram with the pins that will be reused:

Hardware Modifications

The 3.3v VCC pin looked like the most obvious pin to power the ESP32 but turns out it doesn’t provide enough current so the ESP32 was not even booting properly.

Fortunately, I was able to find a 5.3v pin just a bit away from the other pins. It provides 5.3v with enough current to reliably power the ESP32.

To start, I unsoldered the original RF module. Then I soldered some jumper wires. These soldering pins are really small and close to one another. I’m not too experienced in soldering so my soldering job looks quite bad but it works.

Then I connected the jumper wires to an ESP32-C6 Super Mini. Here’s a wiring table.

ESP32-C6 Pin LED Driver Pad Purpose
5V 5.3V pad Power input
GND GND Ground
3.3V SFP Keep driver enabled
GPIO 18 PWM Brightness
GPIO 19 CCT1 Color temp (strip 1)
GPIO 20 CCT2 Color temp (strip 2)

ESPHome Configuration

Below is the configuration I used. It implements:

  • 4 kHz hardware PWM (matches the driver’s original PWM frequency)
  • Paired CCT outputs (both strips always in sync)
  • Automatic brightness + CCT restoration after reboot
  • Optional Thread support
esphome:
  name: ceiling-lamp
  friendly_name: Ceiling lamp

esp32:
  board: esp32-c6-devkitc-1
  variant: esp32c6
  flash_size: 4MB
  framework:
    type: esp-idf
    version: latest

preferences:
  # Writes color temp and brightness settings to flash every X seconds so we can
  # recover the same state after the device reboots.
  # Careful, might lead to quicker flash wearout.
  flash_write_interval: 20s

api:
  encryption:
    key: "YOUR_ENCRYPTION_KEY"

logger:
  level: INFO

ota:
  - platform: esphome

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

## OpenThread config. Alternative to WiFi - START ##
#network:
#  enable_ipv6: true
#openthread:
#  # OpenThread TLV value from the Thread information in Home Assistant
#  tlv: YOUR_TLV_VALUE
#  force_dataset: true
## OpenThread config - END ## 

output:
  - platform: ledc
    id: hw_brightness
    pin: GPIO18
    frequency: 4000

  - platform: ledc
    id: hw_cct_strip_1
    pin: GPIO19
    frequency: 4000
    inverted: true

  - platform: ledc
    id: hw_cct_strip_2
    pin: GPIO20
    frequency: 4000
    inverted: true

  - platform: template
    id: temp_brightness
    type: float
    write_action:
      - lambda: |-
          id(hw_brightness).set_level(state);

  # Single output value for both color temperature pins to keep both strips in sync
  - platform: template
    id: temp_cct
    type: float
    write_action:
      - lambda: |-
          id(hw_cct_strip_1).set_level(state);
          id(hw_cct_strip_2).set_level(state);

light:
  - platform: color_temperature
    name: "Lamp"
    id: lamp

    # These are the outputs that the light system writes to
    brightness: temp_brightness
    color_temperature: temp_cct

    gamma_correct: 1.0

    warm_white_color_temperature: 2700 K
    cold_white_color_temperature: 6500 K

    restore_mode: RESTORE_AND_ON

Home Assistant Integration

Once flashed, the lamp appears in Home Assistant as a native ESPHome light entity:

Brightness and color temperature work smoothly and restore after power cycling.

Controlling the Lamp with a Zigbee Knob

I tested the setup using a Tuya Zigbee Smart Knob paired to Home Assistant through Zigbee2MQTT.

Final remarks

Everything works really well. With the Thread configuration I’m able to control the lamp within less than 2-3 seconds after powering it up but that time sometimes increases to 10s+ when the lamp is actually fixed to the ceiling. Maybe an ESP32 with an external antenna would improve reception.

Hope this helps someone else!

2 Likes

Many thanks for this, i’ll will give it a try once i get some time. Waiting for the esp32c6 to integrate zigbee in esphome :slight_smile:

Hi, I recently bought an Inspire Kaoli LED lamp (2 in fact), I was hoping they’d be zigbee but seems like they’re not. The LED driver is different from yours, with a 220v input and a USB-C out (with only 2 wires being used), any clue how I could go about ESP-izing this so I can integrate it with HA?
I know it’s not a lot of infos, but let me know anything that might help you understand what I’m dealing with
Thanks in advance!

Ok, I’m a dumbass, I was looking at the PSU, not the actual controller…

What I need to replace is the cascading device (RF + controller), which should be easy enough to replace with a GLEDOPTO so I don’t go crazy soldering stuff