For this particular contact sensor, are you using the generic zigbee contact sensor driver? If so, are your devices accurately reporting back the their battery levels? I'm getting 100% from both of my contact sensors (this model) even though I know that one of them drained down to zero.
I'm afraid that battery reporting is a "mess" - in other words highly unreliable.
I've had a number of situations where battery is at 67% one day, and the next day the sensor doesn't work because of low battery. I think it's part of what makes it "lithium ion".
The only way around this mess (that I know of) is to use activity reporting as a substitute.
In other words, use one of the community programs (device watchdog, etc.) to report on activity. If the device hasn't reported an activity in the last 1-2 days, then check the battery with a multimeter. I find that the coin cell batteries should be at 3.2V for full battery. If the batter is less than say, 2.95 then it should be replaced.
Another approach: Also, others here have a policy: every 6 months - replace all batteries.
jtmpush18: Thanks for the reply. Currently, I see 100% for the battery level and it doesn't change. One of my sensors is mounted on an outside gate and it stopped working because of a dead battery but Hubitat is showing still 100%. I can only do what you suggested, by running an app that checks if a device hasn't reported in for a certain amount of time.
One last word.
I'm not sure about this, but I think that it's true.
SEnsors that use the bigger batteries - e.g. CR2, or the CR123A the sensors will last longer than the coin cell batteries.
I live in a harsh (i.e. cold) climate which is the enemy of batteries.
Nonetheless, I have some Iris V2 sensors outside (they use the CR2 or the CR123A). They have been outside for months, without an issue.
This is a new contact sensor, and I was surprised that the battery showed 100% but died so quickly (after only 3 weeks). I'm thinking now maybe the original battery had a low battery percentage from the start and I just didn't know it.