Cameras1365 — Push AV Stream Transport

Matter Cluster 1365 — Push AV Stream Transport

Matter Cluster 1365 (0x0555) Push AV Stream Transport: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 1365 — Push AV Stream Transport Cluster

Matter Cluster 1365, also written as 0x0555, is the Push AV Stream Transport Cluster. This cluster implements the upload of Audio and Video streams from the Camera AV Stream Management Cluster using suitable push-based transports. Push AV Stream Transport is the transmission of a stream of media to a server, initiated by the activation of an associated trigger. A push transport can be triggered from a camera operating in an always-on mode for supporting 24/7 style recording, triggered by events based on motion zones defined in the Zone Management Cluster, or manually triggered using commands or bindings.

Cluster Identity

FieldValue
Cluster ID decimal1365
Cluster ID hex0x0555
Cluster namePush AV Stream Transport
Cluster revision (Matter 1.6.1)2
Roleapplication
ScopeEndpoint
PICS codePAVST
Typical endpoint1

Revision history

RevisionChange
1Initial Release
2Add DoorbellPressed to TriggerActivationReason, augment PushTransport events with Session numbers and Event context and add multi-stream support

Shadow Path Format

Cluster 1365 values in the device shadow use this format:

endpoint_id / 1365 / attribute_id

Example:

{
  "1/1365/0": []
}
PartMeaning
1Endpoint ID
1365Push AV Stream Transport cluster
0SupportedFormats attribute

Cluster 1365 Features

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

BitCodeFeatureConformanceMeaning
0PERZONESENSPerZoneSensitivityOSupports a sensitivity value per Zone
1METADATAMetadataP, OSupports metadata transmission in Push transports

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


Data Types

CMAFInterfaceEnum

This type indicates the exact mode of CMAF that is in use.

ValueNameConformanceMeaning
0Interface1MCMAF Interface-1 Mode
1Interface2DASHP, MCMAF Interface-2 Mode with DASH Support
2Interface2HLSP, MCMAF Interface-2 Mode with HLS Support

ContainerFormatEnum

ValueNameConformanceMeaning
0CMAFMCMAF container format

IngestMethodsEnum

ValueNameConformanceMeaning
0CMAFIngestMCMAF ingestion format

StatusCodeEnum

ValueNameConformanceMeaning
2InvalidTLSEndpointMThe specified TLSEndpointID cannot be found.
3InvalidStreamMThe specified VideoStreamID or AudioStreamID cannot be found.
4InvalidURLMThe specified URL is invalid.
5InvalidZoneMA specified ZoneID was invalid.
6InvalidCombinationMThe specified combination of Ingestion method and Container format is not supported.
7InvalidTriggerTypeMThe trigger type is invalid for this command.
8InvalidTransportStatusMThe Stream Transport Status is invalid for this command.
9InvalidOptionsMThe requested Container options are not supported with the streams indicated.
10InvalidStreamUsageMThe requested StreamUsage is not allowed.
11InvalidTimeMTime sync has not occurred yet.
12InvalidPreRollLengthClusterRevision >= 2The requested pre roll length is not compatible with the streams key frame interval.
13DuplicateStreamValuesClusterRevision >= 2The requested Streams info contained duplicate entries.

TransportStatusEnum

ValueNameConformanceMeaning
0ActiveMPush Transport can transport AV Streams
1InactiveMPush Transport cannot transport AV Streams

TransportTriggerTypeEnum

The Trigger Type determines the basic operation of the Push Transport and when it will actually transmit content.

ValueNameConformanceMeaning
0CommandMTriggered only via a command invocation
1MotionMTriggered via motion detection or command
2ContinuousMTriggered always when transport status is Active

TriggerActivationReasonEnum

ValueNameConformanceMeaning
0UserInitiatedMTrigger has been activated by user action
1AutomationMTrigger has been activated by automation
2EmergencyMTrigger has been activated for emergency reasons
3DoorbellPressedClusterRevision >= 2Trigger has been activated by a doorbell press

