node-zwave-js: Unable to set setpoint temperature without decimal for Everspring AC301

Describe the bug

I’m trying to set the temperature for my Everspring AC301 but it only works when doing numbers with a decimal, for example 22.5 works but not 22, 22.1 works, etc.

Device information

Which device(s) is/are affected (make/model)? Everspring AC301 What are the node IDs? 8

Last Known Working Configuration

  • New device

Installation information How did you install node-zwave-js?

  • Pkg

Additional context I remembered that I saw something about Heatit TRM3 a while ago (link here) where they said that if the precision is wrong, the temperature will not be set.

So… I went into core/values/primitive.js and had a look. Found encodeFloatWithScale() and I tried to see what the precision returned for 21 and 21.5. For 21, it was 0 (which converted the value to “21”) and for 21.5 it was 1 (which converted the value to “215”). Then I hard-coded the precision to 1 in encodeFloatWithScale(), restarted zwave-js and BANG. It worked like a charm.

I don’t know where the real issue is though, if there is different interpretations of the zwave standard or a bug in zwave-js.

Logfile:

Included a few different logfiles:

set_21_celsius.txt set_22_celsius.txt set_22.1_celsius.txt set_23.5_celsius.txt

This is the logfile for when I changed the precision to 1: set_22_celsius_precision_1.txt

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 22 (18 by maintainers)

Most upvoted comments

@AlCalzone both 22 and 23,5 works 😉

I have now tried both devices and they are working properly, it is possible to change the setpoint on them.

I meant checking with the unofficial firmware if they still work with this change 😃

From my amateur viewpoint, I would agree, but Heat-it is adamant that they have done it to spec and the firmware is a “workaround” for OZW.

Yeah I can’t get it into my head how anyone would interpret the specs that way. But I’ve also read that they only released an inofficial firmware because they can’t change it without losing certification. 🤷🏻‍♂️