SceneManagement Cluster

Cluster ID: 0x0062  |  Endpoint: Typically on Endpoint 1 (application endpoint)

SceneManagement is the scene management Cluster in Matter — it bundles attribute values from multiple Clusters into a single "snapshot" and restores the entire set of states with one command. For example, a "Movie Mode" scene can simultaneously dim the lights, set a warm color temperature, and close the curtains — all in one scene.

Each scene is uniquely identified by GroupID + SceneID and belongs to a Group, which can contain multiple scenes. The core data structure of a scene is ExtensionFieldSets — a set of "Cluster ID + attribute value list" snapshots that define which attributes of which Clusters are set to what values.

Matter 1.4+ Replaces Legacy Scenes (0x0005)

SceneManagement (0x0062) is the new Cluster introduced in Matter 1.4, replacing the legacy Scenes (0x0005). The new version introduces Fabric-level isolation (each Fabric independently manages its own scene table) and the FabricSceneInfo struct, resolving the security issues of shared scene tables across multiple Fabrics in the old version. New projects should use 0x0062 directly; the legacy 0x0005 has been marked as deprecated.

Commands

The SceneManagement Cluster has 8 commands covering scene CRUD operations, one-tap recall, and cross-group copying. AddScene and RecallScene are the two most commonly used in daily development. Click a command ID in the table below to jump to its detailed description.

ID Name Description Response Command
0x00 AddScene Add or update a scene AddSceneResponse
0x01 ViewScene View full data of a specified scene ViewSceneResponse
0x02 RemoveScene Remove a specified scene RemoveSceneResponse
0x03 RemoveAllScenes Remove all scenes in a specified Group RemoveAllScenesResponse
0x04 StoreScene Capture current state and store as a scene StoreSceneResponse
0x05 RecallScene Recall a specified scene in one step None
0x06 GetSceneMembership Query the list of scenes in a Group GetSceneMembershipResponse
0x40 CopyScene Copy scenes between Groups CopySceneResponse

AddScene — Add Scene (0x00)

Adds a new scene to the device's scene table, or updates an existing one. The core scene data is passed via ExtensionFieldSets — it defines which attributes of which Clusters this scene controls. If the specified GroupID + SceneID already exists, it will be overwritten.

ParameterTypeDescription
GroupID group-id Group ID the scene belongs to. 0x0000 means not belonging to any Group
SceneID uint8 Scene ID, unique within the Group (0x00 ~ 0xFF)
TransitionTime uint32 Transition time in units of 0.1 second (100 ms). For example, 10 = 1.0 second
SceneName string Scene name (max 16 bytes). Requires the device to support the SN feature
ExtensionFieldSets list List of attribute snapshots per Cluster (see data structure details)

AddSceneResponse Fields

FieldTypeDescription
StatusstatusOperation result status code
GroupIDgroup-idGroup ID the scene belongs to
SceneIDuint8Scene ID
Usage Scenarios

A user creates a "Movie Mode" in the app: lights dimmed to 10%, color temperature set to warm white, curtains closed. The app packages these attribute values into ExtensionFieldSets, stores them on the device via AddScene, and later recalls them with RecallScene in one step.

ViewScene — View Scene (0x01)

Reads the full data of a specified scene, including transition time, scene name, and ExtensionFieldSets. Used to display scene details in the app UI or to retrieve the current configuration before editing.

ParameterTypeDescription
GroupIDgroup-idGroup ID the scene belongs to
SceneIDuint8Scene ID to view

ViewSceneResponse Fields

FieldTypeDescription
StatusstatusOperation result status code
GroupIDgroup-idGroup ID
SceneIDuint8Scene ID
TransitionTimeuint32Transition time (0.1 second)
SceneNamestringScene name
ExtensionFieldSetslistAttribute snapshots per Cluster
Usage Scenarios

When the app's scene editing page loads, it first uses ViewScene to read the current configuration and display it to the user. After the user makes changes, the app updates the scene via AddScene.

RemoveScene — Remove Scene (0x02)

Removes a specified scene from the device's scene table. After removal, the SceneID can be reused.

ParameterTypeDescription
GroupIDgroup-idGroup ID the scene belongs to
SceneIDuint8Scene ID to remove

RemoveSceneResponse Fields

FieldTypeDescription
StatusstatusOperation result status code
GroupIDgroup-idGroup ID
SceneIDuint8Scene ID
Usage Scenarios

A user removes a scene no longer needed from the app, such as deleting an old "Party Mode".

RemoveAllScenes — Remove All Scenes in Group (0x03)

