Generic Thermostat - How to select preset of 'None'

This is my climate generic_thermostat config

climate:
  - platform: generic_thermostat
    unique_id: heating_thermostat_kitchen
    name: Heating Thermostat Kitchen
    heater: switch.shelly1_01
    target_sensor: sensor.kitchen_temperature
    min_temp: 5
    max_temp: 23
    cold_tolerance: 0.0
    hot_tolerance: 0.5
    min_cycle_duration:
      seconds: 5
    away_temp: 16
    eco_temp: 12
    precision: 0.5

This is my dashboard thermostat config for

  - type: thermostat
    entity: climate.heating_thermostat_kitchen
    name: ' '
    features:
      - type: climate-hvac-modes
        style: icons
        hvac_modes:
          - heat
          - "off"
      - type: climate-preset-modes
        style: icons
        preset_modes:
          - "none"
          - away
          - eco

Why do i get this error when trying to select ‘none’

[139728672255936] not_valid_preset_mode

I understand what the error is telling me and it seems like the answer is to remove
- "none"
from the list of presets in the thermostat card.

So I removed it and my dashboard now looks like this, so how can I select ‘None’?

However, in the more info pop-up ‘None’ is an option:

I can’t believe in all these years no one else has come across this so what am I doing wrong?

Disclaimer: I don’t use Generic Thermostat & coffee still hasn’t fully kicked in, but I did some digging for you.

Looks like the none preset simply means that you set the temperature manually yourself & overrode the existing preset.
I don’t think it’s manually selectable and its existence is there just to show you that your current temp setpoint does not match any of the other presets.

The code hints at this:

# No preset is active
PRESET_NONE = "none"

And a comment I found in an ancient PR confirms it:

Should be pretty simple enough to test if this is the case. Add back that -"none" as a preset option, set your preset to eco, then manually change the target temp. The preset should automatically switch to None.

Thanks for that. I think you are probably right.

I’ve done some experimenting and not only can you not choose to have no preset set but if you set the temperature to a temperature that is the same as one of the presets it instantly decides you really meant to set that preset.

I have been using the generic thermostat for years. A couple of days ago it started ‘playing up’ and I couldn’t work out why.

I have a self written schedule for my heating and I had changed the ‘eco’ preset temperature to be the same as the last temperature that schedule sets at night.

I couldn’t work out why my heating was set to eco every morning and therefore did not respect my schedule.

Surely this is not what you would expect? If I set a temperature manually (or as in this case by an automation) then I just want that temperature set. I don’t want the whole of my heating system to be controlled by some arbitrary decision of the thermostat code.

It’s feels very wrong to me that ‘None’ cannot be set manually, or to put it another way that the presets can not be deselected, but to my mind worse still, it is completely and absolutely wrong and against any sensible thinking about leaving users in control that presets are selected simply by virtue of choosing a particular temperature that matches that of the preset.

Every preset effectively prohibits a temperature to be set manually without affecting the entire operation of the heating system!

But… I’m preaching on deaf ears as you don’t use it :wink:
Which is why I am all the more grateful for your reply which pushed me to get to the root of my issue!

1 Like

YIKES!!!

This is indeed by design!!

Who on earth thinks that is right???
Setting a temperature is NOT the same as choosing a preset!!


It was even a ‘noteworthy change’ in 2025.02. Noteworthy only in it’s utter stupidity

Yeah… thanks domingues, what were you thinking? And a lot of time could have been saved on my side if the docs had been updated to reflect this change :angry:

Although bizarrely the docs do say:
image

Which is not actually possible.

(I thought part of the process with changes was to update the docs?)