Media1284 — Channel

Matter Cluster 1284 — Channel

Matter Cluster 1284 (0x0504) Channel: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 1284 — Channel Cluster

Matter Cluster 1284, also written as 0x0504, is the Channel Cluster. This cluster provides an interface for controlling the current Channel on a device or endpoint. This cluster server would be supported on Video Player devices or endpoints that allow Channel control such as a Content App. This cluster provides a list of available channels and provides commands for absolute and relative channel changes.

Cluster Identity

FieldValue
Cluster ID decimal1284
Cluster ID hex0x0504
Cluster nameChannel
Cluster revision (Matter 1.6.1)2
Roleapplication
ScopeEndpoint
PICS codeCHANNEL
Typical endpoint1

Revision history

RevisionChange
1Initial revision
2Add EG and RP features, Identifier and Type to Channel Info for Over-the-Top (OTT) channel support

Shadow Path Format

Cluster 1284 values in the device shadow use this format:

endpoint_id / 1284 / attribute_id

Example:

{
  "1/1284/0": []
}
PartMeaning
1Endpoint ID
1284Channel cluster
0ChannelList attribute

Cluster 1284 Features

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

BitCodeFeatureConformanceMeaning
0CLChannelListOProvides list of available channels
1LILineupInfoOProvides lineup info, which is a reference to an external source of lineup information
2EGElectronicGuideOProvides electronic program guide information
3RPRecordProgramOProvides ability to record program

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


Data Types

ChannelTypeEnum

ValueNameConformanceMeaning
0SatelliteMThe channel is sourced from a satellite provider.
1CableMThe channel is sourced from a cable provider.
2TerrestrialMThe channel is sourced from a terrestrial provider.
3OTTMThe channel is sourced from an OTT provider.

LineupInfoTypeEnum

ValueNameConformanceMeaning
0MSOMMulti System Operator

StatusEnum

ValueNameConformanceMeaning
0SuccessMCommand succeeded
1MultipleMatchesMMore than one equal match for the ChannelInfoStruct passed in.
2NoMatchesMNo matches for the ChannelInfoStruct passed in.

RecordingFlagBitmap (bitmap)

BitNameConformanceMeaning
0ScheduledMThe program is scheduled for recording.
1RecordSeriesMThe program series is scheduled for recording.
2RecordedMThe program is recorded and available to be played.

ChannelInfoStruct (struct)

This indicates a channel in a channel lineup. While the major and minor numbers in the ChannelInfoStruct support use of ATSC channel format, a lineup may use other formats which can map into these numeric values.

FieldNameTypeConformanceConstraintMeaning
0MajorNumberuint16M—Indicates the channel major number value (for example, using ATSC format).
1MinorNumberuint16M—Indicates the channel minor number value (for example, using ATSC format).
2NamestringO—Indicates the marketing name for the channel, such as “The CW" or "Comedy Central".
3CallSignstringO—Indicates the call sign of the channel, such as "PBS".
4AffiliateCallSignstringO—Indicates the local affiliate call sign, such as "KCTS".
5IdentifierstringO—This indicates the unique identifier for a specific channel.
6TypeChannelTypeEnumO—This indicates the type or grouping of a specific channel.

ChannelPagingStruct (struct)

This object defines the paging structure that includes the previous and next pagination tokens.

FieldNameTypeConformanceConstraintMeaning
0PreviousTokenPageTokenStruct (nullable)O—Indicates the token to retrieve the preceding page.
1NextTokenPageTokenStruct (nullable)O—Indicates the token to retrieve the next page.

LineupInfoStruct (struct)

The Lineup Info allows references to external lineup sources like Gracenote. The combination of OperatorName, LineupName, and PostalCode must uniquely identify a lineup.

FieldNameTypeConformanceConstraintMeaning
0OperatorNamestringM—Indicates the name of the operator, for example “Comcast”.
1LineupNamestringO—Indicates the name of the provider lineup, for example "Comcast King County".
2PostalCodestringO—Indicates the postal code (zip code) for the location of the device, such as "98052".
3LineupInfoTypeLineupInfoTypeEnumMdescIndicates the type of lineup.

