Question that came up during live chat.
Basically the ability to multicast to a mesh network (code/data)
2 obvious Use cases are:
- Send code to a group of mesh units but only have one copy sent over cell/wifi
- sending an event message to group of units in a mesh again with one copy being sent over cell/wifi
The hope is that this could be done automatically in software where you could select a “group” in sending code/data and have system figure out how to send least copies (cell/wifi units getting a copy and then sending to mesh units locally)
Thanks for switching to twitter - way easier to have a long form discussion here.
I’ll separate OTA from messaging. We will facilitate (and make it easy) to OTA individual endpoints in the network and over time improve OTA efficiency (multicast is one way we could do that.)
The Thread protocol provides a bunch of primitives for unicast, multicast and anycast on the local network that we plan to leverage (learn more here.) Groups of devices is a more advance topic - what use cases do you have in mind?
ok centering on “groups” I use the word group just as a placeholder obviously different technologies use a different term for the concept.
the general idea is that I could have a “group” of sensors that i wish to send a message to without a “for loop” to unicast to all of them aka some sort of “group” id that i could add individual ids to. basically, so all the current APIs could work the same, just instead of a single id i could use the “group” id and the cloud would figure out the best way to relay the message to all of the members of the “Group”
and of course this copies over to OTA idea in having a “group” of units to get the same code etc…
Understood. What type of group message are you thinking about, as in do you have a specific project in mind? We generally agree that a simple API is always best. There a bunch of the questions about the API we’re thinking about:
- What types of messages are needed? IP packets, simple data types, multipart
- What is the ID? string, IP address
- Are groups arbitrary or should they be related to the “device”? Device role (gateway vs repeater), Product IDs
- Does the cloud need to know about groups, how would they be exposed via the cloud?
And on the implementation side we’re concerned about:
- Who maintains the Group ID lists? Does the group list become a Single Point of Failure?
- How does groups impact resources like RAM?
Your feedback is welcome, thanks.
P.S. Device Groups, now in beta, enables selective OTA to specific groups defined in the Console.
One more thing - there’s an draft CoAP RFC that might be of interest - RFC 7390.