The Groups cluster manages, per endpoint, the content of the node-wide Group Table that is part of the underlying interaction layer.

In a network supporting fabrics, group IDs referenced by attributes or other elements of this cluster are scoped to the accessing fabric.

The Groups cluster is scoped to the endpoint. Groups cluster commands support discovering the endpoint membership in a group, adding the endpoint to a group, removing the endpoint from a group, removing endpoint membership from all groups. All commands defined in this cluster shall only affect groups scoped to the accessing fabric.

When group names are supported, the server stores a name string, which is set by the client for each assigned group and indicated in response to a client request.

Note that configuration of group addresses for outgoing commands is achieved using the Message Layer mechanisms where the Group Table is not involved. Hence this cluster does not play a part in that.

GroupsCluster supports optional features that you can enable with the GroupsCluster.with() factory method.

MatterSpecification.v13.Cluster § 1.3

interface Cluster {
    attributes: Merge<{
        nameSupport: FixedAttribute<TypeFromPartialBitSchema<{
            nameSupport: BitFlag;
        }>, any>;
    }, GlobalAttributes<{
        groupNames: BitFlag;
    }>>;
    base: undefined;
    commands: {
        addGroup: Command<TypeFromFields<{
            groupId: FieldType<GroupId>;
            groupName: FieldType<string>;
        }>, TypeFromFields<{
            groupId: FieldType<GroupId>;
            status: FieldType<Status>;
        }>, any>;
        addGroupIfIdentifying: Command<TypeFromFields<{
            groupId: FieldType<GroupId>;
            groupName: FieldType<string>;
        }>, void, any>;
        getGroupMembership: Command<TypeFromFields<{
            groupList: FieldType<GroupId[]>;
        }>, TypeFromFields<{
            capacity: FieldType<null | number>;
            groupList: FieldType<GroupId[]>;
        }>, any>;
        removeAllGroups: Command<void, void, any>;
        removeGroup: Command<TypeFromFields<{
            groupId: FieldType<GroupId>;
        }>, TypeFromFields<{
            groupId: FieldType<GroupId>;
            status: FieldType<Status>;
        }>, any>;
        viewGroup: Command<TypeFromFields<{
            groupId: FieldType<GroupId>;
        }>, TypeFromFields<{
            groupId: FieldType<GroupId>;
            groupName: FieldType<string>;
            status: FieldType<Status>;
        }>, any>;
    };
    events: {};
    extensions: readonly [];
    features: {
        groupNames: BitFlag;
    };
    id: Branded<4, "ClusterId">;
    name: "Groups";
    revision: 4;
    supportedFeatures: {
        groupNames: true;
    };
    unknown: false;
    alter<const AlterationsT>(alterations: AlterationsT): WithAlterations<Of<{
        attributes: {
            nameSupport: FixedAttribute<TypeFromPartialBitSchema<{
                nameSupport: BitFlag;
            }>, any>;
        };
        commands: {
            addGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                status: FieldType<Status>;
            }>, any>;
            addGroupIfIdentifying: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
            }>, void, any>;
            getGroupMembership: Command<TypeFromFields<{
                groupList: FieldType<GroupId[]>;
            }>, TypeFromFields<{
                capacity: FieldType<null | number>;
                groupList: FieldType<GroupId[]>;
            }>, any>;
            removeAllGroups: Command<void, void, any>;
            removeGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                status: FieldType<Status>;
            }>, any>;
            viewGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
                status: FieldType<Status>;
            }>, any>;
        };
        extensions: readonly [];
        features: {
            groupNames: BitFlag;
        };
        id: 4;
        name: "Groups";
        revision: 4;
        supportedFeatures: {
            groupNames: true;
        };
    }>, AlterationsT>;
    enable<const FlagsT>(flags: FlagsT): WithFlags<Of<{
        attributes: {
            nameSupport: FixedAttribute<TypeFromPartialBitSchema<{
                nameSupport: BitFlag;
            }>, any>;
        };
        commands: {
            addGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                status: FieldType<Status>;
            }>, any>;
            addGroupIfIdentifying: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
            }>, void, any>;
            getGroupMembership: Command<TypeFromFields<{
                groupList: FieldType<GroupId[]>;
            }>, TypeFromFields<{
                capacity: FieldType<null | number>;
                groupList: FieldType<GroupId[]>;
            }>, any>;
            removeAllGroups: Command<void, void, any>;
            removeGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                status: FieldType<Status>;
            }>, any>;
            viewGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
                status: FieldType<Status>;
            }>, any>;
        };
        extensions: readonly [];
        features: {
            groupNames: BitFlag;
        };
        id: 4;
        name: "Groups";
        revision: 4;
        supportedFeatures: {
            groupNames: true;
        };
    }>, FlagsT>;
    set<const ValuesT>(values: ValuesT): WithValues<Of<{
        attributes: {
            nameSupport: FixedAttribute<TypeFromPartialBitSchema<{
                nameSupport: BitFlag;
            }>, any>;
        };
        commands: {
            addGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                status: FieldType<Status>;
            }>, any>;
            addGroupIfIdentifying: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
            }>, void, any>;
            getGroupMembership: Command<TypeFromFields<{
                groupList: FieldType<GroupId[]>;
            }>, TypeFromFields<{
                capacity: FieldType<null | number>;
                groupList: FieldType<GroupId[]>;
            }>, any>;
            removeAllGroups: Command<void, void, any>;
            removeGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                status: FieldType<Status>;
            }>, any>;
            viewGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
                status: FieldType<Status>;
            }>, any>;
        };
        extensions: readonly [];
        features: {
            groupNames: BitFlag;
        };
        id: 4;
        name: "Groups";
        revision: 4;
        supportedFeatures: {
            groupNames: true;
        };
    }>, ValuesT>;
    with<const SelectionT>(...selection: SelectionT): Of<Of<{
        attributes: {
            nameSupport: FixedAttribute<TypeFromPartialBitSchema<{
                nameSupport: BitFlag;
            }>, any>;
        };
        commands: {
            addGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                status: FieldType<Status>;
            }>, any>;
            addGroupIfIdentifying: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
            }>, void, any>;
            getGroupMembership: Command<TypeFromFields<{
                groupList: FieldType<GroupId[]>;
            }>, TypeFromFields<{
                capacity: FieldType<null | number>;
                groupList: FieldType<GroupId[]>;
            }>, any>;
            removeAllGroups: Command<void, void, any>;
            removeGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                status: FieldType<Status>;
            }>, any>;
            viewGroup: Command<TypeFromFields<{
                groupId: FieldType<GroupId>;
            }>, TypeFromFields<{
                groupId: FieldType<GroupId>;
                groupName: FieldType<string>;
                status: FieldType<Status>;
            }>, any>;
        };
        extensions: readonly [];
        features: {
            groupNames: BitFlag;
        };
        id: 4;
        name: "Groups";
        revision: 4;
        supportedFeatures: {
            groupNames: true;
        };
    }>, SelectionT>;
}

