How do I limit the temperature setpoint on a thermostat?

I have a couple of Eurotronic Sprit thermostats, which allow for a setting of 8 to 28 degrees Celsius. The thermostat card allows for a setting between 7 and 35 though, is there any way to change that to 8 and 28 ?

1 Like

what component/integration are you using?

I’m not sure what you are asking for, I’m using the standard zwave integration to add the thermostat to my zwave network, and that automatically creates a climate component that I can add a lovelace card in the UI for. Is there anything specific you need?
I’m using HA 102.3

If it’s coming from zwave, the only way to limit it is to create a generic thermostat using all the elements of your zwave thermostat.

Also, there may be configuration settings in the device itself in the zwave panel that do that. That would typically be covered in the manual of the device. But that purely depends on the device.

I think both of those options are not really a solution.

  1. Creating a generic thermostat will pull the on/off logic into HA, instead of it being in the physical knob. Note that the knob itself is “smart” in a way that it will limit flow based on the current temperature. It is not merily a open/close valve thing, which it will become if I pull the on/off logic into HA.
  2. There is no setting in the zwave API of the knob to change the min/max temp.

All in all, I really need the card to reflect the actual situation. I need to overwrite the default min and max values, but I cannot find how. It sounds to dumb and simple to not be supported, I mean, how many thermostats will actually go from 7-35 and not something else?

This makes no sense. You’re creating a thermostat entity using your thermostat entity. In the end of the day, it will be the same thing. And if the knob limits it, why do you even care? This is the way you’d limit your range, to the user it would make no difference.

The settings are coming from your hardware. So your hardware through zwave is giving those values. This is why it’s not implemented for zwave. There’s no reason to implement it if the hardware reports the correct values.


Anyways, you can attempt to create a custom card in lovelace that limits the temperature to the range you want. That’s about the best you can do seeing that you’re unwilling to use the tools at hand that limit it in the backend.

As another potential option, you may be able to limit the temperatures in the ozwave config file in your config folder. You’d have to find the zwave object in xml and adjust it but there is no guarantee that it will work.

This makes no sense. You’re creating a thermostat entity using your thermostat entity. In the end of the day, it will be the same thing. And if the knob limits it, why do you even care? This is the way you’d limit your range, to the user it would make no difference.

Are you sure? The generic thermostat documentation tells me the heater needs to be a toggle device, and explains that HA will decide to turn it on if setpoint smaller than current temp, and vice versa. I am not sure how I would configure this component with my knobs that take a setpoint as input instead of a on/off.
Are you suggesting I make a dummy switch that sends “setpoint 28 degrees” when turned on, and “setpoint 8 degrees” when turned off, and use that as the heater in the generic thermostat?

Furthermore, the knob doesn’t “limit it”, as it will simply ignore a “setpoint 35” command send by HA, instead of interpreting that as “setpoint 28” which is the max for the knob.

The settings are coming from your hardware. So your hardware through zwave is giving those values. This is why it’s not implemented for zwave. There’s no reason to implement it if the hardware reports the correct values.

That is not what I am interpretting from the config, below is what is in my (unaltered) zwave config xml, you can see that the knob correctly reports min/max values. My issue is that home assistant seems to ignore these and creates a thermostat with a range of 7-35, and pulling the thermostat up to e.g. 32 doesn’t do anything as the knob ignores the command.

<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="4" innif="true" base="0">
<Value type="decimal" genre="user" instance="1" index="1" label="Heat" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="8" max="28" value="10.0" />

That’s about the best you can do seeing that you’re unwilling to use the tools at hand that limit it in the backend.

I am not unwilling, I just don’t see how. What you are saying sounds logical, but I don’t seem to understand how to put that to action as the documentation seems to contradict parts of your statements.
I appreciate your help, and would love for you to explain in a bit more detail.

Have you tried setting the min_temp and max_temp attributes via customize.yaml?

1 Like

That would be a bug then. I’d write up an issue against the zwave climate component. It should take into account the min and max temperature range.

Looking at the zwave climate integration, that doesn’t look like it will work on the backend. I.E. A user who uses a service will be able to set the temperature beyond the range with a service call. But… Looking at the lovelace code, that does look like it will work for the UI. The code specifically looks for attributes ‘min_temp’ and ‘max_temp’. Adding those to the customize section will create them as attributes on the climate device.

[edit: I had to hard refresh the UI…]

Yes that works! thanks.

It would only show up on lovelace and you’d need to restart home assistant unless you add them through the UI.

Opened issue #29838

1 Like

Hey there, new to Home Assistant and was experiencing the same issue. I know this thread is old but I thought I would put my solution here since I didn’t find it anywhere else. I will also post to the issue thread in GitHub, if I can.

There is a init.py file in the core/components/climate folder that defines the max temp on the Home Assistant side, not the device side. I found mine here:

/usr/local/share/homeassistant/lib/python3.8/site-packages/homeassistant/components/climate/__init__.py

Find the appropriate line:

DEFAULT_MIN_TEMP = 7
DEFAULT_MAX_TEMP = 35

Define it as you wish (in Celsius, obviously), restart, and the thermostat card should now use the defined max.

UPDATE: Also can be done on an entity basis through the UI, much easier:
Configuration > Customization > Select Entity and change min and/or max temp value.

I’m sure there’s a way to do this through YAML too but these both work for me.

1 Like

This is related to this issue: https://github.com/home-assistant/core/issues/29838

You can set a maximum/minimum temperature on the climate entity using YAML in the following way. The lovelace thermostat card of that entity displays these limits.

/config/configuration.yaml

homeassistant:
  customize: !include customize.yaml

/config/customize.yaml

climate.entity_id:
    max_temp: 28
    min_temp: 8

Restart the Home Assistant Server for the changes to take effect. :slightly_smiling_face:

Screenshot_20210127_203121

3 Likes