AudioStreamStruct (struct)

This struct holds a video stream id and the symbolic stream name associated with it. For CMAF based transports, this becomes a CMAF Track.

FieldNameTypeConformanceConstraintMeaning
0AudioStreamNamestringMlength 1 to 16This field identifies the unique name assigned to this stream.
1AudioStreamIDAudioStreamIDM——

CMAFContainerOptionsStruct (struct)

This struct encodes options for configuration of the CMAF container format.

FieldNameTypeConformanceConstraintMeaning
0CMAFInterfaceCMAFInterfaceEnumM——
1SegmentDurationuint16M500 to 65500Indicates the segment duration (in milliseconds) of the CMAF container.
2ChunkDurationuint16Mmax computeIndicates the chunk duration (in milliseconds) of the CMAF container.
3SessionGroupuint8O, D—This field is deprecated and has been replaced with the VideoStreams and AudioStreams fields.
4TrackNamestringO, Dlength 1 to 16This field is deprecated and has been replaced with the VideoStreamName or AudioStreamName fields of the associated stream entry in the VideoStreams or AudioStreams lists
7MetadataEnabledbool[METADATA]—This field, if present and true, indicates that AVMetadataStruct based Metadata tracks and boxes may be included in the CMAF segments.

ContainerOptionsStruct (struct)

This struct encodes the specific container type options struct

FieldNameTypeConformanceConstraintMeaning
0ContainerTypeContainerFormatEnumM—Indicates the container type chosen for this transport.
1CMAFContainerOptionsCMAFContainerOptionsStructContainerType = CMAF——

SupportedFormatStruct (struct)

This struct holds the combination of container format and ingest method which represents a valid combination for a transport.

FieldNameTypeConformanceConstraintMeaning
0ContainerFormatContainerFormatEnumM—Indicates a supported container format that when combined with IngestMethod, can be used in a transport.
1IngestMethodIngestMethodsEnumM—Indicates a supported ingest method that when combined with ContainerFormat, can be used in a transport.

TransportConfigurationStruct (struct) — fabric-scoped

This encodes the current configuration of an allocated transport.

FieldNameTypeConformanceConstraintMeaning
0ConnectionIDPushTransportConnectionIDM0 to 65534—
1TransportStatusTransportStatusEnumM—This field represents the Stream Transport Status of the transport.
2TransportOptionsTransportOptionsStructO—This field represents the Stream Transport Options of the transport.

TransportMotionTriggerTimeControlStruct (struct)

This struct is used to encode a set of values for controlling the lifecycle of a motion triggered transport.

FieldNameTypeConformanceConstraintMeaning
0InitialDurationuint16Mmin 1Indicates the initial duration (in seconds) of the recording, following the initial trigger.
1AugmentationDurationuint16M—Indicates the duration (in seconds) that the MotionDetectedDuration value is to be extended by if motion is still detected during this period.
2MaxDurationelapsed-sMmin InitialDurationIndicates the maximum duration (in seconds) after initial motion detection that additional motion will be detected.
3BlindDurationuint16M—Indicates the duration (in seconds) after a transport finishes transmitting that the Node must NOT activate the trigger again.

TransportOptionsStruct (struct)

This encodes the options and configuration of a transport.