Hierarchy (view full)

Properties

attributes: Merge<{
    nameSupport: FixedAttribute<TypeFromPartialBitSchema<{
        nameSupport: BitFlag;
    }>, any>;
}, GlobalAttributes<{
    groupNames: BitFlag;
}>>

Type declaration

  • ReadonlynameSupport: FixedAttribute<TypeFromPartialBitSchema<{
        nameSupport: BitFlag;
    }>, any>

    This attribute provides legacy, read-only access to whether the Group Names feature is supported. The most significant bit, bit 7 (GroupNames), shall be equal to bit 0 of the FeatureMap attribute (GN Feature). All other bits shall be 0.

    MatterSpecification.v13.Cluster § 1.3.6.1

base: undefined
commands: {
    addGroup: Command<TypeFromFields<{
        groupId: FieldType<GroupId>;
        groupName: FieldType<string>;
    }>, TypeFromFields<{
        groupId: FieldType<GroupId>;
        status: FieldType<Status>;
    }>, any>;
    addGroupIfIdentifying: Command<TypeFromFields<{
        groupId: FieldType<GroupId>;
        groupName: FieldType<string>;
    }>, void, any>;
    getGroupMembership: Command<TypeFromFields<{
        groupList: FieldType<GroupId[]>;
    }>, TypeFromFields<{
        capacity: FieldType<null | number>;
        groupList: FieldType<GroupId[]>;
    }>, any>;
    removeAllGroups: Command<void, void, any>;
    removeGroup: Command<TypeFromFields<{
        groupId: FieldType<GroupId>;
    }>, TypeFromFields<{
        groupId: FieldType<GroupId>;
        status: FieldType<Status>;
    }>, any>;
    viewGroup: Command<TypeFromFields<{
        groupId: FieldType<GroupId>;
    }>, TypeFromFields<{
        groupId: FieldType<GroupId>;
        groupName: FieldType<string>;
        status: FieldType<Status>;
    }>, any>;
}

