How often should a Zigbee device report to the hub?

I have seen a huge discrepancy between the time Zigbee devices (sensors, switches) report to the hub. It ranges from minutes to hours.

Is there an expected time when the devices are supposed to call home with a keepalive message of some sort? If so - is this configurable?

Battery based devices can take a long time. Power based devices should report regularly.

As far as I have seen, they mostly update based on need: if the reported value changes, then they send a message, otherwise they fall back to time intervals.

Would you know if these intervals are documented, or settable?

Depends on the device, some it could be once a day. On mine, currently, I have one device that hasn’t reported in for 2 hours (it’s a Zigbee remote) and another that has obviously lost connection as it’s not reported in for 2+ days (off to fix that now).

Skimming the Zigbee specification library I couldn’t find anything on update interval, it could easily be non-specified and left up to the implementation.

I think the assumption zigbee devices are expected to send a keepalive message is false as devices using kinetic energy simply do not have the power reserve to do this.