HomeSeer HS-LS100+ Leak Sensor Temperature F and C?

I have a HomeSeer HS-LS100+ Z-Wave Plus Leak Sensor that seems to report temperature randomly in degrees C and F. Anybody seen this? And any solution? I’ll contact HomeSeer, but wondering if anyone else has already resolved this. Here’s a sample from the log file:

2020-07-30 00:21:44.175 [vent.ItemStateChangedEvent] - HWHeaterTempSensor changed from 22.6 to 71.9
2020-07-30 00:21:44.768 [vent.ItemStateChangedEvent] - HWHeaterTempSensor changed from 71.9 to 22.2
2020-07-30 01:21:43.782 [vent.ItemStateChangedEvent] - HWHeaterTempSensor changed from 22.2 to 21.7
2020-07-30 02:21:42.094 [vent.ItemStateChangedEvent] - HWHeaterTempSensor changed from 21.7 to 21.4
2020-07-30 03:21:37.973 [vent.ItemStateChangedEvent] - HWHeaterTempSensor changed from 21.4 to 21.2
2020-07-30 03:31:37.229 [vent.ItemStateChangedEvent] - HWHeaterTempSensor changed from 21.2 to 69.9
2020-07-30 05:21:34.980 [vent.ItemStateChangedEvent] - HWHeaterTempSensor changed from 69.9 to 69.4


EDIT: Item is a simple Number. I’ve changed it to Number:Temperature. Not sure if that matters - I’ll see if it helps.

In case anyone else hits this issue, the problem does seem to be solved by switching the Item to Number:Temperature. I’m a little surprised at the behavior without the UoM, but I’m happy that this works now.

I should add that this was with 2.5.6 for future reference.

Well, the database entry clearly shows that channel as type TEMPERATURE.

You can also find that on the device page


Reading the documentation on new devices helps. I am currently doing that with one of mine.

Not sure that explains the behaviour itself though. I’d be interested to know why, with a simple number item, the behaviour as reported by @jswim788 occurs.

A manufacturer question? That channel information comes from an xml file using information sent by the device in its Node Information Frame.

The full subtlety escapes me, but Numbers don’t have units. But there’s a “however” - you can pass a Quantity type, with units, to an ordinary Number.

This part explains why the binding does not throw a hissy fit about linking a Number:Temperature type channel to a plain Number Item. It can sort-of work.

The next thing to consider is what units the binding will work in. I don’t know if this device sends "22.0C’ or just plain “22.0” and the binding needs to “know” it is in C or whatever.
But ordinarily the binding will look at the target Item’s [state description] to see if the user has expressed a preference for units. If there isn’t one, it should then fall back on system default units, set by openHAB locale.
Once it knows the target units, the channel should automagically convert C->F and when required.

My guess is something goes wrong with that process when you try to do it with an undimensioned Number type.