Appliances96 — Operational State

Matter Cluster 96 — Operational State

Matter Cluster 96 (0x0060) Operational State: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 96 — Operational State Cluster

Matter Cluster 96, also written as 0x0060, is the Operational State Cluster. This cluster supports remotely monitoring and, where supported, changing the operational state of any device where a state machine is a part of the operation. This cluster defines common states, scoped to this cluster (e.g. Stopped, Running, Paused, Error).

Cluster Identity

FieldValue
Cluster ID decimal96
Cluster ID hex0x0060
Cluster nameOperational State
Cluster revision (Matter 1.6.1)3
Roleapplication
ScopeEndpoint
PICS codeOPSTATE
Typical endpoint1

Revision history

RevisionChange
1Initial revision
2The Pause and Resume commands are usable in all compatible states and defined reserved ranges for base/derived clusters
3Changed CountdownTime attribute to Q quality

Shadow Path Format

Cluster 96 values in the device shadow use this format:

endpoint_id / 96 / attribute_id

Example:

{
  "1/96/1": 1
}
PartMeaning
1Endpoint ID
96Operational State cluster
1CurrentPhase attribute

Data Types

ErrorStateEnum

This type defines the set of known operational error values, and is derived from enum8. The following table defines the applicable ranges for values that are defined within this type.

ValueNameConformanceMeaning
0NoErrorMThe device is not in an error state
1UnableToStartOrResumeMThe device is unable to start or resume operation
2UnableToCompleteOperationMThe device was unable to complete the current operation
3CommandInvalidInStateMThe device cannot process the command in its current state

OperationalStateEnum

This type defines the set of known operational state values, and is derived from enum8. The following table defines the applicable ranges for values that are defined within this type.

ValueNameConformanceMeaning
0StoppedMThe device is stopped
1RunningMThe device is operating
2PausedMThe device is paused during an operation
3ErrorMThe device is in an error state

ErrorStateStruct (struct)

FieldNameTypeConformanceConstraintMeaning
0ErrorStateIDErrorStateEnumM——
1ErrorStateLabelstringErrorStateID >= 0x80 & ErrorStateID <= 0xBFmax length 64This field is present when the ErrorStateID is from the set reserved for Manufacturer Specific errors.
2ErrorStateDetailsstringOmax length 64This is a human-readable string that provides details about the error condition.

OperationalStateStruct (struct)

The OperationalStateStruct is used to indicate a possible state of the device.

FieldNameTypeConformanceConstraintMeaning
0OperationalStateIDOperationalStateEnumM——
1OperationalStateLabelstringOperationalStateID >= 0x80 & OperationalStateID <= 0xBFmax length 64This field is present when the OperationalStateID is from the set reserved for Manufacturer Specific States.

Cluster 96 Attributes

Cluster 96 defines 6 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
00x0000PhaseListlist of stringMR (read: view)nullableMS
10x0001CurrentPhaseuint8MR (read: view)nullableMS
20x0002CountdownTimeelapsed-sOR (read: view)nullable, quiet reportingnull
30x0003OperationalStateListlist of OperationalStateStructMR (read: view)—MS
40x0004OperationalStateOperationalStateEnumMR (read: view)——
50x0005OperationalErrorErrorStateStructMR (read: view)——

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; 3 for a Matter 1.6.1 device.

Attribute Details

Attribute 0 / 0x0000 — PhaseList

Path example:

1/96/0

Indicates a list of names of different phases that the device can go through for the selected function or mode. The list may not be in sequence order. For example in a washing machine this could include items such as "pre-soak", "rinse", and "spin". These phases are manufacturer specific and may change when a different function or mode is selected.

PropertyValue
Typelist of string
ConformanceM
AccessR (read: view)
Qualitiesnullable
Constraintmax 32 entries
DefaultMS

Example:

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

Attribute 1 / 0x0001 — CurrentPhase

Path example:

1/96/1

This attribute represents the current phase of operation being performed by the server. This is the positional index representing the value from the set provided in the PhaseList Attribute, where the first item in that list is an index of 0. Thus, this attribute has a maximum value that is "length(PhaseList) - 1". Null if the PhaseList attribute is null or if the PhaseList attribute is an empty list.

