SmartSense Temp/Multi Config Parameters

Is it possible to see the configuration parameters for SmartThings’ SmarSense Temp/Humidity Sensor?

The default configuration seems to limit reporting of temperature changes to only upon a full degree of difference from prior reports. I’d like to get updates at the granularity of 1/10th degree. I know the detail is there (I’ve modified the existing device code to report 1 decimal point of precision), but I don’t get updates unless I do a refresh()…

Any tips/pointers would be appreciated…


1 Like

I believe that’s a rebranded Centralite 3310.

Assuming they kept the original clusters ( no guarantees.), this should help:

Remember that the basic design concept of zigbee sensors is that they are stupid and cheap, and sleep most of the time. They are not intended for continuous monitoring, but rather sampling. Sleep. Wake up, check if anything’s changed beyond report parameters. If so, report. Go back to sleep.

So even if you change the reporting parameter (delta change), that doesn’t in and if itself change the frequency with which reports are sent.

And if you do change the polling frequency, you’re doing it by increasing the awake time, which reduces battery life.

So just something to be aware of. These are not always on mains powered wifi devices.

@JDRoberts, these are gold man! How come no one’s taken these and modified the ST device preferences to allow for sensitivity changes to the motion sensor?

This is exactly what I was looking for. I want to poll for Humidity every minute. Looking through the code and documentation, it’s not clear to me how to accomplish this. Anyone try this yet?

Get the source code from the standard template for the SmartSense Temp/Humidity sensor, and add the Polling capability to the capability list at the top, as in:

    capability "Temperature Measurement"
    capability "Relative Humidity Measurement"
    capability "Polling" // <-- ADD THIS!

and add this code block somewhere (at the end).

def poll() 
    log.debug "poll for temperature & humidity only"
        "zcl mfg-code 0xC2DF", "delay 1000",
        "zcl global read 0xFC45 0", "delay 1000",                        /* Humidity */
        "send 0x${device.deviceNetworkId} 1 1", "delay 1000",
       "st rattr 0x${device.deviceNetworkId} 1 0x402 0"                /* Temperature */

If you stop there, SmartThings will poll the device every ~6 minutes (currently - may change), requesting both temp and humidity (but not battery, as does a call to refresh()).

If you REALLY need updates every minute, then you will need a SmartApp that calls theSensor.poll() every minute.

Thanks. I actually returned the unit and tried the Everspring one which worked much better and easier to modify the code. Unfortunately, neither is a good solution to detect if someone turns on the shower due to the variations of humidity. A water sensor would be a better choice, but they are unsightly and with a brand new bathroom being built, not a great option ascetically. I think I am going to buy a regular zWave switch and when someone turns on the bathroom fan, pause the sprinklers. That is simpler and more efficient.

1 Like

I’ve been using the humidity sensor and see that it reports every 10 minutes at max. I’d like to be notified sooner when the humidity jumps.

Looking at the base template for the device, I see this:

        "zcl global send-me-a-report 1 0x20 0x20 0x600 0x3600 {0100}", "delay 500",

From what I can tell, the 0x600 is the min reporting time and 0x3600 is the max, with {0100} being the change threshold. I’m guessing I can change that 0x600 to a lower value so it reports in more often than every 10 minutes (although why it’s hex 0x600 for 10 minutes is odd to me). But I’m wondering if that change threshold is what’s causing me issues. The value is suppose to be an array, but it’s just a single value. So is this not being applied to the humidity value, just the temperature value?

That’s actually for the battery report. After “send-me-a-report” comes cluster, attribute, data type, min report, max report, and then min change to report in the payload (between {}).

You want the line below for humidity. Looks to report at least every hour, but no more than every 5 minutes and the min change to report is 1% (64 in little endian hex = 100 and that’s to two decimal places, so you divide by 100). You could change the 6400 to 0A00 and the 300 to whatever makes sense for you. My guess is the humidity fluctuates a lot and the precision is too low for the granularity you’re wanting to be meaningful, so they chose the values to manage battery life and info.

Note: You’ll have to re-run the configure section to update these settings on the device. The easiest way is to reset and re-pair the device after you’ve assigned it your custom device handler.

"zcl global send-me-a-report 0xFC45 0 0x29 300 3600 {6400}", "delay 200",

1 Like

Thank you. Normally the device is reporting humidity changes every 10 minutes (at most) and in a few cases, doesn’t even report in for 5 hours or so (even when stuff does change). So it seems like this device doesn’t monitor temperature or humidity changes passively.

I’ll give it a shot. Thanks for helping a newbie!

If the reported humidity from the device is the same as current humidity, then the event won’t be displayed in the mobile app. The ST system automatically dedupes events in this manner. If you look at the event log in the IDE and filter on All instead of Displayed, you should see all the report updates and hopefully they are much more regular.

I’m seeing the temperature report in every hour and the dupes being dropped. But the humidity is odd.

10:06 PM - 35%
1:40 AM - 34%
7:22 AM - 39%

That’s will “ALL” selected. Going through the app, I don’t see a single humidity dupe except for when I’m doing a forced refresh.