Removes all scenes in a specified Group at once. Suitable for resetting or clearing all scene configurations in an area.

ParameterTypeDescription
GroupIDgroup-idGroup ID whose scenes are to be removed

RemoveAllScenesResponse Fields

FieldTypeDescription
StatusstatusOperation result status code
GroupIDgroup-idGroup ID
Usage Scenarios

After redecorating, a user clears all old scenes in the "Living Room" Group to reconfigure from scratch.

StoreScene — Capture Current State (0x04)

Takes a "snapshot" of the device's current actual state and saves it as a scene. The device automatically reads the current attribute values from its own Clusters and packages them into ExtensionFieldSets stored in the scene table. Unlike AddScene, which requires manually specifying each attribute value, StoreScene is more like a "save current state" shortcut.

ParameterTypeDescription
GroupIDgroup-idGroup ID the scene belongs to
SceneIDuint8Scene ID (overwrites if it already exists)

StoreSceneResponse Fields

FieldTypeDescription
StatusstatusOperation result status code
GroupIDgroup-idGroup ID
SceneIDuint8Scene ID
Usage Scenarios

After a user adjusts the lights to their preferred state using a slider, they tap the "Save as Scene" button. The app sends a StoreScene command, and the device automatically stores the current brightness, color temperature, and other attribute values into the scene table. No need for the app to read each attribute value individually and pass them via AddScene.

RecallScene — Recall Scene (0x05)

Recalls a specified scene in one step. The device reads the ExtensionFieldSets saved in the scene and sets each Cluster's attribute values to the target values recorded in the scene. If TransitionTime is specified, the device transitions smoothly within the given duration (e.g., gradual dimming).

ParameterTypeRequiredDescription
GroupID group-id Yes Group ID the scene belongs to
SceneID uint8 Yes Scene ID to recall
TransitionTime uint32 No Overrides the scene's own transition time (0.1 second). If omitted, uses the value stored with the scene
TransitionTime Unit Note

The unit of TransitionTime is 0.1 second (100 ms), not seconds or milliseconds. For example, a value of 10 means 1.0 second, and 30 means 3.0 seconds. This differs from the legacy Scenes Cluster which used whole-second units; the new version provides higher precision.

Usage Scenarios

A user taps the "Movie Mode" button in the app, which sends RecallScene. The lights dim from their current brightness to 10% within 1 second, the color temperature gradually shifts to warm white, and the curtains slowly close. All devices execute synchronously with a smooth, natural transition.

GetSceneMembership — Query Scene List (0x06)

Queries which scenes exist in a specified Group. Returns the list of all stored SceneIDs under that Group and the remaining capacity. Used to display the scene list in the app UI or to determine how many more scenes can be created.

ParameterTypeDescription
GroupIDgroup-idGroup ID to query

GetSceneMembershipResponse Fields

FieldTypeDescription
StatusstatusOperation result status code
Capacityuint8 / nullRemaining scene storage capacity. null means unknown
GroupIDgroup-idGroup ID
SceneListlist<uint8>List of SceneIDs stored in this Group
Usage Scenarios

When the app opens the "Scene Management" page, it first calls GetSceneMembership to retrieve all scene IDs in the current Group, then calls ViewScene for each one to fetch the scene details and display them in a list.

CopyScene — Copy Scene (0x40)

Copies scenes between Groups. Can copy a single scene or all scenes from a source Group to a target Group at once. Ideal for sharing the same scene configuration across different rooms.

ParameterTypeDescription
Mode CopyModeBitmap Bit 0: CopyAllScenes — when set to 1, copies all scenes from the source Group
GroupIdentifierFrom group-id Source Group ID
SceneIdentifierFrom uint8 Source Scene ID (ignored when CopyAllScenes = 1)
GroupIdentifierTo group-id Target Group ID
SceneIdentifierTo uint8 Target Scene ID (ignored when CopyAllScenes = 1)

CopySceneResponse Fields

FieldTypeDescription
StatusstatusOperation result status code
GroupIdentifierFromgroup-idSource Group ID
SceneIdentifierFromuint8Source Scene ID
Usage Scenarios

A user has configured a "Reading Mode" scene in the living room and wants the same configuration in the study. Using CopyScene, the scene is copied from the living room Group to the study Group without needing to reconfigure each attribute value.

Attributes

The SceneManagement Cluster has 3 attributes. Scene data itself is not exposed through attributes but is read via the ViewScene / GetSceneMembership commands. The attributes provide metadata such as scene table capacity and current state information.

