Changing HE's polling rate for a device?

I'm using a custom driver for my IKEA Fyrtur Blinds, and it seems the parse() routine is being called every 10 minutes by HE to provide the blind's current level position. So, I believe HE is polling my blinds (Zigbee device) every 10 minutes which is contributing to the faster-than-normal battery drain.

Is there a way to have HE poll my blinds at a different interval? Say, every 5 hours instead of every 10 minutes?

Thanks.

Ask the developer to change the polling interval. This isn't a request to change HE, it's a change to the driver.

4 Likes

You mean ask the developer of the driver? That's me!

I'm actually modifying an existing driver for the IKEA Blinds, and I'm trying to find out if there's a way to override the default polling with my own custom polling interval.

The hub has no polling in the platform. Any polling of the device is coming from the driver.

1 Like

Hmm, every 10 minutes the parse() function in my driver code is being called (by I'm assuming HE) and it is passing this string to the function:

read attr - raw: 092F0101020808002032, dni: 092F, endpoint: 01, cluster: 0102, size: 08, attrId: 0008, encoding: 20, command: 0A, value: 32

So, HE isn't polling the device to get this information? I'm a newbie, so I'm not sure. Also, is HE calling the parse() function in my driver every 10 minutes, or do I have something in my driver causing this to happen every 10 minutes?

Thanks.

Except one of the company founders already explained the answer is no, the hub isn’t polling your device :slightly_smiling_face:.

1 Like

The parse() method is normally called in response to incoming data from the device. This would be an odd scheduleld job to have directly, but if you're doing a refresh() (and doing a "Zigbee read attribute" or something that might send data back) on a schedule, that's one possibility.

More likely, your device might be doing some time-basesd reporting, likely in response to something sent during configuration in your driver. In any case, it's definitely not anything from the platform per se. The latter is my guess, though without having the device or looking at the code, it's just that.

1 Like

Thanks for your comments and feedback. I'm using the IKEA Blind driver found here.

So, if HE isn't polling the device then there is something in the driver code that is causing the parse() function to be called every 10 minutes? I'll try to review the online documentation regarding driver coding, but any other advice you can offer is appreciated.

The device has been configured to send data to hubitat every 10 minutes or so. And parse() is called to parse that incoming data. This is a device setting (perhaps set by the driver you are using).

Based on a comment in the driver code, it appears that the device reports periodically. And there is a line of code in the configure() method that could be the source of 10 minute reporting interval:

cmds = zigbee.configureReporting(CLUSTER_WINDOW_COVERING, ATTRIBUTE_POSITION_LIFT, DataType.UINT8, 3, 600, 0x01) + zigbee.configureReporting(CLUSTER_BATTERY_LEVEL, 0x0021, DataType.UINT8, 600, 21600, 0x01)

The value 600 is 10 minutes, and it shows up there for configureReporting()

If you want to change the reporting rate, that's the value to change. If you change it, you'd have to hit Configure for the device to take the new rate.

4 Likes

Wonderful! Thank you for your help. Much appreciated.

If I were you I'd test this first with like 11 minutes, to verify that it works as expected. That would be 660 instead of 600. If that works, 5 hours would be 18000.

4 Likes