FieldNameTypeConformanceConstraintMeaning
0StreamUsageStreamUsageEnumM—This field contains the StreamUsageEnum of this transport.
1VideoStreamIDVideoStreamID (nullable)O, D——
2AudioStreamIDAudioStreamID (nullable)O, D——
3TLSEndpointIDTLSEndpointIDM0 to 65534—
4URLstringMlength 13 to 2000—
5TriggerOptionsTransportTriggerOptionsStructM—This field is of type TransportTriggerOptionsStruct and represents the Trigger Type and its sub options.
6IngestMethodIngestMethodsEnumM—This field is of type IngestMethodsEnum and represents the Ingest Method to be used.
7ContainerOptionsContainerOptionsStructM—This field is of type ContainerOptionsStruct and represents the type of Push AV Stream Container to be uploaded and any additional options relating to the Container Format used.
8ExpiryTimeepoch-sO—This field is an unsigned 32 bit integer representing the TTL in seconds of a transport allocation.
9VideoStreamslist of VideoStreamStructO, [ClusterRevision >= 2]1 to 16 entriesThis field is a list of VideoStreamStruct which indicates the requested video streams and the stream names for this transport.
10AudioStreamslist of AudioStreamStructO, [ClusterRevision >= 2]1 to 16 entriesThis field is a list of AudioStreamStruct which indicates the requested audio streams and the stream names for this transport.

TransportTriggerOptionsStruct (struct)

This struct encodes the conditions and options that configures the trigger for the push transport. The transport only start transmitting AV Streams when its associated trigger is activated.

FieldNameTypeConformanceConstraintMeaning
0TriggerTypeTransportTriggerTypeEnumM—Indicates the type of the transport trigger.
1MotionZoneslist of TransportZoneOptionsStruct (nullable)TriggerType = Motion—This field is a list of TransportZoneOptionsStruct containing the Motion Zones to trigger on.
2MotionSensitivityuint8 (nullable)TriggerType = Motion & !PERZONESENS1 to 10Indicates how sensitive the trigger is to motion and must match the same implementation specifics as Sensitivity.
3MotionTimeControlTransportMotionTriggerTimeControlStructTriggerType = Motion—This field must control timing around repeated activation of the trigger.
4MaxPreRollLenuint16TriggerType = Command | TriggerType = Motion—Indicates the maximum duration in milliseconds of pre-roll content that can be included, if the TriggerType is Motion Value or Command Value, when the trigger activates.

TransportZoneOptionsStruct (struct)

This struct encodes the options that configure the per Zone portion of a Trigger configuration.

FieldNameTypeConformanceConstraintMeaning
0ZoneZoneID (nullable)M—This field is a Motion ZoneID found in the Zone Management Cluster which must cause the trigger to activate.
1Sensitivityuint8PERZONESENS1 to 10Indicates how sensitive the trigger for the specified Zone is, and must match the same implementation specifics as the Sensitivity attribute in the Zone Management Cluster.

VideoStreamStruct (struct)

This struct holds a video stream id and the symbolic stream name associated with it. For CMAF based transports, this becomes a CMAF Track.

FieldNameTypeConformanceConstraintMeaning
0VideoStreamNamestringMlength 1 to 16This field identifies the unique name assigned to this stream.
1VideoStreamIDVideoStreamIDM——

Cluster 1365 Attributes

Cluster 1365 defines 2 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
00x0000SupportedFormatslist of SupportedFormatStructMR (read: view)——
10x0001CurrentConnectionslist of TransportConfigurationStructMR (read: view, fabric-sensitive)persisted—

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

Attribute Details

Attribute 0 / 0x0000 — SupportedFormats

Path example:

1/1365/0

This attribute contains a list of Supported Container Format structs, which represents the combinations of Ingestion Method and Container Format that the Node supports. Nodes must support at least the combination CMAFIngest,CMAF.

PropertyValue
Typelist of SupportedFormatStruct
ConformanceM
AccessR (read: view)
Constraintmin 1 entries

Each entry is a SupportedFormatStruct (see Data Types).

Example:

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

Attribute 1 / 0x0001 — CurrentConnections

Path example:

1/1365/1

This attribute is a list of TransportConfigurationStruct which represents all the allocated connections added via AllocatePushTransport. When this attribute is read over a non Large Message (See Large Message Quality in the Data Model section of MatterCore) capable transport, the TransportOptions field must NOT be included. To get the full details of the connections use the FindTransport command. The maximum size of this list is run-time dependent upon the resource constraints of the system as described in Resource Management and Stream Priorities and the currently used bandwidth of the total available specified by MaxNetworkBandwidth.