PropertyValue
Typeuint8
ConformanceM
AccessR (read: view)
Qualitiesnullable
Constraintdesc
DefaultMS

Example:

{
  "1/96/1": 1
}

Attribute 2 / 0x0002 — CountdownTime

Path example:

1/96/2

Indicates the estimated time left before the operation is completed, in seconds. A value of 0 (zero) means that the operation has completed. A value of null represents that there is no time currently defined until operation completion. This may happen, for example, because no operation is in progress or because the completion time is unknown.

PropertyValue
Typeelapsed-s
ConformanceO
AccessR (read: view)
Qualitiesnullable, quiet reporting
Constraintmax 259200
Defaultnull

Example:

{
  "1/96/2": 0
}

Attribute 3 / 0x0003 — OperationalStateList

Path example:

1/96/3

This attribute describes the set of possible operational states that the device exposes. An operational state is a fundamental device state such as Running or Error. Details of the phase of a device when, for example, in a state of Running are provided by the CurrentPhase attribute. All devices must, at a minimum, expose the set of states matching the commands that are also supported by the cluster instance, in addition to Error.

PropertyValue
Typelist of OperationalStateStruct
ConformanceM
AccessR (read: view)
Constraintdesc
DefaultMS

Each entry is a OperationalStateStruct (see Data Types).

Example:

{
  "1/96/3": []
}

Attribute 4 / 0x0004 — OperationalState

Path example:

1/96/4

This attribute specifies the current operational state of a device. This is populated with a valid OperationalStateID from the set of values in the OperationalStateList Attribute.

PropertyValue
TypeOperationalStateEnum
ConformanceM
AccessR (read: view)

Values (OperationalStateEnum):

ValueNameMeaning
0StoppedThe device is stopped
1RunningThe device is operating
2PausedThe device is paused during an operation
3ErrorThe device is in an error state

Example:

{
  "1/96/4": 0
}

Attribute 5 / 0x0005 — OperationalError

Path example:

1/96/5

When there is no error detected, this has an ErrorStateID of NoError.

PropertyValue
TypeErrorStateStruct
ConformanceM
AccessR (read: view)
Constraintdesc

Value is a ErrorStateStruct struct (see Data Types).

Example:

{
  "1/96/5": {
    "errorStateID": 0,
    "errorStateLabel": "example",
    "errorStateDetails": "example"
  }
}

Cluster 96 Commands

Cluster 96 has 4 client-to-server commands and 1 response.

IDHexCommandDirectionConformanceResponseDescription
00x00Pauseclient → serverResume, OOperationalCommandResponseThis command is supported if the device supports remotely pausing the operation.
10x01Stopclient → serverStart, OOperationalCommandResponseThis command is supported if the device supports remotely stopping the operation.
20x02Startclient → serverOOperationalCommandResponseThis command is supported if the device supports remotely starting the operation.
30x03Resumeclient → serverPause, OOperationalCommandResponseThis command is supported if the device supports remotely resuming the operation.
40x04OperationalCommandResponseserver → clientPause | Stop | Start | Resume—This command is supported by an implementation if any of the other commands defined by this cluster are supported (i.e. listed in the AcceptedCommandList global attribute).

AcceptedCommandList

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

endpoint_id / 96 / 65529
{
  "1/96/65529": [
    0,
    1,
    2,
    3
  ]
}

Before sending a Cluster 96 command, check that the command ID exists in endpoint/96/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": 1,
    "cluster_id": 96,
    "command_name": "Pause",
    "payload": {},
    "timed_request_timeout_ms": 1000
  }
}

For Cluster 96, always use "cluster_id": 96. 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: Pause

Purpose

This command is supported if the device supports remotely pausing the operation. If this command is supported, the Resume command must also be supported. On receipt of this command, the device must pause its operation if it is possible based on the current function of the server. For example, if it is at a point where it is safe to do so and/or permitted, but can be restarted from the point at which pause occurred.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command namePause
Directionclient → server
ConformanceResume, O
ResponseOperationalCommandResponse
Access(invoke: operate)

Payload Fields

This command has no payload fields.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 96,
    "command_name": "Pause",
    "payload": {}
  }
}

The device answers with OperationalCommandResponse (see below).


Command: Stop

Purpose

