Z-Wave Thermostat - Decimal Degrees not Working

Goal

I would like to be able to set my Z-wave thermostat to decimal degrees (e.g. 22.5 °C).
I am able to set the temperature in increments of 0.5°C on my thermostat itself.

Problem

In home assistant, if I set a whole degree value, everything works fine. However, if I set a decimal value, it silently fails and sets my thermostat to it’s minimum temperature - definitely not ideal.

I confirmed this as originally the thermostat’s minimum temperature was 10°C, I changed it on thermostat to 15°C and it used that value instead.

Not sure if this is specific to only my thermostat (Honeywell T6) or others as well.

This is regardless of the method used to set it (calling service directly, lovelace climate card)

For example, when calling climate.set_temperature with this data it works:

{
  "entity_id": "climate.honeywell",
  "temperature": 23
}

But these silently fail and set my temperature to 10°C which is just a little bit cold for my tastes:

As a decimal:

{
  "entity_id": "climate.honeywell",
  "temperature": 23.5
}

As a string:

{
  "entity_id": "climate.honeywell",
  "temperature": "23.5"
}

Has anyone else had this issue? Any ideas on how to solve?

I just installed a honeywell t6 Pro z-wave thermostat, and I’m experiencing the same issue as yourself.

This does seem like a basic setting, it’s possible this could be an issue in the OZW code, (seems unlikely). Have you tried submitting a bug report?

You seem to have more diagnostic data at this stage than I do.

There is a workaround (it is a bug in OZW); see this post on reddit

That was it. Honestly didn’t get much past this thread as I had only JUST started looking into the problem (had been squashing other bugs in my system prior).

I’ll post a summary here as well for anyone that comes across this thread as well.


Essentially this line needs to be updated to include a higher precision value.

  1. Stop Home Assistant
  2. Open/Edit your zwcfg_****.xml file (backup as required)
  3. Find your thermostat node ID
  4. Locate the command class definition COMMAND_CLASS_THERMOSTAT_SETPOINT
  5. At the end of the line add the property override_precision="2"
  6. Save file, and start home assistant

That worked for me

This was tested on my Honeywell T6 Pro and seems to resolve the problem described.