Offset target temperature for climate component

Hello,

I have an issue with an air conditioning unit using the IR Remote Climate component, using the Whirlpool platform in ESPHome. I’m using an IR transmitter with an ESP8266 to send the control signals. The issue is the target temperature being reported back to Home assistant is 2°C off from what’s being reported on the AC unit itself. Everything else seems to be working as intended.

My YAML configuration for this component is:

climate:
  - platform: whirlpool
    name: "Living Room AC - Noma 043-0759-4"
    supports_cool: True
    supports_heat: False
    visual:
      min_temperature: 16
      max_temperature: 30

Is there a way to offset the target temperature attribute in ESPHome before it’s reported to Home Assistant? I’ve read about this being done for sensor components using filters, but I haven’t been able to find a similar solution for climate components.

Thanks.

OK , that’s a low hanging fruit.

sensor:
  - platform: bmp280
    temperature:
      name: "Backroom Temp"
      filters:
        - offset: -2

I’ve included other lines to give you an idea of the indentation. You didn’t say if low or high so use"-" or not.

1 Like

Is there actually any feedback between the Air Con Target state and ESPHome/HA? Or is communication just one way?

If it’s one way, and the remote is “optimistic”, perhaps you just need to block a sent signal or two to manually force synchronization? Or perhaps you can correct it with the original remote?

Perhaps there is a temperature offset on the air con itself like you find on TRV. Which of the 2 readings is the correct temp?

There wouldn’t be any feedback from the AC unit itself back to ESPHome/HA. The temperature data would just be sent by the IR transmitter.

I was hoping it would be a matter of just setting the temperature down on the AC unit itself, but it seems like the Whirlpool platform actually sends the temperature data in the IR command. For example, assume the AC unit is set to 23 degrees when turned on and the HA Lovelace card says it’s 25 degrees. If I then tap the temperature up button on the AC unit twice both will say 25. However, if I then set the Lovelace card to 23, the AC unit will skip all the way down to 21.

The readout on the front of the AC unit is correct. It’s the variable that’s being tracked in ESPHome/HA for what the target temperature should be that’s wrong. That’s why I was hoping there would be a way to offset this value.

I’m somewhat new to ESPHome/HA, so please correct me if I’m wrong, but my understanding is the YAML code above is to adjust the temperature being read by a bmp280 temperature sensor? Not the target temperature variable?

Also, I just wanted to say thanks for the replies.

Hi
I was just trying to show how to write a filter for the sensor in the climate intergration. I was just using as example and not suggesting you use bmp280 sensor. Esphome/YAML is very sensitive to how you indent everything. You may or may not be able to set any filters on your esphome setup for this.
What you say about it over shooting target could be down to the tolerance rather than reading wrong temp value. In generic thermostats in climate you can set a tolerance to overshoot so relays in devices don’t switch on/off several times when it just reaches a set temp. I think its a form of hysteresis.

    cold_tolerance: 0
    hot_tolerance: 0

If you show your esphome yaml people will be able to comment and point you in right direction. The more info people have the more likely they will show interest. I’m sitting here and it 22.3C but 86% humidity and it helps me just thinking about aircon.

Thanks for the pointers. I’ll give the tolerance settings a try with a generic thermostat. I was just using the standard thermostat Lovelace card with the climate entity assigned to it. Maybe some more customization is in order.

Here’s my full ESPHome YAML setup for the IR transmitter. Of course, minus keys and passwords:

substitutions:
  devicename: "livingroom-ac-ir-blaster"
  friendly_name: livingroom AC IR Blaster

esphome:
  name: $devicename
  platform: ESP8266
  board: esp01_1m

# Enable captive poral
captive_portal:

# Enable Home Assistant API
api:
  encryption:
    key: "XXXX"

# Enable OTA Updates
ota:
  password: "XXXX"

# Enable WiFi Connection
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Livingroom-Ac-Ir-Blaster"
    password: "XXXX"
    
# Enable logging without UART support
logger:
  baud_rate: 0

# Enable external blue LED as a status indicator
status_led:
  pin:
    number: GPIO4

# Enable the IR receiver to dump all IR commands to the log.
remote_receiver:
  pin:
    number: GPIO5
    inverted: true
  dump: all
  id: living_room_ac_ir_receiver

# Enable the remote transmitter
remote_transmitter:
  pin: GPIO14
  carrier_duty_percent: 50%

# Enable the underside button.
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO13
      inverted: true
    name: Underside Button

# Define climate entity
climate:
  - platform: whirlpool
    name: "Living Room AC - Noma 043-0759-4"
    supports_cool: True
    supports_heat: False
    visual:
      min_temperature: 16
      max_temperature: 30
1 Like

I’m out of ideas. Potentially your Aircon isn’t properly supported? I don’t know any workarounds.

Possibly you could download a local copy of the component and adjust the c++ (offset what is being sent to HA).