Generic Thermostat - minimal on time not followed

System: HAOS installed onto VM from image, all updates installed.

Background: I’m using the generic thermostat from the helpers to consolidate the control of a heat pump. Target temperature is fed via an automation from a function dependent on the outside, thus the target temperature does change quite often. Heat pump is controlled via change of automatic mode. As heat pumps don’t like short turn-on too much, I set the minimum run time to 30 minutes. Hysteresis is set to approx +/-2 K.

Observed behavior: The running time is sometimes shorter than 30 minutes (See pic). Guess from my side: Either a Change of the target-temp or crossing the upper threshold have precedence over the minimum running time. As from the pic the turn-off coincidences pretty good with the target change (yellow curve), first seems to be more likely.

What I would expect: Minimum runtime will be followed when target-temp changes and threshold-crossing but shall be canceled if the thermostat is restarted or the mode is changed.

Am I doing sth wrong? Thanks for helping out.

Jessi

Post your configuraiton.

here is configuration.yaml as requested. Not sure whether it helps, as the thermostat was created & operated only through GUI in Settings/Devices & Entities / Helpers

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

homeassistant:
  packages: 
    pack1: !include thebrain.yaml

recorder:
    purge_keep_days: 999
    db_url: postgresql://xxx
    
keba:
  host: 192.168.x.xxx
  failsafe: true
  failsafe_timeout: 30
  failsafe_fallback: 10
  failsafe_persist: 0

and the automation triggering the thermostat

alias: WP Controller Sollwert übertragen
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.wp_vorlauf_final
conditions: []
actions:
  - action: climate.set_temperature
    metadata: {}
    data:
      temperature: "{{  states('sensor.wp_vorlauf_final') |float(0) }}"
    target:
      entity_id: climate.heizung_luxtronic_controller
mode: single

I’m looking for the configuration of the generic thermostat.

Where do I find it? None of the visible files showed anything like that.

As said, it was created through the graphical interface, not by hand.

And none of the function buttons at the gui representation of the thermostat do show anything like an yaml.

You should be able to look at the options on the helper itself in the more info window.

You’ll have to take screenshots.

Ah, I was looking for some textish config.
But here


it is

Short addendum: I always using “home” so no mode change.

The quick & dirty way to get around this until you figure out what is wrong is to set a delay of 30 minutes at the end of your automation.
Given it’s in single mode, it won’t retrigger until the 30 minutes are over. Set max_exceeded to silent to avoid warnings in the logs.

Note that this is just a stopgap solution to avoid short cycling your heat pump. It fixes the symptom instead of the cause, but it’ll work as a short term fix.

The current generic_thermostat operates on events to the temperature device, not time.

I have submitted an update that provides proper min/max and cooldown delay times that operate on time, not event: https://github.com/home-assistant/core/pull/136298

It’s been accepted, but just needs to make its way into a release. This is likely exactly what you’re looking for. Hopefully it makes its way to a release soon (I started the work over a year ago).

@esand: sounds exactly like the missing piece of the puzzle. Great work and thanks for pointing my observation to the PR.

Jessi