PageTokenStruct (struct)

This object defines the pagination structure.

FieldNameTypeConformanceConstraintMeaning
0Limituint16O—Indicates the maximum number of entries that should be retrieved from the program guide in a single response.
1AfterstringOmax length 8192Indicates the cursor that pinpoints the start of the upcoming data page.
2BeforestringOmax length 8192Indicates the cursor that pinpoints the end of the upcoming data page.

ProgramCastStruct (struct)

This object provides the cast information related to a program.

FieldNameTypeConformanceConstraintMeaning
0NamestringMmax length 256This field represents the name of the cast member.
1RolestringMmax length 256This field represents the role of the cast member.

ProgramCategoryStruct (struct)

This object defines the category associated to a program.

FieldNameTypeConformanceConstraintMeaning
0CategorystringMmax length 256This field represents the category or genre of the program.
1SubCategorystringOmax length 256This field represents the sub-category or sub-genre of the program.

ProgramStruct (struct)

This indicates a program within an electronic program guide (EPG).

FieldNameTypeConformanceConstraintMeaning
0IdentifierstringMmax length 255Indicates a unique identifier for a program within an electronic program guide list.
1ChannelChannelInfoStructM—Indicates the channel associated to the program.
2StartTimeepoch-sM—Indicates an epoch time in seconds indicating the start time of a program, as a UTC time.
3EndTimeepoch-sM—Indicates an epoch time in seconds indicating the end time of a program, as a UTC time.
4TitlestringMmax length 255Indicates the title or name for the specific program.
5SubtitlestringOmax length 255Indicates the subtitle for the specific program.
6DescriptionstringOmax length 8192Indicates the brief description for the specific program.
7AudioLanguageslist of stringOmax 10 entriesIndicates the audio language for the specific program.
8Ratingslist of stringOmax 255 entriesThis field is used for indicating the level of parental guidance recommended for of a particular program.
9ThumbnailUrlstringOmax length 8192This field represents a URL of a thumbnail that clients can use to render an image for the program.
10PosterArtUrlstringOmax length 8192This field represents a URL of a poster that clients can use to render an image for the program on the detail view.
11DvbiUrlstringOmax length 8192This field represents the DVB-I URL associated to the program.
12ReleaseDatestringOmax length 30This field is a string, in ISO 8601 format, representing the date on which the program was released.
13ParentalGuidanceTextstringOmax length 255This field represents a string providing additional information on the parental guidance.
14RecordingFlagRecordingFlagBitmapRP—This field represents the recording status of the program.
15SeriesInfoSeriesInfoStruct (nullable)O—This field represents the information of a series such as season and episode number.
16CategoryListlist of ProgramCategoryStructOmax 255 entriesThis field represents the category of a particular program.
17CastListlist of ProgramCastStructOmax 255 entriesThis field represents a list of the cast or the crew on the program.
18ExternalIDListlist of AdditionalInfoStructOmax 255 entries—

SeriesInfoStruct (struct)

This object provides the episode information related to a program.

FieldNameTypeConformanceConstraintMeaning
0SeasonstringMmax length 256This field represents the season of the series associated to the program.
1EpisodestringMmax length 256This field represents the episode of the program.

Cluster 1284 Attributes

Cluster 1284 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
00x0000ChannelListlist of ChannelInfoStructCLR (read: view)—empty
10x0001LineupLineupInfoStructLIR (read: view)nullablenull
20x0002CurrentChannelChannelInfoStructOR (read: view)nullablenull

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

Path example:

1/1284/0

This attribute provides the list of supported channels.

PropertyValue
Typelist of ChannelInfoStruct
ConformanceCL
AccessR (read: view)
Defaultempty

Each entry is a ChannelInfoStruct (see Data Types).

Example:

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

Attribute 1 / 0x0001 — Lineup

Path example:

1/1284/1

This attribute identifies the channel lineup using external data sources.

PropertyValue
TypeLineupInfoStruct
ConformanceLI
AccessR (read: view)
Qualitiesnullable
Constraintdesc
Defaultnull

Value is a LineupInfoStruct struct (see Data Types).

Example:

