The LG mini splits (like many brands) use a power consumption optimizing logic. This causes the unit to increase or decrease output as the setpoint and room temp diverge. This results in the room temp being several degrees above the cooling setpoint if the cooling demand exceeds 50% of the head units nominal output.
With the ESPHOME-LG integration, I have the option of supplying my own room temp, instead of the internal thermistor. This opens up a number of automation options.
In this case I created a helper in HA, which uses the following template to add an offset to the room temp (supplied via another sensor device) when the room temp is to far above the setpoint in cooling mode. Unfortunately setting the unit to use an external sensor seems to stop reporting of the internal sensor. This would be useful for fallback, if the external sensor goes offline. I have a if statement to fallback to the internal sensor, assuming I can figure out how to change the config of the ESPhome device to report that value as a different entity.
The helper could easily be modified for heating mode. There is an option called overheat in the LG settings, which basically tells the units to overshoot the setpoint by a few degrees. However with the preheat time before the blow comes on, in cold climates the temp swing in the room can exceed 4F, which higher than desirable, and really the unit should be able to maintain a 2F range.
Python:
{% set last = (as_timestamp(now()) - as_timestamp(states.sensor.ws2900_v2_02_03_indoor_temperature.last_changed)) %}
{% set temp2 = states.climate.living_room_ac.attributes.current_temperature | float %}
{% set temperature = states.climate.living_room_ac.attributes.current_temperature | float %}
{% set setpoint = states.climate.living_room_ac.attributes.temperature | float %}
{% if (last < 600)%}
{% set temperature = states('sensor.ws2900_v2_02_03_indoor_temperature') | float %}
{% endif%}
{% if (not is_state('climate.living_room_ac', 'cool')) %}
{{ temperature | int}}
{% else %}
{% if setpoint < temperature + 1 %}
{{ (temperature + 3) | int }}
{% else %}
{{ temperature | int}}
{% endif %}
{% endif%}