General and node management37 — Actions

Matter Cluster 37 — Actions

Matter Cluster 37 (0x0025) Actions: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 37 — Actions Cluster

Matter Cluster 37, also written as 0x0025, is the Actions Cluster. This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose logical grouping and actions. Specifically this cluster provides: - Information about logical grouping of endpoints on the Node (example: lights in a room) - Information about named actions that can be performed on such a group of endpoints (example: recall a scene for a group of lights by its name) - Commands to trigger such actions - Events to receive feedback on the state of such actions.

Cluster Identity

FieldValue
Cluster ID decimal37
Cluster ID hex0x0025
Cluster nameActions
Cluster revision (Matter 1.6.1)1
Roleapplication
ScopeNode
PICS codeACT
Typical endpoint0

Revision history

RevisionChange
1Initial revision

Shadow Path Format

Cluster 37 values in the device shadow use this format:

endpoint_id / 37 / attribute_id

Example:

{
  "0/37/0": []
}
PartMeaning
0Endpoint ID
37Actions cluster
0ActionList attribute

Data Types

ActionErrorEnum

ValueNameConformanceMeaning
0UnknownMOther reason not listed in the row(s) below
1InterruptedMThe action was interrupted by another command or interaction

ActionStateEnum

Note that some of these states are applicable only for certain actions, as determined by their SupportedCommands.

ValueNameConformanceMeaning
0InactiveMThe action is not active
1ActiveMThe action is active
2PausedMThe action has been paused
3DisabledMThe action has been disabled

ActionTypeEnum

ValueNameConformanceMeaning
0OtherMUse this only when none of the other values applies
1SceneMBring the endpoints into a certain state
2SequenceMA sequence of states with a certain time pattern
3AutomationMControl an automation (e.g. motion sensor controlling lights)
4ExceptionMSequence that will run when something doesn't happen
5NotificationMUse the endpoints to send a message to user
6AlarmMHigher priority notification

EndpointListTypeEnum

The Room and Zone values are provided for the cases where a user (or the system on behalf of the user) has created logical grouping of the endpoints (e.g. bridged devices) based on location.

ValueNameConformanceMeaning
0OtherMAnother group of endpoints
1RoomMUser-configured group of endpoints where an endpoint can be in only one room
2ZoneMUser-configured group of endpoints where an endpoint can be in any number of zones

CommandBits (bitmap)

Note - The bit allocation of this bitmap must follow the ID's of the Commands of this cluster.

BitNameConformanceMeaning
0InstantActionMIndicate support for InstantAction command
1InstantActionWithTransitionMIndicate support for InstantActionWithTransition command
2StartActionMIndicate support for StartAction command
3StartActionWithDurationMIndicate support for StartActionWithDuration command
4StopActionMIndicate support for StopAction command
5PauseActionMIndicate support for PauseAction command
6PauseActionWithDurationMIndicate support for PauseActionWithDuration command
7ResumeActionMIndicate support for ResumeAction command
8EnableActionMIndicate support for EnableAction command
9EnableActionWithDurationMIndicate support for EnableActionWithDuration command
10DisableActionMIndicate support for DisableAction command
11DisableActionWithDurationMIndicate support for DisableActionWithDuration command

ActionStruct (struct)

This data type holds the details of a single action, and contains the data fields below.

FieldNameTypeConformanceConstraintMeaning
0ActionIDuint16M——
1NamestringMmax length 128; maxCodePointsIndicates the name (as assigned by the user or automatically by the server) associated with this action.
2TypeActionTypeEnumM—Indicates the type of action.
3EndpointListIDuint16M——
4SupportedCommandsCommandBitsM0 to 0x0FFFThis field is a bitmap which is used to indicate which of the cluster's commands are supported for this particular action, with a bit set to 1 for each supported command according to the table below.
5StateActionStateEnumM—Indicates the current state of this action.

EndpointListStruct (struct)

This data type holds the details of a single endpoint list, which relates to a set of endpoints that have some logical relation, and contains the data fields below.