{
  "1/1284/1": {
    "operatorName": "example",
    "lineupName": "example",
    "postalCode": "example",
    "lineupInfoType": 0
  }
}

Attribute 2 / 0x0002 — CurrentChannel

Path example:

1/1284/2

This attribute contains the current channel. When supported but a channel is not currently tuned to (if a content application is in foreground), the value of the field is null.

PropertyValue
TypeChannelInfoStruct
ConformanceO
AccessR (read: view)
Qualitiesnullable
Constraintdesc
Defaultnull

Value is a ChannelInfoStruct struct (see Data Types).

Example:

{
  "1/1284/2": {
    "majorNumber": 1,
    "minorNumber": 1,
    "name": "example",
    "callSign": "example"
  }
}

Cluster 1284 Commands

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

IDHexCommandDirectionConformanceResponseDescription
00x00ChangeChannelclient → serverCL | LIChangeChannelResponseChange the channel to the channel case-insensitive exact matching the value passed as an argument.
10x01ChangeChannelResponseserver → clientCL | LI—This command is generated in response to a ChangeChannel command.
20x02ChangeChannelByNumberclient → serverMstatusChange the channel to the channel with the given Number in the ChannelList attribute.
30x03SkipChannelclient → serverMstatusThis command provides channel up and channel down functionality, but allows channel index jumps of size Count.
40x04GetProgramGuideclient → serverEGProgramGuideResponseThis command retrieves the program guide.
50x05ProgramGuideResponseserver → clientEG—This command is a response to the GetProgramGuide command.
60x06RecordProgramclient → serverRP & EGstatusRecord a specific program or series when it goes live.
70x07CancelRecordProgramclient → serverRP & EGstatusCancel recording for a specific program or series.

AcceptedCommandList

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

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

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

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

Purpose

Change the channel to the channel case-insensitive exact matching the value passed as an argument. The match priority order is: Identifier, AffiliateCallSign, CallSign, Name, Number. In the match string, the Channel number should be presented in the Major.Minor format, such as 13.1. Upon receipt, this must generate a ChangeChannelResponse command.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameChangeChannel
Directionclient → server
ConformanceCL | LI
ResponseChangeChannelResponse
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0MatchmatchstringM—This field contains a user-input string to match in order to identify the target channel.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1284,
    "command_name": "ChangeChannel",
    "payload": {
      "match": "example"
    }
  }
}

The device answers with ChangeChannelResponse (see below).


Command: ChangeChannelResponse

Purpose

This command is generated in response to a ChangeChannel command.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameChangeChannelResponse
Directionserver → client (response)
ConformanceCL | LI

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0StatusstatusStatusEnumMdescIndicates the status of the command which resulted in this response.
1DatadatastringO—Indicates Optional app-specific data.

Status values (StatusEnum): 0 = Success, 1 = MultipleMatches, 2 = NoMatches


Command: ChangeChannelByNumber

Purpose

Change the channel to the channel with the given Number in the ChannelList attribute.

Command Identity

FieldValue
Command ID2
Command hex0x02
Command nameChangeChannelByNumber
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0MajorNumbermajorNumberuint16M—Indicates the channel major number value (ATSC format) to which the channel should change.
1MinorNumberminorNumberuint16M—Indicates the channel minor number value (ATSC format) to which the channel should change.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1284,
    "command_name": "ChangeChannelByNumber",
    "payload": {
      "majorNumber": 1,
      "minorNumber": 1
    }
  }
}

Command: SkipChannel

Purpose

This command provides channel up and channel down functionality, but allows channel index jumps of size Count. Jumps are relative to the available list of channels. For example, when the current channel is 100.0 and the list of available channels is [100.0, 200.0, 201.0, 305.1], a SkipChannel command with jump value of 2 must change the channel to 201.0. When the value of the increase or decrease is larger than the number of channels remaining in the given direction, then the behavior is to return to the beginning (or end) of the channel list and continue.

Command Identity

FieldValue
Command ID3
Command hex0x03
Command nameSkipChannel
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0Countcountint16M—Indicates the number of steps to increase (Count is positive) or decrease (Count is negative) the current channel.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1284,
    "command_name": "SkipChannel",
    "payload": {
      "count": 1
    }
  }
}

