Skip to content

feat: support for multicast/broadcast groups #4381

@robertsLando

Description

@robertsLando

Ok so (instructions for copilot to draft a PR):

Backend side

  • Add support to create/delete/update nodes groups. This groups will have a name and a list of nodeIds that are part of this groups and will be stored on a new file named groups.json in store dir. Give to each group an incremental numeric id above 0xfff that is the LR broadcast node. To get the next id just take the max one and add 1
  • Foreach group we should use getMulticastGroup API to get a virtual node of the group and we have to add that node to our nodes list.
  • Do the same for broadcast node, use API getBroadcastNode to retrieve the virtual node and return it to frontend
  • Use NODE_ID_BROADCAST and NODE_ID_BROADCAST_LR to identify broadcast nodes
  • Add a way to distinguish normal nodes from multicast/broadcast ones (use a dedicated property virtual: "true|false", true for broadcast and multicast nodes)
  • updating values of those virtual nodes: those get updated any time the actual value of any underlying node changes. If all the values for a given value ID of every single underlying node is the same, the virtual value is that value. If not, the virtual value is undefined/null.
  • Add groups.json to backuped files

Frontend side

  • Add a new left menu entry 'Groups'. This view should show a table like other views with buttons to create/delete/update groups and export the groups.json using the new apis created on backend
  • On control panel table/smart view add a way to identify and distinguish multicast/broadcas virtual nodes from others and allow to filter them from the table/smart view (use the virtual prop to do this)
  • virtual nodes should have all columns in table empty, only the group name should be shown under name column, nothing else.
  • In expanded node, when the node is virtual:
    • show only node and debug info tabs
    • hide help groups and ota updates.
    • hide device id and link to configuration db
    • hide statistics,ping and advanced buttons
    • hide refresh/reset buttons on command classes groups expand.

Originally posted by @robertsLando in #4376

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions