tldr;
I eventually had to switch to Z2M from ZHA due to the network just not working. I gave ZHA a lot of time and effort. Switched channels multiple times, switched hardware controllers, moved the location, anything a forum, github ticket or reddit thread would tell me. I made the brute force switch to Z2M, which wasn’t fun resetting and reconfiguring everything. But since then, I’ve had a stable zigbee experience that works. I also switched from SkyConnect to Sonoff controller along the way, but I’m not sure that made any real difference in the end.
Longer story
I had started with Smartthings and that was going well until I started wanting to do more with my devices. During the pandemic my smart home became a project of mine and I have in total over 100 zwave and zigbee devices, nearly evenly split in my home. Mostly inwall smart switches, Jasco (GE Enbrighten) or Zooz, sensors, etc…
I decided to make the jump to HA for more advanced automations and Smartthings was giving me problems adding more devices. At first it all worked well, then at some point half way through 2024, the zigbee network became unstable. I had to reload the ZHA configuration daily or messages would fail to be delivered causing automations and scenes to fail.
I started with WiFi and interference scanning. Changing channels based on 10s to 100s of grabs from diagnostics on channel congestion. I was seeing up to 88% on any channel I would swich my SkyConnect controller to. I varied the distance from the router, bought a longer USB extension cable, tried nearly everything within reason.
I then bought a Sonoff controller. I kept ZHA and transferred the network to the new controller. Immediately the network diagnostics were reporting considerably lower congestion. My chosen channel and surrounding channels were now reporting 5-45%. I thought this was it and I’d be done.
Unfortunately that was not the case and even with the lower numbers, I was still losing devices and ability to deliver messages. I was ready to pull every zigbee device I had and switch to Zwave, which has never been a problem for me. The ZooZ controler, switches and other Zwave devices I have been rock solid.
I finally decided to switch to Z2M. I read about all the elegant ways to try and do it. I just ripped the bandage and did it the hard way. I disconnected every zigbee device from ZHA, removed ZHA and installed Z2M. I was already using Ring2MQTT so I had the basics ready to go.
While that process was a pain, I did it in one evening, 41 devices and a decent amount of automations, and since then my Zigbee network has been solid. I kept using the Sonoff controller, I actually moved my home assistant back to the original location and the network interference is not an issue, everything just works.