Lumiz lampions are decorative, solar- or battery-powered lanterns designed for both indoor and outdoor use. Many Lumiz models come with an infrared (IR) remote control, allowing you to easily adjust brightness, switch the lamps on or off, or timer selection.
The Lumiz remote typically uses a standard IR LED transmitter operating at 38 kHz. Because these IR signals follow a repeatable digital pattern, they can be replicated by an ESP8266 or ESP32 microcontroller equipped with an IR LED. This makes it possible to automate or remotely control Lumiz lampions through Home Assistant with ESPHome — for example, have them turn on automatically at sunset or adjust brightness without ever touching the remote.
By capturing and transmitting these codes (in Pronto format), your microcontroller can behave exactly like the original Lumiz remote — allowing seamless integration of decorative lighting into your home automation system.
Hardware:
- Lumiz solar lantern
- Lumiz battery module
- ESP8266 ESP-01 (1 MB version)
- IR LED (connected to GPIO2 through a transistor or MOSFET for sufficient current). I use the RobotDyn IR module that contains a transistor and resistors.
- Resistor for input signal (1 KΩ on base of npn transistor such as 2n2222)
- Resistor for LED (typically 100–220 Ω for IR LED)
- (Optional) IR receiver (e.g., TSOP38238) connected to GPIO0 for debugging or learning new IR codes
Configuration
# Enable logging
logger:
# Infrared transmitter
remote_transmitter:
id: ir_sender
pin:
number: GPIO2 # IR-LED pin
inverted: True
carrier_duty_percent: 50%
# Optional IR receiver for debugging / future learning
# remote_receiver:
# pin:
# number: GPIO0
# inverted: true
# dump: all
# tolerance: 25%
# filter: 200us
# idle: 4ms
# Global variable to track brightness
globals:
- id: previous_state
type: float
restore_value: False
initial_value: '0.0'
# IR Control Scripts
script:
- id: lampion_on
mode: single
then:
- remote_transmitter.transmit_pronto:
data: "0000 006D 0022 0000 015C 00AD 0017 0015 0017 0015 0017 0015 0017 0015 0017 0015 0017 0013 0019 0015 0017 0015 0017 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0015 0017 0015 0017 0016 0016 0015 0017 0015 0017 0015 0017 0015 0017 0014 0018 0041 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0181"
- id: lampion_off
mode: single
then:
- remote_transmitter.transmit_pronto:
data: "0000 006D 0022 0000 015C 00AD 0017 0011 001B 0015 0017 0015 0017 0015 0016 0015 0017 0015 0016 0015 0017 0015 0017 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0015 0017 0016 0016 0015 0017 0015 0016 0016 0015 0016 0016 0016 0016 0015 0017 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0181"
- id: lampion_brighter
mode: restart
then:
- remote_transmitter.transmit_pronto:
# First 4 are the header <format> <freq> <n_intro> <n_repeat>
data: "0000 006D 0022 0000 015D 00AD 0017 0015 0017 0015 0017 0015 0017 0015 0017 0015 0016 0015 0017 0015 0017 0015 0017 0041 0017 0041 0017 0041 0018 0040 0019 003F 0018 0040 0017 0041 0017 0041 0017 0015 0017 0041 0017 0041 0017 0015 0017 0041 0018 0014 0017 0015 0017 0015 0017 0041 0017 0015 0017 0015 0017 0041 0017 0015 0017 0041 0017 0041 0017 0041 0017 0181"
- id: lampion_dimmer
mode: restart
then:
- remote_transmitter.transmit_pronto:
data: "0000 006D 0022 0000 015D 00AD 0017 0015 0017 0015 0017 0015 0017 0015 0017 0015 0017 0015 0017 0015 0017 0015 0017 0041 0017 0041 0017 0041 0017 0041 0017 0041 0017 0041 0017 0041 0017 0041 0017 0041 0018 0014 0017 0041 0017 0041 0017 0015 0017 0015 0017 0015 0017 0015 0017 0015 0017 0041 0017 0015 0017 0015 0017 0041 0017 0041 0017 0041 0017 0041 0017 0181"
# Monochromatic Light
light:
- platform: monochromatic
id: lampion_light
name: "Lampionnen"
output: lampion_output
restore_mode: RESTORE_DEFAULT_OFF
# Custom Output with IR Control Logic
output:
- platform: template
id: lampion_output
type: float
write_action:
# Keep track of the current brightness state
- if:
condition:
- lambda: return state < 0.01;
then:
- script.execute: lampion_off
- lambda: id(previous_state) = state;
- if:
condition:
- lambda: return id(previous_state) <= 0.01 && state > 0.01;
then:
- script.execute: lampion_on
- lambda: id(previous_state) = state;
- if:
condition:
- lambda: return (state - id(previous_state)) > 0.2;
then:
- script.execute: lampion_brighter
- lambda: id(previous_state) = state;
- if:
condition:
- lambda: return (state - id(previous_state)) < -0.2;
then:
- script.execute: lampion_dimmer
- lambda: id(previous_state) = state;
Once configured, home assistant sees it as a dimmable monochromatic light, allowing you to control brightness and power states seamlessly.