FieldNameTypeConformanceConstraintMeaning
0EndpointListIDuint16M——
1NamestringMmax length 128; maxCodePointsIndicates the name (as assigned by the user or automatically by the server) associated with the set of endpoints in this list.
2TypeEndpointListTypeEnumM—Indicates the type of endpoint list, see EndpointListTypeEnum.
3Endpointslist of endpoint-noMmax 256 entriesThis field provides a list of endpoint numbers.

Cluster 37 Attributes

Cluster 37 defines 3 attributes plus the global attributes. Conformance: M mandatory, O optional, a feature code means "mandatory when that feature is present", square brackets mean "optional when …".

IDHexAttributeTypeConformanceAccessQualitiesDefault
00x0000ActionListlist of ActionStructMR (read: view)—empty
10x0001EndpointListslist of EndpointListStructMR (read: view)—empty
20x0002SetupURLstringOR (read: view)—empty

Global attributes

IDHexAttributeMeaning
655280xFFF8GeneratedCommandListResponse command IDs this server generates.
655290xFFF9AcceptedCommandListCommand IDs this server accepts.
655310xFFFBAttributeListAttribute IDs implemented.
655320xFFFCFeatureMapImplemented optional features (see above).
655330xFFFDClusterRevisionCluster revision implemented; 1 for a Matter 1.6.1 device.

Attribute Details

Attribute 0 / 0x0000 — ActionList

Path example:

0/37/0

The ActionList attribute holds the list of actions. Each entry has an unique ActionID, and its EndpointListID must exist in the EndpointLists attribute.

PropertyValue
Typelist of ActionStruct
ConformanceM
AccessR (read: view)
Constraintmax 256 entries
Defaultempty

Each entry is a ActionStruct (see Data Types).

Example:

{
  "0/37/0": []
}

Attribute 1 / 0x0001 — EndpointLists

Path example:

0/37/1

The EndpointLists attribute holds the list of endpoint lists. Each entry has an unique EndpointListID.

PropertyValue
Typelist of EndpointListStruct
ConformanceM
AccessR (read: view)
Constraintmax 256 entries
Defaultempty

Each entry is a EndpointListStruct (see Data Types).

Example:

{
  "0/37/1": []
}

Attribute 2 / 0x0002 — SetupURL

Path example:

0/37/2

No condensed specification text is available for SetupURL; use the type, conformance and constraint below together with the cluster description above.

PropertyValue
Typestring
ConformanceO
AccessR (read: view)
Constraintmax length 512
Defaultempty

Example:

{
  "0/37/2": "example"
}

Cluster 37 Commands

Cluster 37 has 12 client-to-server commands and 0 responses.

IDHexCommandDirectionConformanceResponseDescription
00x00InstantActionclient → serverdescstatusThis command is used to trigger an instantaneous action.
10x01InstantActionWithTransitionclient → serverdescstatusThis command is used to trigger an instantaneous action with a transition over a given time.
20x02StartActionclient → serverdescstatusThis command is used to trigger the commencement of an action.
30x03StartActionWithDurationclient → serverdescstatusThis command is used to trigger the commencement of an action with a duration.
40x04StopActionclient → serverdescstatusThis command is used to stop an action.
50x05PauseActionclient → serverdescstatusThis command is used to pause an action.
60x06PauseActionWithDurationclient → serverdescstatusThis command is used to pause an action with a duration.
70x07ResumeActionclient → serverdescstatusThis command is used to resume an action.
80x08EnableActionclient → serverdescstatusThis command is used to enable an action.
90x09EnableActionWithDurationclient → serverdescstatusThis command is used to enable an action with a duration.
100x0ADisableActionclient → serverdescstatusThis command is used to disable an action.
110x0BDisableActionWithDurationclient → serverdescstatusThis command is used to disable an action with a duration.

AcceptedCommandList

The AcceptedCommandList attribute lists the command IDs the endpoint actually implements:

endpoint_id / 37 / 65529
{
  "0/37/65529": [
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11
  ]
}

Before sending a Cluster 37 command, check that the command ID exists in endpoint/37/65529. Optional commands are only present when the matching feature is set in FeatureMap.


Bridge Command Payload Format

The bridge accepts Matter commands in this structure:

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "InstantAction",
    "payload": {},
    "timed_request_timeout_ms": 1000
  }
}