Command: GetProgramGuide

Purpose

This command retrieves the program guide. It accepts several filter parameters to return specific schedule and program information from a content app. The command must receive in response a ProgramGuideResponse. Standard error codes is used when arguments provided are not valid.

Command Identity

FieldValue
Command ID4
Command hex0x04
Command nameGetProgramGuide
Directionclient → server
ConformanceEG
ResponseProgramGuideResponse
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0StartTimestartTimeepoch-sM—Indicates the beginning of the time window for which program guide entries are to be retrieved, as a UTC time. Entries with a start time on or after this value will be included in the results.
1EndTimeendTimeepoch-sM—Indicates the end of the time window for which program guide entries are to be retrieved, as a UTC time. Entries with an end time on or before this value will be included in the results.
2ChannelListchannelListlist of ChannelInfoStructOmax 255 entriesIndicates the set of channels for which program guide entries should be fetched. By providing a list of channels in this field, the response will only include entries corresponding to the specified channels.
3PageTokenpageTokenPageTokenStruct (nullable)O—Indicates the pagination token used for managing pagination progression.
5RecordingFlagrecordingFlagRecordingFlagBitmap (nullable)O—Indicates the flags of the programs for which entries should be fetched.
6ExternalIDListexternalIDListlist of AdditionalInfoStructOmax 255 entries—
7DatadataoctstrOmax length 8092Indicates Optional app-specific data.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1284,
    "command_name": "GetProgramGuide",
    "payload": {
      "startTime": 0,
      "endTime": 0
    }
  }
}

The device answers with ProgramGuideResponse (see below).


Command: ProgramGuideResponse

Purpose

This command is a response to the GetProgramGuide command.

Command Identity

FieldValue
Command ID5
Command hex0x05
Command nameProgramGuideResponse
Directionserver → client (response)
ConformanceEG

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0PagingpagingChannelPagingStructM—Indicates the necessary pagination attributes that define information for both the succeeding and preceding data pages.
1ProgramListprogramListlist of ProgramStructM—Indicates the list of programs.

Command: RecordProgram

Purpose

Record a specific program or series when it goes live. This functionality enables DVR recording features.

Command Identity

FieldValue
Command ID6
Command hex0x06
Command nameRecordProgram
Directionclient → server
ConformanceRP & EG
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ProgramIdentifierprogramIdentifierstringMmax length 255Indicates the program identifier for the program that should be recorded. This value is provided by the identifier field in ProgramStruct.
1ShouldRecordSeriesshouldRecordSeriesboolM—Indicates whether the whole series associated to the program should be recorded. For example, invoking record program on an episode with that flag set to true, the target should schedule record the whole series.
2ExternalIDListexternalIDListlist of AdditionalInfoStructOmax 255 entries—
3DatadataoctstrOmax length 8092This field, if present, indicates app-specific data.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1284,
    "command_name": "RecordProgram",
    "payload": {
      "programIdentifier": "example",
      "shouldRecordSeries": true
    }
  }
}

Command: CancelRecordProgram

Purpose

Cancel recording for a specific program or series.

Command Identity

FieldValue
Command ID7
Command hex0x07
Command nameCancelRecordProgram
Directionclient → server
ConformanceRP & EG
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ProgramIdentifierprogramIdentifierstringMmax length 255Indicates the program identifier for the program that should be cancelled from recording. This value is provided by the identifier field in ProgramStruct.
1ShouldRecordSeriesshouldRecordSeriesboolM—Indicates whether the whole series associated to the program should be cancelled from recording. For example, invoking record program on an episode with that flag set to true, the target should schedule record the whole series.
2ExternalIDListexternalIDListlist of AdditionalInfoStructOmax 255 entries—
3DatadataoctstrOmax length 8092This field, if present, indicates app-specific data.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 1284,
    "command_name": "CancelRecordProgram",
    "payload": {
      "programIdentifier": "example",
      "shouldRecordSeries": true
    }
  }
}

Cluster 1284 Events

Cluster 1284 defines no events.


SmartphoneKey Notes

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