Manual Polling for Zigbee Motion Sensor Battery Strength

I have several Zigbee motion sensors that go through the CR2477 batteries rather rapidly, which I don't like but that's the way it is. My complaint is about battery strength reporting. I have a rule setup where I get a notification if the battery strength percentage falls under 10. But I'd rather not use regular polling like that. Since I don't mind checking manually myself, does anyone know I would set up an app or something where I could poll a device and get the battery strength reported. For some reason, SmartThings did a great job of reporting battery strength fairly accurately, but the Hubitat Elevation environment doesn't really report very accurately IMO.

As a side note, the voltage of a new CR2477 reads about 3.3V, whereas when I get a low battery report from my current app, it reads about 2.95V. I wonder what voltage one needs at a minimum so I could assess when I really need to change it.

I suppose I could just set an app to check motion and notify me if it detects motion, and then just do that periodically. But I wanted something slightly more sophisticated than that.

There are a couple of apps that do battery reporting, i.e. [RELEASE] Device Watchdog , but battery reporting is a function of the device and the device driver, and it seems each vendor has their own way of implementing the requirement so you may end up with a hodgepodge of values.

1 Like

Also, separate to the reporting / monitoring, with my basic understanding.... The strength of your mesh will also play a part in the life of the battery. So if you have a different mesh setup compared to previous setups, that can produce a different outcome.

Are you actually polling the device? That sounds like a bad idea, but just reading the "battery" attribute from the device, like you might do with a rule or an app, is totally fine and doesn't actually poll the device. In that case, I don't see how that's different from what you're asking for, aside from there being different ways you could do it (an app to list them all, a notification when an event is received matching certain criteria, etc.).

1 Like

Battery reporting is also never a for sure thing. Different devices will implement it differently. One of the more frustrating things about it.

Some devices will report in V and its up to the driver to translate that to a percentage. But its not that easy as a batter could report 90% right up until they are almost dead. Its not a linear conversion and its also affected by temperature and the type of battery used making it that much harder.

Some will actually report percentage to the driver but again, they use an internal formula which in the end still suffers the fate of the above. And even those that report a % still may do something dumb. For example my ikea blinds report 0-50% instead of 0-100%. WHY????

There are apps out there like device watch dog that will periodically check the latest reported battery level. That is the best way. You don't need to actually poll the device and shouldn't really as that just adds extra load when it has already reported its latest status to HE and its stored in the database.

What I do is monitor device activity instead. When a device stops reporting its dead. I've compared that to various battery reports and had devices actually die and their last reported battery report was 40%. No wonder why my battery watch was failingy under 20%.

It shouldn't be this difficult. :frowning:


Battery power Zigbee devices are sleepy -- you don't poll them. When your rule (or app, like Device Watchdog, Device Activity Check aka DAC, or Device Monitor) queries the battery strength, it is just seeing the last battery reported by the device and saved by the hub. It is not talking to the device.


With most battery powered ZigBee devices, the device can be set to report:

Battery: minimum reporting time, maximum reporting time, delta: tenths of volts

Temperature if so equipped: minimum reporting time, maximum reporting time, delta: degrees C X6400=1.00C; X3200=.5C

All times are in seconds. Reports are created only when the delta threshold is reached +or-.

Should you be using a User device driver these values, and others, can be adjusted.

I find battery % almost useless, it was like that in ST and carried into HE. I've had a number of contact sensors work well for a year at 0%, others that give up at 30%. Today I replaced two mission critical ST door contact batteries showing 25% on the device page, 2.9 & 2.8 volts on the meter, with new 2450 batteries reading 3.3V on my meter. Current battery % values: 87% and 75% :man_shrugging: :scream_cat:

Reporting values from Hubitat public Iris V3 keypad driver. min,max,{delta}
"he cr 0x${device.deviceNetworkId} 0x${device.endpointId} 0x0001 0x0020 0x20 1 86400 {01}","delay 200",//battery
"he cr 0x${device.deviceNetworkId} 0x${device.endpointId} 0x0402 0x0000 0x29 60 0xFFFE {3200}", "delay 500" //temp

Aside from the constant polling which would drain battery, add some zigbee repeaters to your mesh (can't have too many) Then shut down your hub and unplug at the wall for 30 mins and power back up. Let things settle for a day. This should help with some of the battery drain. I mean I have motion/temp sensors I haven't changed the batteries in in a year and a half.

1 Like

I’ve never seen anything near 10%. I have some Hue dimmers that I change when they report anything below 90%. Samsung buttons seem to go down to 30-40% before they die and Iris V2 motion sensors usually need changed if they drop below 60%. I think it’s just the nature of lithium batteries. Once the voltage starts dropping they are very close to being dead. I also just use an app that tells me if a device hasn’t reported recently because of this. @bertabcd1234 ’s app works well for me (many thanks btw).

A strong mesh does help immensely with battery life, but having the devices panic will rapidly drain the batteries. I believe that they go into a higher power mode when searching for a route.

One hit like that won't drain the batteries any more than being manually polled. The purpose is to force them to find new routes and reconstruct the mesh

1 Like

I just changed the batteries on a 3 year old Hue motion sensor for the first time.

1 Like

Probably not. I just wanted him to be aware in case he has any batteries that are close to EOL.

Here is the app I use to report battery level to me at the present.

I have also decided to disable temperature reporting unless that is the precise function I am using instead of motion. I have only one of those where it really matters.

I use a Zigbee motion sensor to monitor the temperature in a cabinet where I have my AVR. If the temperature gets above a certain number, I turn on a small fan in the cabinet.