ID Name Type Description
0x0000 LastConfiguredBy Removed in newer versions node-id / null Node ID that last modified the scene table
0x0001 SceneTableSize uint16 Total scene table capacity
0x0002 FabricSceneInfo list<FabricSceneInfo> Scene summary info per Fabric

LastConfiguredBy(0x0000) Removed in newer versions

Removed in newer Matter versions

LastConfiguredBy is no longer part of newer Matter specifications (it is absent from the connectedhomeip v1.6 definitions this site checks against). Devices built to newer versions will not implement it; this section is kept only as a reference for older devices. Newer versions no longer expose a "last configured by" value; per-fabric scene details are provided through FabricSceneInfo instead.

Records the Node ID that last modified the scene table. Useful for troubleshooting "who changed the scene configuration" issues. A value of null means the scene table has never been modified, or the device does not support tracking this information.

IDNameTypeDescription
0x0000 LastConfiguredBy Removed in newer versions node-id / null Nullable. Records the Node that last modified the scene table via AddScene / RemoveScene / StoreScene or similar commands. null = not recorded or never modified

SceneTableSize(0x0001)

The maximum capacity of the device's scene table, i.e., the maximum number of scenes it can store. This is the total capacity shared across all Fabrics. Typical device values range from 8 to 16.

IDNameTypeDescription
0x0001 SceneTableSize uint16 Total scene table capacity. Multiple Fabrics share this capacity limit; for example, a value of 16 means all Fabrics combined can store at most 16 scenes

FabricSceneInfo(0x0002)

Scene state information independently maintained by each Fabric. This is a list where each element corresponds to one Fabric. Through it, you can determine how many scenes the current Fabric has, which scene is currently active, and how many more can be stored.

Fabric-Level Isolation

An important design aspect of SceneManagement is Fabric-level isolation: each Fabric (think of it as each smart home platform, such as Apple Home or Google Home) can only see and operate its own scenes, and cannot read or modify another Fabric's scene data. FabricSceneInfo also only returns information for the current Fabric.

FieldTypeDescription
SceneCount uint8 Number of scenes currently stored by this Fabric
CurrentScene uint8 Currently active Scene ID (the scene from the last RecallScene / StoreScene)
CurrentGroup group-id Group ID of the currently active scene
SceneValid bool Whether the current scene state is still valid. Becomes false if device attributes are manually changed (not through a scene operation)
RemainingCapacity uint8 Number of additional scenes this Fabric can still store
FabricIndex fabric-idx Fabric index this record corresponds to
Meaning of SceneValid

After a scene is recalled via RecallScene, SceneValid becomes true. However, if the user subsequently adjusts brightness or color temperature manually (not through a scene operation), the device's actual state no longer matches the scene record, and SceneValid reverts to false. This field can be used to determine whether the current device state still matches a scene.

Core Data Structures

ExtensionFieldSets (Extension Field Sets)

ExtensionFieldSets is the core data of a scene — it records "which attributes of which Clusters this scene sets to what values." The structure is a list where each element contains a Cluster ID and the list of attribute values to set for that Cluster.

LevelFieldTypeDescription
ExtensionFieldSet ClusterID cluster-id Cluster ID to control, e.g. 0x0006 (OnOff)
AttributeValueList list List of attribute values for this Cluster
AttributeValuePair AttributeID attrib-id Attribute ID, e.g. 0x0000 (OnOff on/off state)
ValueUnsigned8/16/... various Attribute value; the type depends on the attribute's definition

For example, a "Movie Mode" scene's ExtensionFieldSets might contain:

  • OnOff (0x0006): On/Off = On
  • LevelControl (0x0008): Brightness = 25 (approx. 10%)
  • ColorControl (0x0300): Color X = 370, Color Y = 300 (warm white)

When the device executes RecallScene, it reads these attribute pairs one by one and invokes the corresponding Cluster's logic to set the attribute values. Each Cluster needs to implement the ScenesManagement callback interface to support scene storage and recall.

Feature Bitmap

The SceneManagement Cluster declares the device's advanced capabilities via FeatureMap (0xFFFC):

Bit 0
SN(SceneNames) Scene Names — when enabled, AddScene can set the SceneName field and ViewScene returns the scene name
Is the SN Feature Required?

The SN feature is optional. Devices that do not support SN will ignore the SceneName parameter in AddScene, and ViewScene will return an empty string for SceneName. If the app needs to display scene names, it can store them locally in the app without relying on the device.

Example Data

Attribute Read Example

Return data when reading SceneManagement Cluster attributes:

