Bang-bang idle_action not triggering when sensor falls below minimum

Latest version of espHome.

As per the title, the idle_action is never called when the target temperature is reduced below the min set temperature.

I have read the bang-bang documentation several times and as far as I understand this is the correct controller for heat-on and heat-off only control.

I would expect that if the heating is idle, and I increase the min temp, HEATING will be called, and when I reduce below it idle will be called.

I have asked chatGPT numerous time, it came up with many suggestions, none of them work.

I have tested both with away_config set and without it, and the behaviour is the same, idle is never called.

I am obviously missing something, doing something wrong and would appreciate help as I have spent a few days on and off trying to resolve it and cannot.

Thanks in advance.

one_wire:
  - pin: $con_3
    platform: gpio

sensor:
  - platform: dallas_temp
    name: "Immersion Temp"
    address: "0x63000008ab907d28"
    internal: false
    id: _7d28
    update_interval: 5s

climate:
  - platform: bang_bang
    name: "Immersion"
    id: climate_entity
    sensor: _7d28
    default_target_temperature_low: 40.0
    default_target_temperature_high: 55.0

    idle_action:
        - logger.log: "###### HEAT-OFF ########"

    heat_action:
        - logger.log: "###### HEAT-ON #########"

    visual:
      min_temperature: 10.0
      max_temperature: 65.0
      temperature_step: 0.5

    away_config:
      default_target_temperature_low: 15.0
      default_target_temperature_high: 25.0

as you can see in the logs, HEATING is demanded even though the temp sesor is above the minimum:

[05:30:53][D][climate:423]:   Target Temperature: Low: 13.50°C High: 65.00°C
[05:30:53][W][component:237]: Component dallas_temp.sensor took a long time for an operation (71 ms).
[05:30:53][W][component:238]: Components should block for at most 30 ms.
[05:30:58][D][dallas.temp.sensor:054]: 'Immersion Temp': Got Temperature=50.9°C
[05:30:58][D][sensor:094]: 'Immersion Temp': Sending state 50.87500 °C with 1 decimals of accuracy
[05:30:58][D][climate:396]: 'Immersion' - Sending state:
[05:30:58][D][climate:399]:   Mode: HEAT
[05:30:58][D][climate:401]:   Action: HEATING
[05:30:58][D][climate:419]:   Current Temperature: 50.88°C
[05:30:58][D][climate:423]:   Target Temperature: Low: 13.50°C High: 65.00°C
[05:30:58][W][component:237]: Component dallas_temp.sensor took a long time for an operation (68 

Reading the docs, isn’t that expected?

  • Heaters: For devices where the observed temperature can only be increased.
  • As soon as the temperature goes below the lower target temperature, heat_action will be called.
  • When the temperature goes above the higher temperature, idle_action will be called.
  • If you change operating mode (manual mode). And it is between high and low temperature. It does not wait to get to low temperature, it starts working until it gets to high temperature.

Hii & thanks for helping.

Yes, after I posted this I went back and read all of the docs and the wiki about bang-bang too.

so it’s working as designed and it was my misunderstanding.

Thanks again for helping

1 Like