But there's an obvious logical contradiction in all that. The requirements are:
1. Reasonably low latency, else two way is not of much use
2. No one controller can use more than a small amount of bandwidth
3. Don't allow unreliable modules to increase latency for everyone else
The constraints are
1. Low bandwidth network
2. Modules that don't send async notifications (and even if they do the controller still has to ping them periodically to make sure they are there unless those modules send "I'm alive" notifications, which also eats up bandwidth
Add those up and they kind of cancel out. If you can't use more than a small amount of bandwidth, but you have to poll since the modules don't tell you what their state is or tha they are alive. Then once the module count gets up over 25 or so, even if you can get responses from 5 modules per second, the worst case latency is now 5 seconds, and the average 2.5. But 5 modules per second is likely to be using more bandwidth than is desirable.
It's a fundamental aspect of the reality of this universe, and you can't just wave your hand and say that the SDK magically changes that equation, or at least if it does you have to explain how it does. I'm not trying to be argumentative, I'm just an engineer type and I can't just let these types of things go by without getting the facts.