Hello symplex,
impressive network. I fully understand your concern how to configure/maintain a network of that size with a reasonable effort.
The solution i found for me is to change the perspective. Instead of regarding the aggregation of memory images of all nodes as "the network configuration" i'm describing the intended network behaviour using a highlevel DSL (domain specific language) which can be translated into memory images for each node. By this, the behavioural description is the master and the flash content becomes a derived object. To switch between completely different setups just flash memory images derived from a different highlevel description into the node(s) (just the needed words without any read-before).
The DSL will handle many details for you like enabling just those events in a button module which are used somewhere else to toggle an actor.
Another example, assume you have a complex box-setup with groups enabled/disabled by events. You wish to insert another box in between a group. You have to shift down all following boxes and to update the box-enable-disable rules. Using the gui a lot of stupid and error prone work. Using the scripted approach: copy-paste a line and flash the affected module(s). In total less than a minute.
In addition your network behaviour is fully documented in a human readable (,printable and editable) form.
Also disaster recovery is quite easy. Due to a lightning event you have to replace all your nodes. You buy/build a set of new nodes, update the node IDs (either in your description or in your nodes) and flash the full network in one shot.
Or you might want to extend the nodes firmware by adding your own commands. In the DSL it's easy to register additional methods to support that.
Your additions become an integral part of the hapcan network, indistinguishable from the original functionality.
Even after firmware upgrades the highlevel description stays valid, new functionality gets reasonable defaults, backward compatible functionality (even if mapped to different command codes/memory addresses) don't need to be touched.
As the highlevel description is ASCII text (source code) it can be easily diff'ed and version controlled (svn, git,...).
Long story in short, for me the only way to handle setups larger than a few nodes.
I've developed the DSL-tool till the point i needed it for my test purposes, it's neither complete nor finished.
It's on github:
https://github.com/asicdruide/hapconf
It's written in PERL, a scripting language. It's easy to extend if you're a little familiar with programming. It runs under Linux and windows the same way (in principle). I've not tested this (but many comparable others) on windows. It even runs on a raspberry pi.
Best regards,
Klaus
I hope english is ok because i don't speak polish.