Zwave Thermostat expose all setpoints as Number entities

I would like to have all thermostat setpoints exposed as number entities, or in the climate entity. This would allow us to set the each setpoint’s value regardless of the thermostat’s current mode.

The current behavior of zwave climate devices is that it only ‘activates’ the setpoints for the currently active mode. For example, when the thermostat is set to heat mode, only the heat setpoint is activated and thus you can only set the target temperature for the ‘heat’ setpoint. Another example is when the thermostat is set to off, none of the setpoints are activated, so you can’t set the target temperature for any setpoint.

By exposing all setpoints (as number entities or in the climate entity) it will enable users to set any setpoint’s target temperature regardless of the current thermostat mode. For example, when the thermostat is in the off mode, the user would still be able to set the target temperature for the heat mode, or the cool mode, etc., without having to first set the thermostat to the mode.

This creates a potential for energy savings. For example, suppose the thermostat is set to off mode, the heat setpoint is set to 75F (it was set last time it was on heat mode), and the current temperature is 70F. The user now wants to set the heat setpoint to 65F to prevent the current temperature from dropping below that value. For the user to accomplish that they first need to set the thermostat to heat mode, which would start heating and consuming energy (because the current temperature is 70F and the heat setpoint is set to 75F), and then set the heat setpoint to 65F, which would then cause the thermostat to stop heating.

Now if we expose all setpoints regardless of the current thermostat mode (as number entities or in the climate device), in the above scenario the user wouldn’t need to first set the thermostat to heat mode to then set the target heat temperature. The user would first set the target heat temperature, then set the thermostat to heat mode. This way the thermostat would not consume energy unnecessarily just to set the desired target heat temperature.

For a write-only approach, you should already be able to do this with the zwave_js.set_value service.

Thanks @freshcoast. I’ve played with zwave_js.set_value and it works great for setting values. If there were a zwave_js.get_value we could probably hack an automation together to make this work. But, I don’t think there is (or I haven’t yet found a way) to query arbitrary zwave_js values or create sensors of arbitrary zwave_js values.

MQTT has a Number integration that creates number entities and I was able to access the zwave thermostat setpoint values I need via MQTT, but it would be much nicer to access them via the zwave_js integration.

Thanks @freshcoast. I’ve played with zwave_js.set_value and it works great for setting values. If there were a zwave_js.get_value we could probably hack an automation together to make this work.

no problem, just making sure you were aware of the service, you could at least accomplish something with it. I have found that sometimes it’s better to just set values instead of relying on their current state.

But, I don’t think there is (or I haven’t yet found a way) to query arbitrary zwave_js values or create sensors of arbitrary zwave_js values.

Not to diminish your feature request, but I think this idea would be a far more useful feature than something value specific. For example, some users have wanted to create sensors for configuration parameters or other unsupported values. Some kind of template like method to allow creation of sensors, numbers or other platform types would be very useful.

Yes, I absolutely agree. Just like how you can create sensors/entities with pretty much any MQTT topic it would be very useful to be able to create sensors/entities for any zwave_js value. Like a zwave_js template sensor/binary_sensor/number/switch/etc…