[EN] Reusing old RGB strip remotes with ESP32, ESPHome & HA Blueprint
Also there is a german version of the blueprint and esphome config that you can find at github Link at the bottom of this posting.
Instead of throwing old cheap hardware away, I decided to give this little Dymond branded RGB strip remote from the shop called Action a second life ![]()
I simply cut off the original IR receiver from the LED strip controller and connected it directly to an ESP32.
Now the remote can trigger anything inside Home Assistant: lights, scenes, scripts, automations, coffee machine apocalypse mode… whatever you want.
The original hardware is surprisingly usable and perfect for small DIY smart home projects.
Wiring
The IR receiver has 3 cables:
- VCC → 3.3V on ESP32
- GND → GND on ESP32
- Signal → any GPIO pin (in my case GPIO23)
That’s basically all you need.
Buttons were pressed and numbered from top left to bottom right (see photo):
1 , 2 , 3 , 4
5 , 6 , 7 , ...
How it works
Currently I use this together with Home Assistant and ESPHome.
The ESP32 device itself only uses:
- the recycled IR receiver
- an MQ135 sensor (completely unrelated to this project and can simply be ignored)
There are basically two ways to handle this setup:
1. Home Assistant handles the automation
The button press triggers an event and Home Assistant does the logic.
2. ESP32 handles everything locally
All logic runs directly on the device itself without Home Assistant automations.
Personally I prefer option 1 because I don’t need to constantly recompile and reflash the firmware every time I want to change a button action.
For this project I only share option 1 because this is what I currently use.
Included
- IR signal dumps
- ESPHome configuration
- Home Assistant Blueprint
- English + German versions (on Github)
note: blueprint and esphome config need to be same language to work!
here you can find relevant photos, german version etc.
English Blueprint and config:
esphome:
name: esphome_web_ir
friendly_name: IR Receiver
name_add_mac_suffix: false
esp32:
board: esp32dev
framework:
type: arduino
logger:
level: DEBUG
api:
encryption:
key: "redacted"
ota:
- platform: esphome
improv_serial:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
min_auth_mode: "WPA2"
remote_receiver:
pin:
number: GPIO32
inverted: true
mode:
input: true
pullup: true
dump: all
binary_sensor:
- platform: remote_receiver
name: "Remote Button 1"
nec:
address: 0xEF00
command: 0xFF00
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "1"
- platform: remote_receiver
name: "Remote Button 2"
nec:
address: 0xEF00
command: 0xFE01
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "2"
- platform: remote_receiver
name: "Remote Button 3"
nec:
address: 0xEF00
command: 0xFD02
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "3"
- platform: remote_receiver
name: "Remote Button 4"
nec:
address: 0xEF00
command: 0xFC03
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "4"
- platform: remote_receiver
name: "Remote Button 5"
nec:
address: 0xEF00
command: 0xFB04
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "5"
- platform: remote_receiver
name: "Remote Button 6"
nec:
address: 0xEF00
command: 0xFA05
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "6"
- platform: remote_receiver
name: "Remote Button 7"
nec:
address: 0xEF00
command: 0xF906
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "7"
- platform: remote_receiver
name: "Remote Button 8"
nec:
address: 0xEF00
command: 0xF807
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "8"
- platform: remote_receiver
name: "Remote Button 9"
nec:
address: 0xEF00
command: 0xF708
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "9"
- platform: remote_receiver
name: "Remote Button 10"
nec:
address: 0xEF00
command: 0xF609
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "10"
- platform: remote_receiver
name: "Remote Button 11"
nec:
address: 0xEF00
command: 0xF50A
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "11"
- platform: remote_receiver
name: "Remote Button 12"
nec:
address: 0xEF00
command: 0xF40B
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "12"
- platform: remote_receiver
name: "Remote Button 13"
nec:
address: 0xEF00
command: 0xF30C
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "13"
- platform: remote_receiver
name: "Remote Button 14"
nec:
address: 0xEF00
command: 0xF20D
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "14"
- platform: remote_receiver
name: "Remote Button 15"
nec:
address: 0xEF00
command: 0xF10E
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "15"
- platform: remote_receiver
name: "Remote Button 16"
nec:
address: 0xEF00
command: 0xF00F
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "16"
- platform: remote_receiver
name: "Remote Button 17"
nec:
address: 0xEF00
command: 0xEF10
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "17"
- platform: remote_receiver
name: "Remote Button 18"
nec:
address: 0xEF00
command: 0xEE11
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "18"
- platform: remote_receiver
name: "Remote Button 19"
nec:
address: 0xEF00
command: 0xED12
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "19"
- platform: remote_receiver
name: "Remote Button 20"
nec:
address: 0xEF00
command: 0xEC13
filters:
- delayed_off: 500ms
on_press:
then:
- homeassistant.event:
event: esphome.ir_remote
data:
button: "20"
Have fun turning old e-waste into useful smart home gadgets ![]()