Type declaration

  • ReadonlyaddGroup: Command<TypeFromFields<{
        groupId: FieldType<GroupId>;
        groupName: FieldType<string>;
    }>, TypeFromFields<{
        groupId: FieldType<GroupId>;
        status: FieldType<Status>;
    }>, any>

    The AddGroup command allows a client to add group membership in a particular group for the server endpoint.

    MatterSpecification.v13.Cluster § 1.3.7.1

  • ReadonlyaddGroupIfIdentifying: Command<TypeFromFields<{
        groupId: FieldType<GroupId>;
        groupName: FieldType<string>;
    }>, void, any>

    The AddGroupIfIdentifying command allows a client to add group membership in a particular group for the server endpoint, on condition that the endpoint is identifying itself. Identifying functionality is controlled using the Identify cluster, (see Identify Cluster).

    For correct operation of the AddGroupIfIdentifying command, any endpoint that supports the Groups server cluster shall also support the Identify server cluster.

    This command might be used to assist configuring group membership in the absence of a commissioning tool.

    MatterSpecification.v13.Cluster § 1.3.7.6

  • ReadonlygetGroupMembership: Command<TypeFromFields<{
        groupList: FieldType<GroupId[]>;
    }>, TypeFromFields<{
        capacity: FieldType<null | number>;
        groupList: FieldType<GroupId[]>;
    }>, any>

    The GetGroupMembership command allows a client to inquire about the group membership of the server endpoint, in a number of ways.

    MatterSpecification.v13.Cluster § 1.3.7.3

  • ReadonlyremoveAllGroups: Command<void, void, any>

    The RemoveAllGroups command allows a client to direct the server to remove all group associations for the server endpoint.

    MatterSpecification.v13.Cluster § 1.3.7.5

  • ReadonlyremoveGroup: Command<TypeFromFields<{
        groupId: FieldType<GroupId>;
    }>, TypeFromFields<{
        groupId: FieldType<GroupId>;
        status: FieldType<Status>;
    }>, any>

    The RemoveGroup command allows a client to request that the server removes the membership for the server endpoint, if any, in a particular group.

    MatterSpecification.v13.Cluster § 1.3.7.4

  • ReadonlyviewGroup: Command<TypeFromFields<{
        groupId: FieldType<GroupId>;
    }>, TypeFromFields<{
        groupId: FieldType<GroupId>;
        groupName: FieldType<string>;
        status: FieldType<Status>;
    }>, any>

    The ViewGroup command allows a client to request that the server responds with a ViewGroupResponse command containing the name string for a particular group.

    MatterSpecification.v13.Cluster § 1.3.7.2

events: {}
extensions: readonly []
features: {
    groupNames: BitFlag;
}

Type declaration

  • ReadonlygroupNames: BitFlag

    GroupNames

    The Group Names feature indicates the ability to store a name for a group when a group is added.

    MatterSpecification.v13.Cluster § 1.3.4.1

id: Branded<4, "ClusterId">
name
revision
supportedFeatures: {
    groupNames: true;
}
unknown

Methods