I don’t know if ZHA has a way to monitor traffic on the fabric but that’s where I would start. Try disabling link quality, last seen, temperature, power, voltage, and current reporting. If you really need that for some reason, try setting them to larger values, like reporting a 10W change instead of reporting every 1W change. If you have mmWave devices, set the msilluminancemeasurement to 250 or larger.
I was having very similar behavior on Zigbee2MQTT. I have 67 Inovelli’s and 28 of those are mmWave devices. Each time something changes—a room’s brightness because a cloud blocked out the sun or someone walked in front of it, link quality, current draw, the internal temperature changed by 1 degree, or anything else changed—the device will resend its entire configuration payload over the fabric (LED brightness, color, and effect, for each of the LEDs, again for the full LED bar, temp, wattage, voltage, current, occupancy, target XYZ location for each zone, temp, last seen, illuminance, dimming speeds, fan settings, and everything else it has a configuration setting for). It generates a lot of large packets on the fabric, which would crash my SkyConnect and bog down Home Assistant as it tried to handle it all. Devices would randomly be dropped from the fabric and I’d have to air-gap power cycle them again to bring them back. I eventually relegated my SkyConnect to ZHA, which only has a few devices, then upgraded my Z2M controller to a ZBT-2, disabled as much reporting as I could in Z2M, and filtered the attributes below so they didn’t trigger any data being sent to Home Assistant. I use Z2M instead of Home Assistant to view that data now, which isn’t very often.
Your needs are probably different than mine and I’m sure you don’t want to rebuild that fabric with Z2M. I found it much easier to debug, disable, and configure everything in Z2M but if you can find a way to do it in ZHA, that’s where I think you should start.
filtered_attributes:
- linkquality
- last_seen
- internalTemperature
- mmwave_detection_areas
- mmwave_stay_areas
- mmwave_interference_areas
- mmwave_targets