PropertyValue
Typelist of TransportConfigurationStruct
ConformanceM
AccessR (read: view, fabric-sensitive)
Qualitiespersisted
Constraintdesc

Each entry is a TransportConfigurationStruct (see Data Types).

Example:

{
  "1/1365/1": []
}

Cluster 1365 Commands

Cluster 1365 has 6 client-to-server commands and 2 responses.

IDHexCommandDirectionConformanceResponseDescription
00x00AllocatePushTransportclient → serverMAllocatePushTransportResponseThis command must allocate a transport and return a PushTransportConnectionID.
10x01AllocatePushTransportResponseserver → clientM—This command is generated in response to a successful AllocatePushTransport command.
20x02DeallocatePushTransportclient → serverMstatusThis command is generated to request the Node deallocates the specified transport.
30x03ModifyPushTransportclient → serverMstatusThis command is used to request the Node modifies the configuration of the specified push transport.
40x04SetTransportStatusclient → serverMstatusThis command is generated to request the Node modifies the Transport Status of a specified transport or all transports.
50x05ManuallyTriggerTransportclient → serverMstatusThis command is generated to request the Node to manually start the specified push transport.
60x06FindTransportclient → serverMFindTransportResponseThis command returns the Transport Configuration for the specified push transport or all allocated transports for the fabric if null.
70x07FindTransportResponseserver → clientM—This command is generated in response to a successful FindTransport command.

AcceptedCommandList

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

endpoint_id / 1365 / 65529
{
  "1/1365/65529": [
    0,
    2,
    3,
    4,
    5,
    6
  ]
}

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

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

Purpose

This command must allocate a transport and return a PushTransportConnectionID.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameAllocatePushTransport
Directionclient → server
ConformanceM
ResponseAllocatePushTransportResponse
Access(invoke: manage, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0TransportOptionstransportOptionsTransportOptionsStructM—This field represents the configuration options of the transport to be allocated.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1365,
    "command_name": "AllocatePushTransport",
    "payload": {
      "transportOptions": {
        "streamUsage": 0,
        "videoStreamID": 0,
        "audioStreamID": 0,
        "tlsEndpointID": 0
      }
    }
  }
}

The device answers with AllocatePushTransportResponse (see below).


Command: AllocatePushTransportResponse

Purpose

This command is generated in response to a successful AllocatePushTransport command.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameAllocatePushTransportResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0TransportConfigurationtransportConfigurationTransportConfigurationStructM—This field is a TransportConfigurationStruct representing the newly allocated transport.

Command: DeallocatePushTransport

Purpose

This command is generated to request the Node deallocates the specified transport.

Command Identity

FieldValue
Command ID2
Command hex0x02
Command nameDeallocatePushTransport
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: manage, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ConnectionIDconnectionIDPushTransportConnectionIDM0 to 65534—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1365,
    "command_name": "DeallocatePushTransport",
    "payload": {
      "connectionID": 0
    }
  }
}

Command: ModifyPushTransport

Purpose

This command is used to request the Node modifies the configuration of the specified push transport.

Command Identity

FieldValue
Command ID3
Command hex0x03
Command nameModifyPushTransport
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: manage, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ConnectionIDconnectionIDPushTransportConnectionIDM0 to 65534—
1TransportOptionstransportOptionsTransportOptionsStructM—This field represents the Transport Options to modify.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1365,
    "command_name": "ModifyPushTransport",
    "payload": {
      "connectionID": 0,
      "transportOptions": {
        "streamUsage": 0,
        "videoStreamID": 0,
        "audioStreamID": 0,
        "tlsEndpointID": 0
      }
    }
  }
}

Command: SetTransportStatus

Purpose

This command is generated to request the Node modifies the Transport Status of a specified transport or all transports.

Command Identity