For Cluster 37, always use "cluster_id": 37. Payload keys are the command field names in lowerCamelCase. Octet-string fields are base64-encoded. timed_request_timeout_ms is required for timed commands and ignored otherwise.


Command: InstantAction

Purpose

This command is used to trigger an instantaneous action. This command triggers an action (state change) on the involved endpoints, in a "fire and forget" manner. Afterwards, the action's state is Inactive. Example: recall a scene on a number of lights.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameInstantAction
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "InstantAction",
    "payload": {
      "actionID": 1
    }
  }
}

Command: InstantActionWithTransition

Purpose

This command is used to trigger an instantaneous action with a transition over a given time. It is recommended that, where possible (e.g., it is not possible for attributes with Boolean data type), a gradual transition should take place from the old to the new state over this time period. However, the exact transition is manufacturer dependent. This command triggers an action (state change) on the involved endpoints, with a specified time to transition from the current state to the new state.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameInstantActionWithTransition
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——
2TransitionTimetransitionTimeuint16M—Indicates the transition time in 1/10th of seconds.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "InstantActionWithTransition",
    "payload": {
      "actionID": 1,
      "transitionTime": 0
    }
  }
}

Command: StartAction

Purpose

This command is used to trigger the commencement of an action. This command triggers the commencement of an action on the involved endpoints. Afterwards, the action's state is Active. Example: start a dynamic lighting pattern (such as gradually rotating the colors around the setpoints of the scene) on a set of lights.

Command Identity

FieldValue
Command ID2
Command hex0x02
Command nameStartAction
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "StartAction",
    "payload": {
      "actionID": 1
    }
  }
}

Command: StartActionWithDuration

Purpose

This command is used to trigger the commencement of an action with a duration. This command triggers the commencement of an action on the involved endpoints, and must change the action's state to Active. After the specified Duration, the action will stop, and the action's state must change to Inactive. Example: start a dynamic lighting pattern (such as gradually rotating the colors around the setpoints of the scene) on a set of lights for 1 hour (Duration=3600).

Command Identity

FieldValue
Command ID3
Command hex0x03
Command nameStartActionWithDuration
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——
2Durationdurationuint32M—Indicates the requested duration in seconds.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "StartActionWithDuration",
    "payload": {
      "actionID": 1,
      "duration": 1
    }
  }
}

Command: StopAction

Purpose

This command is used to stop an action. This command stops the ongoing action on the involved endpoints. Afterwards, the action's state is Inactive. Example: stop a dynamic lighting pattern which was previously started with StartAction.

Command Identity

FieldValue
Command ID4
Command hex0x04
Command nameStopAction
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "StopAction",
    "payload": {
      "actionID": 1
    }
  }
}

Command: PauseAction

Purpose

This command is used to pause an action. This command pauses an ongoing action, and must change the action's state to Paused. Example: pause a dynamic lighting effect (the lights stay at their current color) which was previously started with StartAction.

Command Identity

FieldValue
Command ID5
Command hex0x05
Command namePauseAction
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "PauseAction",
    "payload": {
      "actionID": 1
    }
  }
}

Command: PauseActionWithDuration

Purpose

This command is used to pause an action with a duration. This command pauses an ongoing action, and must change the action's state to Paused. After the specified Duration, the ongoing action will be automatically resumed. which must change the action's state to Active. Example: pause a dynamic lighting effect (the lights stay at their current color) for 10 minutes (Duration=600).

Command Identity

FieldValue
Command ID6
Command hex0x06
Command namePauseActionWithDuration
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——
2Durationdurationuint32M—Indicates the requested duration in seconds.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "PauseActionWithDuration",
    "payload": {
      "actionID": 1,
      "duration": 1
    }
  }
}

Command: ResumeAction

Purpose

This command is used to resume an action. This command resumes a previously paused action, and must change the action's state to Active. The difference between ResumeAction and StartAction is that ResumeAction will continue the action from the state where it was paused, while StartAction will start the action from the beginning. Example: resume a dynamic lighting effect (the lights' colors will change gradually, continuing from the point they were paused).

Command Identity

