Hi Michal, On Wed, 2019-09-18 at 10:52 +0200, MichaƂ Lowas-Rzechonek wrote: > Hi Brian, > > > Imagine a dot-matrix, where each pixel is a mesh node. > > > > Each of these pixels implements two models: > > on element 0, a GenericOnOffServer controlling the light output > > on element 1, a Blinkenlights Server model > > > > Blinkenlights Server extends GenericOnOff Server and GenericOnOff > > Client, and on top of that contains a translation table mapping > > group > > address to either 'ON' or 'OFF'. > > > > Now, when Blinkenlights Server receives a GenericOnOff Set message, > > it > > looks up the destination address at the translation table, and > > sends a > > *different* GenericOnOff Set to *its own* element 0, with target > > value > > determined by the translation entry. > > > > This allows users to configure each node in such a way, that > > sending a > > *single* message to a group address causes all pixels to switch to > > a > > preconfigured pattern *at the same time*. > > Per conversation with Piotr, I'd like to revisit the discussion and > provide more details about our use case for models knowing the > destination address. > > Please see a diagram at http://ujeb.se/BmTIW. > > The main reason we map scenes using destination addresses is that > such a > setup consumes much less unicast addresses. > > Assuming that: > S - number of switches > B - number of buttons (elements) on a switch > N - nunber of lamps > > With a 'regular' case, number of consumed unicast addresses is > S*B + N*(B+1) > > With the destination mapping, it becomes > S*B + N*2 > > Since we typically use 4 button switches (B=4), without translation > we > consume unicast address space at a *much* faster rate. > > reagrds Okay, this is a good argument for exposing the subscription address in MessageReceived(). It's better to separate the method into two, e.g. MessageReceived() and MessageReceivedVirtual(). Then it makes sense to add model subscription array as a dictionary entry in the UpdateModelConfiguration() as well as for the node configuration returned when calling Attach() method. Probably will have to have separate keys: "Groups" and "Virtuals". Regards, Inga