Sounds like you had some non-zwave+ devices or you were using a lot of s0 encryption. Both are known to slow down the network. Like everything it’s gotten better over time. The 700 series stuff is pretty quick.
I was an early adopter for sure. This was back in 2016ish when I installed all of the devices. All of the devices were Z-Wave+ (specifically bought for that) but many of them did not support the newer encryption, and it ended up being a mixed network of devices for sure. Only the last few devices I bought supported the new encryption standard that was being rolled out at the time. I ended up getting a new Z-Wave hub that supported it to be able to securely enroll my new devices... but all it did was destabilize the network further.
It just left a horrible taste in my mouth, and once bitten, twice shy is definitely the case here.
The other thing that made things slow was sleepy devices that would wake up to report status. Things like motion sensors that also reported humidity, light levels, temperature and more (I do wish I could find a sensor like that for Zigbee/Thread... the multiple things in one was kinda nice). Every time they would wake up to report it would flood the network with traffic. And with each additional sensor I would have to tweak how often that would happen (and thus how accurate the data was over time) to reduce the amount of chatter on the network.
Ok yeah I only have 16 devices but I have 188 entities - I haven’t had any issues with sensors except with a power mains reader that didn’t support zwave+. After I removed that everything has been great. I also have a Zigbee network of about the same size which has also been pretty solid. One tip I didn’t know about at first is that you should have your transceiver plugged in to a usb extension cord and not directly into your pi/whatever.
I'm also running a Zwave network and it's highly responsive with around 50 devices. A friend of mine is running a few hundred devices and I haven't heard him complain much about it, all of his actions/triggers/etc seem to execute pretty much instantly. I'm going to guess that his network topology has a lot devices that are only accessible by repeaters, or aren't using Zwave+. Zwave is pretty much _the standard_ for large professional smart home installations and scales pretty well if implemented properly.
All the devices were Z-Wave+, it was the one thing I was buying for. Not all of them supported the new encryption standard which started rolling out after I deployed most of my switches.
This was in a ~1400 sq ft house, with a little over 200 devices (motion sensors/lights/switches/smart plugs/humidity sensors/weather sensors). The network had a few repeaters the longest hop was 2 hops from the controller to the end device.
This was your problem. I've been using Z-Wave in my house since, I think, around 2010. I had major major issues with it at first exactly like what you describe. I "fixed" them by doing two things.
A) Banished all battery powered devices from the network. Seriously. I have one in a hall closest I haven't gotten around to getting rid of, yet. The network seems fine-ish with only that sensor but large volumes of battery powered mostly asleep devices, it falls over.
B) Abolished any notion of using my Z-Wave network for sensor reporting. No tracking humidity or weather or power with my Z-Wave network because, as you mention, the Z-Wave network completely falls over when you have volumes of sensor traffic on it.
Want to have one humidity sensor which reports hourly? Sure that's fine.
Want to have a humidity sensor in every room which reports every time there is a 1% change in humidity? lol no, your network will fall over.
My Z-Wave networks are quite large at this point, 200-300 devices, and consist of Jasco/GE switches, Jasco/GE fan controls, Jasco/GE smart outlets.
Removing sensor traffic and battery powered devices from my Z-Wave network has made it extremely reliable for me. Unscientifically I would say 99% of Z-Wave control commands execute in <1s.
Jasco/GE switches is what I used throughout my house... but the whole point to me was to have a smart home.
So when humidity goes up in the bathroom, the controller would kick on the exhaust fan.
When temperature drops in a room that is active below a set point, the fan is kicked on for the forced air to start circulating + heat would get kicked on if necessary.
The whole point of having a smart home is to have a smart home that does stuff for you. Walking into a room and having lights turn on is the best thing EVER. I don't want to touch a switch if I can avoid it.
If sensor traffic is not meant to go on a Z-Wave network then they shouldn't allow those device classes to exist on the Z-Wave network.
On the sensors I had I cranked up the change required before it would report, but it also did periodic reports. I had to also update those so that the network wouldn't get flooded.
Sleepy devices/battery powered devices on the Z-Wave network for things like window sensors/door sensors is kind of the norm. It's hard to run power for all those things, and those sorts of security sensors are handy for not just automation but also for peace of mind!
The thing is that I have a similar setup now with Zigbee/Thread devices... and everything just works. In fact due to not having motion sensors that also act as humidity/temperature/light sensors I end up having more sensors on the network, yet it is far more stable.
Yeah, I used virtually all Z-Wave switches and dimmers in our new house (and motion sensors, temp sensors, etc) and haven't had an issue. The one time things seemed a bit laggy I had to "optimize" the network, which I realized I had NEVER done until that point. All issues went away.
We have well over 100 Z-Wave devices spread over 4000 sqft.
The Z-Wave network, while being a mesh network, is not a dynamic mesh. Nodes follow a precomputed path from themselves to the controller (with backup paths -- it's based on a node having a predefined list of adjacencies). You need to regularly poll each node in the system and determine it's optimal path from controller->node and node->controller and redefine it's adjacency list.
This process is entirely automated but does take some time. It's absolutely critical to do this when adding a new device (both for the new device, as well as the overall network) but I found that just doing it regularly works great. I have all my networks configured to do this at 4AM daily since the network is unusable for the few minutes it takes.