FieldValue
Command ID4
Command hex0x04
Command nameSetTransportStatus
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: manage, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ConnectionIDconnectionIDPushTransportConnectionID (nullable)M——
1TransportStatustransportStatusTransportStatusEnumM—This field is a TransportStatusEnum and represent the new transport status to apply.

TransportStatus values (TransportStatusEnum): 0 = Active, 1 = Inactive

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1365,
    "command_name": "SetTransportStatus",
    "payload": {
      "connectionID": 0,
      "transportStatus": 0
    }
  }
}

Command: ManuallyTriggerTransport

Purpose

This command is generated to request the Node to manually start the specified push transport.

Command Identity

FieldValue
Command ID5
Command hex0x05
Command nameManuallyTriggerTransport
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: operate, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ConnectionIDconnectionIDPushTransportConnectionIDM0 to 65534—
1ActivationReasonactivationReasonTriggerActivationReasonEnumM—This field provides information as to why the transport was started or stopped.
2TimeControltimeControlTransportMotionTriggerTimeControlStructO—This field is a struct of type TransportMotionTriggerTimeControlStruct, but the BlindDuration field is ignored.
3UserDefineduserDefinedoctstr[METADATA]max length 256This field is an octet string representing arbitrary format user defined metadata that will be included in the recording via the UserDefined field of AVMetadataStruct.

ActivationReason values (TriggerActivationReasonEnum): 0 = UserInitiated, 1 = Automation, 2 = Emergency, 3 = DoorbellPressed

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1365,
    "command_name": "ManuallyTriggerTransport",
    "payload": {
      "connectionID": 0,
      "activationReason": 0
    }
  }
}

Command: FindTransport

Purpose

This command returns the Transport Configuration for the specified push transport or all allocated transports for the fabric if null.

Command Identity

FieldValue
Command ID6
Command hex0x06
Command nameFindTransport
Directionclient → server
ConformanceM
ResponseFindTransportResponse
Access(invoke: operate, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ConnectionIDconnectionIDPushTransportConnectionID (nullable)M——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1365,
    "command_name": "FindTransport",
    "payload": {
      "connectionID": 0
    }
  }
}

The device answers with FindTransportResponse (see below).


Command: FindTransportResponse

Purpose

This command is generated in response to a successful FindTransport command.

Command Identity

FieldValue
Command ID7
Command hex0x07
Command nameFindTransportResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0TransportConfigurationstransportConfigurationslist of TransportConfigurationStructM—This field is a list of Transport Configurations.

Cluster 1365 Events

IDHexEventPriorityConformanceDescription
00x00PushTransportBegininfoMThis event indicates a push transport transmission has begun.
10x01PushTransportEndinfoMThis event indicates a push transport upload of the indicated recording has completed.

Event 0 — PushTransportBegin

This event indicates a push transport transmission has begun. With Motion and Continuous based triggers, this event is generated when each new recording starts uploading. With Command based triggers, this event is generated when uploading starts via the ManuallyTriggerTransport command.

IDFieldTypeConformanceMeaning
0ConnectionIDPushTransportConnectionIDM—
1TriggerTypeTransportTriggerTypeEnumMThis field represents the type of trigger which caused this event to be generated.
2ActivationReasonTriggerActivationReasonEnumTriggerType = CommandThis field only be present when the TriggerType is Command and provides the reason for the event.
3ContainerTypeContainerFormatEnumClusterRevision >= 2Indicates the container type chosen for this transport.
4CMAFSessionNumberuint64ContainerType = CMAF—

Event 1 — PushTransportEnd

This event indicates a push transport upload of the indicated recording has completed. With Motion, Continuous, and Command based triggers, this event is generated when each new recording finishes uploading. The data on this event contains the following information.

IDFieldTypeConformanceMeaning
0ConnectionIDPushTransportConnectionIDM—
1ContainerTypeContainerFormatEnumClusterRevision >= 2Indicates the container type chosen for this transport.
2CMAFSessionNumberuint64ContainerType = CMAF—

SmartphoneKey Notes

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