Identify Cluster

Cluster ID: 0x0003  |  Endpoint: Typically on Endpoint 1 (application endpoint); also commonly found on Endpoint 0 (Root)

Identify triggers a visual or audible indicator on the device (flashing light, beeping, screen blinking, etc.) to help users locate a specific device among many. This Cluster is very small — only 2 attributes and 2 commands — but nearly every Matter device is required to support it.

When to Use

After commissioning, not sure which light was just added? Send an Identify command to make it flash for a few seconds. During debugging, need to confirm whether the app is connected to the right device? Use TriggerEffect to get clear feedback from the device. This is the simplest way to answer "where is this device?"

Attribute Overview

Identify has only two attributes, both mandatory. Click an attribute ID to jump to its detailed description.

ID Name Type Access Description
0x00 IdentifyTime uint16 Read/Write Remaining identify time (seconds)
0x01 IdentifyType enum8 Read-only The identify method supported by the device

IdentifyTime (Remaining Identify Time)

The remaining seconds of the current identify effect. Writing a non-zero value immediately starts identification; the device counts down by one each second until it reaches 0 and stops. Writing 0 immediately stops any ongoing identification.

Writing the Attribute vs Sending a Command

Writing IdentifyTime = 10 directly and sending the Identify(IdentifyTime: 10) command produce the same result. The command approach is more common because it is semantically clearer, and some SDKs provide better wrappers for commands.

IdentifyType (Identify Method)

A read-only attribute that describes which method the device uses for identification. Different devices have different hardware capabilities — a light bulb flashes its light, a door lock may beep, and a device with a screen may blink its display.

IdentifyTypeEnum Enum Values

0
None No identification capability
1
LightOutput Identify via light output (flashing, color change)
2
VisibleIndicator Identify via a visible indicator (LED indicator light)
3
AudibleBeep Identify via audible sound (buzzer)
4
Display Identify via display (blinking screen)
5
Actuator Identify via actuator (e.g., motor vibration)

Commands

The Identify Cluster has two commands, both sent from Client to Server (i.e., from the app to the device). No Timed Interaction is required and there are no access restrictions — they can be sent directly.

ID Name Description
0x00 Identify Start identification; the device flashes for the specified number of seconds
0x40 TriggerEffect Trigger a specific identify effect

Identify — Start Identification (0x00)

Tells the device to begin identification for the specified number of seconds. The device chooses the identify method based on its IdentifyType capability (flashing light, beeping, etc.). After receiving the command, the IdentifyTime attribute is set to the provided value and counts down to 0 each second.

ParameterTypeRequiredDescription
IdentifyTime uint16 Yes Identify duration in seconds. Pass 0 to stop immediately

Request example:

{
  "invokeRequests": [{
    "commandPath": {
      "endpointId": 1,
      "clusterId": "0x0003",
      "commandId": "0x00"       // Identify
    },
    "commandFields": {
      "0": 10                   // IdentifyTime = 10 seconds
    }
  }]
}

TriggerEffect — Trigger Effect (0x40)

Triggers a predefined identify effect. Unlike the Identify command, TriggerEffect specifies an effect type rather than a duration — each effect has its own fixed duration and behavior.

ParameterTypeRequiredDescription
EffectIdentifier enum8 Yes The effect type to trigger (see enum values below)
EffectVariant enum8 Yes Effect variant; currently only 0 = Default

EffectIdentifierEnum Enum Values

0x00
Blink A single quick blink (~0.5 seconds)
0x01
Breathe Breathe effect (~15 seconds of gradual brightening and dimming)
0x02
Okay Acknowledgment feedback (two flashes meaning "received")
0x0B
ChannelChange Channel change effect (~8 seconds of color/brightness variation)
0xFE
FinishEffect Gracefully finish the currently playing effect
0xFF
StopEffect Immediately stop the current effect

EffectVariantEnum Enum Values

0
Default Default variant (currently the only option)

Request example (trigger a breathe effect):

{
  "invokeRequests": [{
    "commandPath": {
      "endpointId": 1,
      "clusterId": "0x0003",
      "commandId": "0x40"       // TriggerEffect
    },
    "commandFields": {
      "0": 1,                   // EffectIdentifier = Breathe
      "1": 0                    // EffectVariant = Default
    }
  }]
}

Example Data

Reading the Identify Cluster attributes of a light bulb device:

{
  // --- Attributes ---
  "0x0": 0,         // IdentifyTime = 0 (not currently identifying)
  "0x1": 2          // IdentifyType = VisibleIndicator (LED indicator light)
}
Developer Advice

A typical "locate device" feature in an app is implemented like this:

  1. The user taps the "Locate Device" button
  2. The app sends an Identify command with IdentifyTime = 15 (flash for 15 seconds)
  3. The app displays a 15-second countdown in sync
  4. Once the user locates the device, they can send Identify(IdentifyTime: 0) to stop early

For finer effect control (e.g., a single flash to confirm connection), TriggerEffect(Blink, Default) is more appropriate than Identify.