{
  // --- Scene table info ---
  "0x0001": 16,            // SceneTableSize = 16 (max 16 scenes)

  // --- Fabric scene info ---
  "0x0002": [              // FabricSceneInfo (current Fabric's scene summary)
    {
      "SceneCount": 3,           // Current Fabric has 3 stored scenes
      "CurrentScene": 1,         // Currently active Scene ID
      "CurrentGroup": 0,         // Group ID of the currently active scene
      "SceneValid": true,        // Current scene state is valid
      "RemainingCapacity": 13,   // Can store 13 more scenes
      "FabricIndex": 1           // Fabric index
    }
  ]
}

AddScene Command Example

Create a "Movie Mode" scene containing attribute snapshots from three Clusters: OnOff, LevelControl, and ColorControl:

{
  "invokeRequests": [{
    "commandPath": {
      "endpointId": 1,
      "clusterId": "0x0062",
      "commandId": "0x00"       // AddScene
    },
    "commandFields": {
      "GroupID": 0,              // Group ID (0 = not in any Group)
      "SceneID": 1,              // Scene ID
      "TransitionTime": 10,      // Transition time = 1.0 second (unit: 0.1 second)
      "SceneName": "Movie",      // Scene name (requires SN feature)
      "ExtensionFieldSets": [    // Attribute snapshots per Cluster
        {
          "ClusterID": "0x0006", // OnOff Cluster
          "AttributeValueList": [
            { "AttributeID": "0x0000", "ValueUnsigned8": 1 }
          ]
        },
        {
          "ClusterID": "0x0008", // LevelControl Cluster
          "AttributeValueList": [
            { "AttributeID": "0x0000", "ValueUnsigned8": 25 }
          ]
        },
        {
          "ClusterID": "0x0300", // ColorControl Cluster
          "AttributeValueList": [
            { "AttributeID": "0x0003", "ValueUnsigned16": 370 },
            { "AttributeID": "0x0004", "ValueUnsigned16": 300 }
          ]
        }
      ]
    }
  }]
}
Developer Tip

In practice, ExtensionFieldSets should only include Clusters that the device actually supports. Before sending, you can check which Clusters the device has via the Descriptor Cluster's (0x001D) ServerList, to avoid command failures caused by including unsupported Clusters.

Common Scenarios

Scenario 1: Movie Mode — Dim Lights in One Tap

Goal: User taps the "Movie Mode" button, and the lights transition to dim warm lighting within 2 seconds.

  1. When creating the scene, use AddScene (0x00) to set ExtensionFieldSets:
    • OnOff: On
    • LevelControl: Brightness = 25 (approx. 10%)
    • ColorControl: Color temperature set to warm white
    TransitionTime = 20 (i.e., 2.0-second transition)
  2. For daily use, the app sends RecallScene (0x05) with the GroupID and SceneID
  3. The device smoothly transitions to the target state within 2 seconds, with lights naturally dimming and warming
  4. If the user wants an instant switch without transition, override TransitionTime = 0 in RecallScene
Scenario 2: Wake-Up Mode — Natural Morning Wake-Up

Goal: Every morning at 7:00 AM, the lights gradually brighten from off to bright cool white, simulating a sunrise.

  1. Use AddScene (0x00) to create a "Wake-Up" scene:
    • OnOff: On
    • LevelControl: Brightness = 254 (100%)
    • ColorControl: Color temperature set to cool white (daylight)
    TransitionTime = 600 (i.e., 60-second transition, a 1-minute sunrise effect)
  2. Set up an automation rule: trigger RecallScene (0x05) daily at 07:00
  3. The lights gradually brighten from off to daylight white over 1 minute for a natural wake-up
  4. Can be combined with OnOff Cluster's OnWithTimedOff as a forget-to-turn-off safeguard: auto-off 30 minutes after wake-up
Scenario 3: One-Tap Scene Switching — Physical Button Trigger

Goal: A wall switch's single-press / double-press triggers different scenes respectively.

  1. Pre-configure two scenes:
    • SceneID = 1 "Daily": Brightness 80%, natural white light
    • SceneID = 2 "Movie": Brightness 10%, warm white light
  2. Configure in binding rules (Binding):
    • Switch single-press -> RecallScene (GroupID=0, SceneID=1)
    • Switch double-press -> RecallScene (GroupID=0, SceneID=2)
  3. Scene switching executes entirely locally (via Group multicast), without cloud dependency, for extremely fast response
  4. Using StoreScene (0x04), users can customize: adjust the lights to their preferred state, then long-press the switch to trigger StoreScene, saving the current state as the scene mapped to that button