Zwave Thermostat - Round setpoint to nearest 0.5°C (a problem with unit conversion)

Hi, I’m a bit stuck on something and am hoping someone’s experienced this issue before and knows a workaround.

I have a Zwave thermostat that operates in Fahrenheit at the Zwave level - the temperatures and setpoints are all sent back and forth in Fahrenheit. I’m using the ZWave JS UI front end/server and the ZWave JS integration. I can set the wall unit to C or F, and it’s set to C, but this doesn’t change what comes over on Zwave. As I am in Canada, I have the HA system locale set to use metric units.

The problem is I would like the UI in HA to match the wall unit:

(Setpoint is the smaller number)

My thermostat.

ZWave JS UI has the ability to apply a formula to the value being sent to HA, but at that point the value is still in Fahrenheit. It’s HA that’s doing the conversion, and I have no control (that I can find) once it hits HA. The climate domain just inherits the default unit of measure from the locale settings.

I was wondering if there was a way to have ZWaveJS UI do the conversion and send the entity to HA as Celsius instead of Fahrenheit? Or is there a way to modify things without doing a custom component in HA.

I feel like I’m just missing something. Any help would be appreciated.


You can try setting the preferred scale for temperature to C in Z-Wave JS UI (Z-Wave settings). Not sure how effective that will be. Another option is to use an alternate UI card like the mini climate card, which lets you set custom temperature rounding and temperature steps (e.g. 1 C). The zwave integration is hard-coded to decimal steps, which is what the thermostat card uses.

I have been battling with the same issue myself for the last few years, and I was not able to find a workaround yet. If you find a solution, please post it here.