FieldValue
Command ID7
Command hex0x07
Command nameResumeAction
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "ResumeAction",
    "payload": {
      "actionID": 1
    }
  }
}

Command: EnableAction

Purpose

This command is used to enable an action. This command enables a certain action or automation. Afterwards, the action's state is Active. Example: enable a motion sensor to control the lights in an area.

Command Identity

FieldValue
Command ID8
Command hex0x08
Command nameEnableAction
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "EnableAction",
    "payload": {
      "actionID": 1
    }
  }
}

Command: EnableActionWithDuration

Purpose

This command is used to enable an action with a duration. This command enables a certain action or automation, and must change the action's state to be Active. After the specified Duration, the action or automation will stop, and the action's state must change to Disabled. Example: enable a "presence mimicking" behavior for the lights in your home during a vacation; the Duration field is used to indicated the length of your absence from home.

Command Identity

FieldValue
Command ID9
Command hex0x09
Command nameEnableActionWithDuration
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——
2Durationdurationuint32M—Indicates the requested duration in seconds.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "EnableActionWithDuration",
    "payload": {
      "actionID": 1,
      "duration": 1
    }
  }
}

Command: DisableAction

Purpose

This command is used to disable an action. This command disables a certain action or automation, and must change the action's state to Inactive. Example: disable a motion sensor to no longer control the lights in an area.

Command Identity

FieldValue
Command ID10
Command hex0x0A
Command nameDisableAction
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "DisableAction",
    "payload": {
      "actionID": 1
    }
  }
}

Command: DisableActionWithDuration

Purpose

This command is used to disable an action with a duration. This command disables a certain action or automation, and must change the action's state to Disabled. After the specified Duration, the action or automation will re-start, and the action's state must change to either Inactive or Active, depending on the actions. Example: disable a "wakeup" experience for a period of 1 week when going on holiday (to prevent them from turning on in the morning while you're not at home).

Command Identity

FieldValue
Command ID11
Command hex0x0B
Command nameDisableActionWithDuration
Directionclient → server
Conformancedesc
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionIDactionIDuint16M——
1InvokeIDinvokeIDuint32O——
2Durationdurationuint32M—Indicates the requested duration in seconds.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 37,
    "command_name": "DisableActionWithDuration",
    "payload": {
      "actionID": 1,
      "duration": 1
    }
  }
}

Cluster 37 Events

IDHexEventPriorityConformanceDescription
00x00StateChangedinfoMThis event is generated when there is a change in the State of an ActionID during the execution of an action and the most recent command using that ActionID used an InvokeID data field.
10x01ActionFailedinfoMThis event is generated when there is some error which prevents the action from its normal planned execution and the most recent command using that ActionID used an InvokeID data field.

Event 0 — StateChanged

This event is generated when there is a change in the State of an ActionID during the execution of an action and the most recent command using that ActionID used an InvokeID data field. It provides feedback to the client about the progress of the action. Example: When InstantActionWithTransition is invoked (with an InvokeID data field), two StateChanged events will be generated: - one when the transition starts (NewState=Active) - one when the transition completed (NewState=Inactive)

IDFieldTypeConformanceMeaning
0ActionIDuint16M—
1InvokeIDuint32M—
2NewStateActionStateEnumMThis field is set to state that the action has changed to.

Event 1 — ActionFailed

This event is generated when there is some error which prevents the action from its normal planned execution and the most recent command using that ActionID used an InvokeID data field. It provides feedback to the client about the non-successful progress of the action.

IDFieldTypeConformanceMeaning
0ActionIDuint16M—
1InvokeIDuint32M—
2NewStateActionStateEnumMThis field is set to state that the action is in at the time of generating the event.
3ErrorActionErrorEnumMThis field is set to indicate the reason for non-successful progress of the action.

SmartphoneKey Notes

  • Cluster 37 is not currently exposed by SmartphoneKey devices. This page documents the Matter 1.6.1 specification so that future devices can be interpreted without changes to the backend.
  • Shadow paths follow endpoint/37/attribute; attribute values that the device reports as unreadable are written as n/a.
  • Attribute IDs, command IDs and enum values on this page come from the CSA Matter 1.6.1 data model; descriptions are condensed from the specification text.