Sensing and measurement129 — Valve Configuration and Control

Matter Cluster 129 — Valve Configuration and Control

Matter Cluster 129 (0x0081) Valve Configuration and Control: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 129 — Valve Configuration and Control Cluster

Matter Cluster 129, also written as 0x0081, is the Valve Configuration and Control Cluster. This cluster is used to configure a valve.

Cluster Identity

FieldValue
Cluster ID decimal129
Cluster ID hex0x0081
Cluster nameValve Configuration and Control
Cluster revision (Matter 1.6.1)1
Roleapplication
ScopeEndpoint
PICS codeVALCC
Typical endpoint1

Revision history

RevisionChange
1Initial revision

Shadow Path Format

Cluster 129 values in the device shadow use this format:

endpoint_id / 129 / attribute_id

Example:

{
  "1/129/0": 1
}
PartMeaning
1Endpoint ID
129Valve Configuration and Control cluster
0OpenDuration attribute

Cluster 129 Features

The FeatureMap attribute (1/129/65532) is a bitmap. Each bit set means the device implements that feature and the attributes and commands that depend on it.

BitCodeFeatureConformanceMeaning
0TSTimeSyncdescUTC time is used for time indications
1LVLLevelODevice supports setting the specific position of the valve

Example: FeatureMap = 0 means no optional feature is enabled; 3 means every feature listed above is enabled.


Data Types

StatusCodeEnum

ValueNameConformanceMeaning
2FailureDueToFaultMThe requested action could not be performed due to a fault on the valve.

ValveStateEnum

ValueNameConformanceMeaning
0ClosedMValve is in closed position
1OpenMValve is in open position
2TransitioningMValve is transitioning between closed and open positions or between levels

ValveFaultBitmap (bitmap)

BitNameConformanceMeaning
0GeneralFaultMUnspecified fault detected
1BlockedMValve is blocked
2LeakingMValve has detected a leak
3NotConnectedMNo valve is connected to controller
4ShortCircuitMShort circuit is detected
5CurrentExceededMThe available current has been exceeded

Cluster 129 Attributes

Cluster 129 defines 11 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
00x0000OpenDurationelapsed-sMR (read: view)nullable—
10x0001DefaultOpenDurationelapsed-sMR/W (read: view, write: operate)nullable, persisted—
20x0002AutoCloseTimeepoch-usTSR (read: view)nullable—
30x0003RemainingDurationelapsed-sMR (read: view)nullable, quiet reporting—
40x0004CurrentStateValveStateEnumMR (read: view)nullable—
50x0005TargetStateValveStateEnumMR (read: view)nullable—
60x0006CurrentLevelpercentLVLR (read: view)nullable—
70x0007TargetLevelpercentLVLR (read: view)nullable—
80x0008DefaultOpenLevelpercent[LVL]R/W (read: view, write: operate)persisted100
90x0009ValveFaultValveFaultBitmapOR (read: view)—0
100x000ALevelStepuint8[LVL]R (read: view)—1

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 — OpenDuration

Path example:

1/129/0

Indicates the total duration, in seconds, for which the valve will remain open for this current opening. A value of null indicates the duration is not set, meaning that the valve will remain open until closed by the user or some other automation.

PropertyValue
Typeelapsed-s
ConformanceM
AccessR (read: view)
Qualitiesnullable
Constraintmin 1

Example:

{
  "1/129/0": 1
}

Attribute 1 / 0x0001 — DefaultOpenDuration

Path example:

1/129/1

Indicates the default duration, in seconds, for which the valve will remain open, if the OpenDuration field is not present in the Open command. A value of null indicates the duration is not set, meaning that the valve will remain open until closed by the user or some other automation.

PropertyValue
Typeelapsed-s
ConformanceM
AccessR/W (read: view, write: operate)
Qualitiesnullable, persisted
Constraintmin 1

Example:

{
  "1/129/1": 1
}

Attribute 2 / 0x0002 — AutoCloseTime

Path example:

1/129/2

Indicates the UTC time when the valve will close, depending on value of the OpenDuration attribute. Null: - When OpenDuration is null, or - When the valve does not have a synchronized UTCTime in the Time Synchronization cluster, or - When the valve is closed. When the value of this attribute is earlier or equal to the current UTC time, the valve must automatically transition to its closed position. The behavior of transitioning to the closed position, must match the behavior described in the Close command.

PropertyValue
Typeepoch-us
ConformanceTS
AccessR (read: view)
Qualitiesnullable

Example:

{
  "1/129/2": 0
}

Attribute 3 / 0x0003 — RemainingDuration

Path example:

1/129/3

Indicates the remaining duration, in seconds, until the valve closes. Null: - When OpenDuration is null, or - When the valve is closed. The value of this attribute only be reported in the following cases: - When it changes from null to any other value and vice versa, or - When it changes to 0, or - When it increases, or - When the closing time changes. Meaning that clients should NOT rely on the reporting of this attribute in order to keep track of the remaining duration, due to this attribute not being reported during regular countdown.

PropertyValue
Typeelapsed-s
ConformanceM
AccessR (read: view)
Qualitiesnullable, quiet reporting

Example:

{
  "1/129/3": 1
}

Attribute 4 / 0x0004 — CurrentState

Path example:

1/129/4

Indicates the current state of the valve. A value of null indicates that the current state is not known.

PropertyValue
TypeValveStateEnum
ConformanceM
AccessR (read: view)
Qualitiesnullable

Values (ValveStateEnum):

ValueNameMeaning
0ClosedValve is in closed position
1OpenValve is in open position
2TransitioningValve is transitioning between closed and open positions or between levels

