Skip to content

[codex] Add LG Jet fan mode support#169

Open
joeblack2k wants to merge 1 commit into
JanM321:mainfrom
joeblack2k:codex/lg-jet-mode
Open

[codex] Add LG Jet fan mode support#169
joeblack2k wants to merge 1 commit into
JanM321:mainfrom
joeblack2k:codex/lg-jet-mode

Conversation

@joeblack2k

Copy link
Copy Markdown

Summary

Adds explicit support for LG Jet/Power fan mode in the ESPHome climate component.

The LG wired-controller protocol documents fan speed bits 7 as power. On the tested LG indoor unit this is the value emitted when Jet mode is enabled from the remote or app. The existing component treated that value as an unexpected fan mode, marked the incoming status message as an error, and then continued to send the previous normal fan mode back to the unit. In practice this made Jet mode drop back out after a few seconds.

Root Cause

Incoming status byte C8.E2... / C8.E3... has the fan-speed bits set to 0b111 (7). Before this change, process_status_message() only accepted fan values 0..4 and returned early for value 7 with:

received unexpected fan mode from AC (7)

Because the climate state never represented Jet, the next status send encoded the last normal fan mode, typically medium (A8.22...), which overwrote Jet mode on the AC bus.

Changes

  • Adds a custom ESPHome climate fan mode named Jet.
  • Maps incoming LG protocol fan value 7 to the custom fan mode.
  • Maps active custom fan mode Jet back to outgoing LG protocol fan value 7.
  • Uses ESPHome's set_fan_mode_() / set_custom_fan_mode_() helpers so standard fan modes and the custom fan mode remain mutually exclusive.

Validation

Tested on a live LG Airco ESP32 controller with ESPHome 2026.5.1.

Configuration validation:

INFO ESPHome 2026.5.1
INFO Reading configuration bioscoop-lg-airco.yaml...
INFO Configuration is valid!

Firmware build:

INFO Successfully compiled program.
RAM:   [==        ]  21.3% (used 69952 bytes from 327680 bytes)
Flash: [=======   ]  70.6% (used 1295591 bytes from 1835008 bytes)

OTA flash:

INFO OTA successful
INFO Successfully uploaded program.

Manual remote/app Jet capture before the fix showed the unsupported fan value:

received C8.E2.00.00.00.04.13.50.00.00.00.00.44 (13)
received unexpected fan mode from AC (7)
sending A8.22.00.00.00.04.13.50.00.00.00.00.64 (13)

After the fix, setting fan_mode: Jet through Home Assistant produced the expected protocol bytes and remained active for more than one minute:

18:36:03 sending A8.E3.00.00.00.04.13.51.00.00.40.00.66 (13)
18:36:09 received C8.E3.00.00.00.04.13.51.00.00.00.00.46 (13)
18:36:33 Custom Fan Mode: Jet
18:36:57 received C8.E3.00.00.00.04.13.51.00.00.00.00.46 (13)
18:37:21 received C8.E3.00.00.00.04.13.51.00.00.00.46.C8 (13)

Home Assistant also reported:

fan_modes: [auto, low, medium, high, Jet]
fan_mode: Jet

No unexpected fan mode errors appeared after the change, and the controller no longer wrote medium fan mode over Jet.

@joeblack2k joeblack2k marked this pull request as ready for review May 31, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant