Just wanted to share my excitement — I finally got the climate_ir_lg
platform working with my LG S09EQR air conditioner!
Even better — it now receives signals from the original LG remote via an ESP32 module.
However, this required manually adjusting the timing parameters, since the duration of the first pulse and pause are very different from what the plugin originally expects.
Here’s my working .yaml
config:
esphome:
name: esp32-lg-ir
friendly_name: ESP32 LG IR
esp32:
board: esp32dev
framework:
type: arduino
wifi:
ssid: "ssid_name"
password: "your_password"
manual_ip:
static_ip: x.x.x.x
gateway: x.x.x.x
subnet: 255.255.255.0
ap:
ssid: "ESP32_Fallback"
password: "87654321"
captive_portal:
ota:
platform: esphome
password: ""
api:
encryption:
key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
logger:
level: DEBUG
external_components:
- source: custom_components
remote_transmitter:
id: ir_sender
pin: GPIO14
carrier_duty_percent: 50%
remote_receiver:
id: ir_receiver
pin:
number: GPIO33
mode: INPUT
inverted: true
dump: all
buffer_size: 2kb
idle: 25ms
tolerance: 50%
climate:
- platform: climate_ir_lg
header_high: 3100us # LG remote pulse (in microseconds)
header_low: 9900us # LG remote pause
bit_high: 470us # Bit high duration
bit_one_low: 1620us # Bit 1 low duration
bit_zero_low: 570us
id: green_room_ac
name: "LG Air Conditioner"
transmitter_id: ir_sender
receiver_id: ir_receiver
visual:
min_temperature: 18
max_temperature: 30
temperature_step: 1
Hope this helps someone who’s struggling with a similar issue.
The key was adjusting the header_high
and header_low
values to match the real-world remote behavior.