This command is supported if the device supports remotely stopping the operation. On receipt of this command, the device must stop its operation if it is at a position where it is safe to do so and/or permitted. Restart of the device following the receipt of the Stop command must require attended operation unless remote start is allowed by the device type and any jurisdiction governing remote operation of the device. If this command is received when already in the Stopped state the device must respond with an OperationalCommandResponse command with an ErrorStateID of NoError but take no further action.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameStop
Directionclient → server
ConformanceStart, O
ResponseOperationalCommandResponse
Access(invoke: operate)

Payload Fields

This command has no payload fields.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 96,
    "command_name": "Stop",
    "payload": {}
  }
}

The device answers with OperationalCommandResponse (see below).


Command: Start

Purpose

This command is supported if the device supports remotely starting the operation. If this command is supported, the 'Stop command must also be supported. On receipt of this command, the device must start its operation if it is safe to do so and the device is in an operational state from which it can be started. There may be either regulatory or manufacturer-imposed safety and security requirements that first necessitate some specific action at the device before a Start command can be honored.

Command Identity

FieldValue
Command ID2
Command hex0x02
Command nameStart
Directionclient → server
ConformanceO
ResponseOperationalCommandResponse
Access(invoke: operate)

Payload Fields

This command has no payload fields.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 96,
    "command_name": "Start",
    "payload": {}
  }
}

The device answers with OperationalCommandResponse (see below).


Command: Resume

Purpose

This command is supported if the device supports remotely resuming the operation. If this command is supported, the Pause command must also be supported. On receipt of this command, the device must resume its operation from the point it was at when it received the Pause command, or from the point when it was paused by means outside of this cluster (for example by manual button press). If this command is received when already in the Running state the device must respond with an OperationalCommandResponse command with an ErrorStateID of NoError but take no further action.

Command Identity

FieldValue
Command ID3
Command hex0x03
Command nameResume
Directionclient → server
ConformancePause, O
ResponseOperationalCommandResponse
Access(invoke: operate)

Payload Fields

This command has no payload fields.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 96,
    "command_name": "Resume",
    "payload": {}
  }
}

The device answers with OperationalCommandResponse (see below).


Command: OperationalCommandResponse

Purpose

This command is supported by an implementation if any of the other commands defined by this cluster are supported (i.e. listed in the AcceptedCommandList global attribute). This command must also be supported by an implementation of a derived cluster as a response to any commands that may be additionally defined therein. This command is generated in response to any of the Start, Stop, Pause, or Resume commands.

Command Identity

FieldValue
Command ID4
Command hex0x04
Command nameOperationalCommandResponse
Directionserver → client (response)
ConformancePause | Stop | Start | Resume

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0CommandResponseStatecommandResponseStateErrorStateStructM—This indicates the success or otherwise of the attempted command invocation. On a successful invocation of the attempted command, the ErrorStateID is populated with NoError.

Cluster 96 Events

IDHexEventPriorityConformanceDescription
00x00OperationalErrorcriticalMThis event is generated when a reportable error condition is detected.
10x01OperationCompletioninfoOThis event should be generated when the overall operation ends, successfully or otherwise.

Event 0 — OperationalError

This event is generated when a reportable error condition is detected. A device that generates this event must also set the OperationalState attribute to Error, indicating an error condition. This event contains the following fields:

IDFieldTypeConformanceMeaning
0ErrorStateErrorStateStructM—

Event 1 — OperationCompletion

This event should be generated when the overall operation ends, successfully or otherwise. For example, the completion of a cleaning operation in a Robot Vacuum Cleaner, or the completion of a wash cycle in a Washing Machine. It is highly recommended that appliances device types employing the Operational State cluster support this event, even if it is optional.

IDFieldTypeConformanceMeaning
0CompletionErrorCodeenum8MThis field provides an indication of the state at the end of the operation. This field has a value from the ErrorStateEnum set.
1TotalOperationalTimeelapsed-s (nullable)OThe total operational time, in seconds, from when the operation was started via an initial Start command or autonomous/manual starting action, until the operation completed. This includes any time spent while paused.
2PausedTimeelapsed-s (nullable)OThe total time spent in the paused state, in seconds. There may be cases whereby the total paused time exceeds the maximum value that can be conveyed by this attribute, in such instances, this attribute is populated with null.

SmartphoneKey Notes

  • Cluster 96 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/96/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.