Example:

{
  "1/129/4": 0
}

Attribute 5 / 0x0005 — TargetState

Path example:

1/129/5

Indicates the target state, while changing the state, of the valve. A value of null indicates that no target position is set, since the change in state is either done or failed.

PropertyValue
TypeValveStateEnum
ConformanceM
AccessR (read: view)
Qualitiesnullable

Values (ValveStateEnum):

ValueNameMeaning
0ClosedValve is in closed position
1OpenValve is in open position
2TransitioningValve is transitioning between closed and open positions or between levels

Example:

{
  "1/129/5": 0
}

Attribute 6 / 0x0006 — CurrentLevel

Path example:

1/129/6

Indicates the current level of the valve as a percentage value, between fully closed and fully open. During a transition from one level to another level, the valve should keep this attribute updated to the best of its ability, in order to represent the actual level of the valve during the movement. A value of 100 percent indicates the fully open position. A value of 0 percent indicates the fully closed position.

PropertyValue
Typepercent
ConformanceLVL
AccessR (read: view)
Qualitiesnullable

Example:

{
  "1/129/6": 100
}

Attribute 7 / 0x0007 — TargetLevel

Path example:

1/129/7

Indicates the target level of the valve as a percentage value, between fully closed and fully open. The interpretation of the percentage value is the same as for the CurrentLevel attribute. A value of null indicates that no target position is set, since the change of level is either done or failed.

PropertyValue
Typepercent
ConformanceLVL
AccessR (read: view)
Qualitiesnullable

Example:

{
  "1/129/7": 100
}

Attribute 8 / 0x0008 — DefaultOpenLevel

Path example:

1/129/8

Indicates the default value used for the TargetLevel attribute, when a valve transitions from the closed to the open state, caused by an Open command, if a TargetLevel field is not present in the Open command. If the LevelStep attribute is present and the value of a write interaction to this attribute field is not 100, the value is a supported value as defined by the LevelStep attribute, such that (Value received in the write interaction) % (Value of LevelStep attribute) equals 0. If the resulting value is not 0, the requested DefaultOpenLevel value is considered an unsupported value and a CONSTRAINT_ERROR status is returned.

PropertyValue
Typepercent
Conformance[LVL]
AccessR/W (read: view, write: operate)
Qualitiespersisted
Constraint1 to 100
Default100

Example:

{
  "1/129/8": 100
}

Attribute 9 / 0x0009 — ValveFault

Path example:

1/129/9

Indicates any faults registered by the valve.

PropertyValue
TypeValveFaultBitmap
ConformanceO
AccessR (read: view)
Default0

Bits (ValveFaultBitmap):

BitNameMeaning
0GeneralFaultUnspecified fault detected
1BlockedValve is blocked
2LeakingValve has detected a leak
3NotConnectedNo valve is connected to controller
4ShortCircuitShort circuit is detected
5CurrentExceededThe available current has been exceeded

Example:

{
  "1/129/9": 0
}

Attribute 10 / 0x000A — LevelStep

Path example:

1/129/10

Indicates the step size the valve can support. The step size defined by this attribute is counted from 0 and the final step towards 100 may be different than what is defined in this attribute. For example, if the value of this attribute is 15, it results in these target values being supported; 0, 15, 30, 45, 60, 75, 90 and 100. The values of 0 and 100 must always be supported, regardless of the value of this attribute.

PropertyValue
Typeuint8
Conformance[LVL]
AccessR (read: view)
Constraint1 to 50
Default1

Example:

{
  "1/129/10": 1
}

Cluster 129 Commands

Cluster 129 has 2 client-to-server commands and 0 responses.

IDHexCommandDirectionConformanceResponseDescription
00x00Openclient → serverMstatusThis command is used to set the valve to its open position.
10x01Closeclient → serverMstatusThis command is used to set the valve to its closed position.

AcceptedCommandList

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

endpoint_id / 129 / 65529
{
  "1/129/65529": [
    0,
    1
  ]
}

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

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

Purpose

This command is used to set the valve to its open position.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameOpen
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0OpenDurationopenDurationelapsed-s (nullable)Omin 1Indicates the duration that the valve will remain open for this specific Open command. A value of null indicates the duration is not set, meaning that the valve will remain open until closed by the user or some other automation.
1TargetLeveltargetLevelpercent[LVL]min 1Indicates the target level used for this specific Open command.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 129,
    "command_name": "Open",
    "payload": {
      "openDuration": 1,
      "targetLevel": 100
    }
  }
}

Command: Close

Purpose

This command is used to set the valve to its closed position.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameClose
Directionclient → server
ConformanceM
Responsestatus
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": 129,
    "command_name": "Close",
    "payload": {}
  }
}

Cluster 129 Events

IDHexEventPriorityConformanceDescription
00x00ValveStateChangedinfoOThis event is generated when the valve state changed.
10x01ValveFaultinfoOThis event is generated when the valve registers or clears a fault, e.g. not being able to transition to the requested target level or state.

Event 0 — ValveStateChanged

This event is generated when the valve state changed. For level changes, after the end of movement, for state changes when the new state has been reached.

IDFieldTypeConformanceMeaning
0ValveStateValveStateEnumMIndicates the new state of the valve.
1ValveLevelpercentLVLIndicates the new level of the valve.

Event 1 — ValveFault

This event is generated when the valve registers or clears a fault, e.g. not being able to transition to the requested target level or state.

IDFieldTypeConformanceMeaning
0ValveFaultValveFaultBitmapMIndicates the value of the ValveFault attribute, at the time this event is generated.

SmartphoneKey Notes

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