SmartThings App display temperature gets rounded differently for every device

I have three smart devices that each monitor the room temperature in order to control my upstairs climate via a SmartThings (ST) App automation…

1 x 2GIG CT100 (Z-Wave Thermostat) — refer to as “Thermostat”
2 x SmartThings Multipurpose Sensor (newest model) — refer to as “Multi Sensor”

So I have setup all three devices next to each other for this test, in order to get the closest temperature readings. I have noticed that the ST App displays the °F in whole numbers only.

So when the Thermostat reads 73.5°F, the app rounds up to display 74°F. That would not be a huge issue, except for the fact that the app displays that same room temp (73.5°) as 73°F for the Multi Sensor. So essentially, the ST App is rounding the decimal point up for the Thermostat’s display, and down for the Multi Sensor’s display…

#1) Is there a way to fix this…? I don’t believe ‘Temperature Offset’ can fix anything — The rounding difference is over a decimal place, and Temp Offset only allows whole number (+/-) values.

#2) Is the ST App using these rounded display values in its automation routines? Or will or are these values simply for display, and the automations will use the real decimal point values straight from the Thermostat…?

Login to the IDE (https://account.SmartThings.com) and check under My Locations / Location - Devices and you’ll be able to pull up the Current States (values) of all the Attributes of any Device Instance. There you will see whether or not the value has a decimal that is just not being displayed.

You could possibly modify the Device Type Handler to use a decimal value if you have to source code for the DTH.

As to whether or not SmartThings SmartApps truncate or use the decimal in their logic, that also depends on the code. I think that SmartApp code is unlikely to truncate decimals if provided by the Device, but I’m not sure. You’d have to test each such automation.

So based on hese 2 images, are my devices only providing whole numbr values…?

Can’t say for sure, 'cuz the temperature could be 69.0 F, right?

There’s also a difference between what the physical device is technically able to provide (i.e., the sensor probably has low-level binary output of fractions of a degree) and what the DTH decides to round it to.

But keep in mind a major thing: The sensor is unlikely to be accurate to even 1 degree, let alone fractions of a degree!

So can I look anywhere to be sure if either device (multisensor or thermostat) is using decimal values…? Those screenshots I shared are from the IDE, like you said.

I realize that neither device is likely to be that accurate, however I am interested in all devices’ temperature meters being within the same whole degree (°F) value…

I wouldn’t mind if one device reads 67.5° and the other 67° — but if one device is 67.5° and the other is 68°, that will cause problems with my automation.

I don’t understand this statement.

In both cases, you are accurate to +/- 0.5°; your automation should account for this.

It is highly unlikely that SmartThing sensors are accurate to more than +/- 1.0° without unpredictable drift (due to battery level or … just a bit of breeze!).


But if you want to look at the DTH’s and dig into how they are converting the binary ZigBee return values from the sensor into °F, you can search the SmartThings GitHub to find the DTH and start reading the source code.