门锁 Cluster(DoorLock)

Cluster ID: 0x0101  |  所在 Endpoint: 通常在 Endpoint 1(功能端点)

DoorLock 是 Matter 门锁设备的核心 Cluster,定义了锁的状态查询、开/关锁操作、用户管理、凭据(PIN 码/指纹/NFC)管理等全部能力。 门锁类设备的日常开发基本都围绕这个 Cluster 展开。

适用角色

无论你是 App 开发、固件调试、测试验证还是产品评审,这些字段和命令都是你需要了解的核心内容。

命令(Commands)

Command 是发送给门锁执行的操作。大多数写操作都要求 Timed Interaction(定时交互),这是 Matter 针对门锁等安全设备的安全要求。 点击下方表格中的命令 ID 可跳转到对应的详细说明。

ID 名称 说明 定时交互
0x00 LockDoor 上锁 必须
0x01 UnlockDoor 解锁 必须
0x03 UnlockWithTimeout 解锁,到时间后自动回锁 必须
0x1A SetUser 添加或修改用户(可设置权限、有效期等) 必须
0x1B GetUser 查询指定用户信息 不需要
0x1D ClearUser 删除用户(同时删除其关联的所有凭据) 必须
0x22 SetCredential 添加或修改凭据(PIN 码、指纹等) 必须
0x24 GetCredentialStatus 查询指定凭据槽位的状态 不需要
0x26 ClearCredential 删除凭据 必须
0x28 SetAliroReaderConfig 配置 Aliro NFC 读卡器参数 必须
0x29 ClearAliroReaderConfig 清除 Aliro NFC 配置 必须
什么是定时交互(Timed Interaction)

对于门锁这种安全敏感设备,Matter 要求写操作必须附带一个超时时间(通常 5000~10000 毫秒)。 这是为了防止中间人截获命令后延迟重放 —— 如果命令在超时时间内没有被执行,设备会自动拒绝。

发送 LockDoor 命令时如果没有带超时参数,设备会直接返回错误。

LockDoor —— 上锁(0x00)

向门锁发送上锁指令。执行成功后,LockState 属性会从当前值变为 Locked (1)。 这是门锁最核心、最常用的命令之一。

参数类型必填说明
PINCode OctetString 视配置 当 RequirePINforRemoteOperation 为 true 时,远程上锁必须提供 PIN 码
使用场景与参数

用户在 App 首页点击「锁门」按钮时调用。需要先检查 ActuatorEnabled (0x02) 确认执行器可用,再以 Timed Interaction 方式发送此命令。

UnlockDoor —— 解锁(0x01)

向门锁发送解锁指令。执行成功后,LockState 属性会变为 Unlocked (2)。 与 LockDoor 对称,同样是最常用的命令。

参数类型必填说明
PINCode OctetString 视配置 当 RequirePINforRemoteOperation 为 true 时必须提供
使用场景与参数

用户在 App 点击「开锁」或访客到达时远程开门。解锁后建议订阅 LockState 变化,配合 AutoRelockTime 确认是否自动回锁。

UnlockWithTimeout —— 限时解锁(0x03)

解锁门锁,经过指定时间后自动回锁。功能上等同于先 UnlockDoor 再等待 AutoRelockTime,但超时时间由命令参数指定,不受 AutoRelockTime 属性影响。

参数类型必填说明
Timeout U16 是 自动回锁等待时间,单位秒
PINCode OctetString 视配置 同 LockDoor
使用场景与参数

适用于访客临时进入、快递代收等场景 —— 开门后自动锁回,无需用户手动操作。

SetCredential —— 设置凭据(0x22)

为用户添加或修改凭据。凭据是用户用来开锁的「钥匙」—— 可以是 PIN 码、指纹、RFID 卡等。 每个凭据需要绑定到一个已存在的用户(通过 SetUser 创建)。

参数类型说明
OperationTypeU80 = 添加, 2 = 修改
CredentialStruct包含 CredentialType(PIN/指纹/RFID 等)和 CredentialIndex(槽位号)
CredentialDataOctetString凭据数据,如 PIN 码的数字序列
UserIndexU16 / Nullable绑定的用户索引。添加时如果传 null,设备会自动创建新用户
UserStatusU8 / Nullable用户状态(仅在自动创建用户时生效)
UserTypeU8 / Nullable用户类型(仅在自动创建用户时生效)
使用场景与参数

用户在 App 上添加新密码或录入指纹时调用。添加前需通过 MinPINCodeLength (0x18) / MaxPINCodeLength (0x17) 校验 PIN 码长度,通过 NumberOfCredentialsSupportedPerUser (0x1C) 检查凭据容量。

GetCredentialStatus —— 查询凭据状态(0x24)

查询指定凭据槽位是否已被占用、绑定在哪个用户上。不需要 Timed Interaction,是只读查询操作。

ClearCredential —— 删除凭据(0x26)

删除指定的凭据。如果传入特定的 CredentialType 和 CredentialIndex,则精确删除对应凭据;也可以批量清除某类凭据或全部凭据。

SetAliroReaderConfig —— 配置 Aliro 读卡器(0x28)

配置 Aliro NFC 读卡器的签名密钥、群组密钥、支持的协议版本等参数。Aliro 是 Matter 为门锁新增的 NFC 无感开锁标准。

ClearAliroReaderConfig —— 清除 Aliro 配置(0x29)

重置 Aliro NFC 读卡器的所有配置,恢复到未配置状态。

SetUser —— 设置用户(0x1A)

创建或修改门锁上的用户。用户是凭据的「容器」—— 每个用户可以绑定多个凭据(密码、指纹等), 并且可以设置权限级别和有效期。用户管理和凭据管理是门锁最复杂的两个操作。

参数类型说明
OperationTypeU80 = 添加, 2 = 修改, 3 = 清除
UserIndexU16用户索引号(从 1 开始)
UserNameString / Nullable用户名称(可选)
UniqueIDU32 / Nullable用户唯一标识(可选,跨设备同步时有用)
UserStatusU8 / Nullable1 = OccupiedEnabled(正常), 3 = OccupiedDisabled(已禁用)
UserTypeU8 / Nullable0 = 普通, 1 = 一年定期, 6 = 远程专用, 等
CredentialRuleU8 / Nullable凭据规则:0 = 单一凭据即可, 1 = 需双重认证, 2 = 三重
使用场景与参数

在门锁上注册新用户时调用。典型流程:先 SetUser 创建用户,再 SetCredential 为该用户绑定凭据。删除用户时建议用 ClearUser,它会同时清理关联的所有凭据。

GetUser —— 查询用户(0x1B)

按 UserIndex 查询用户的详细信息,包括名称、状态、类型、绑定的凭据列表等。不需要 Timed Interaction。

ClearUser —— 删除用户(0x1D)

删除指定用户及其关联的所有凭据。这是一个「级联删除」操作 —— 不需要额外调用 ClearCredential。

定时交互示例(Timed Interaction)

发送上锁命令时,请求结构大致如下:

{
  "timedRequest": {
    "timeoutMs": 5000       // 超时时间 5 秒
  },
  "invokeRequests": [{
    "commandPath": {
      "endpointId": 1,       // 功能端点
      "clusterId": "0x0101", // DoorLock
      "commandId": "0x00"    // LockDoor
    },
    "commandFields": {}      // LockDoor 无额外参数
  }]
}

属性详解

DoorLock Cluster 的属性按功能分为五组。点击下方汇总表中的属性 ID 可跳转到对应的详细说明。

ID 名称 类型 分组 说明
0x00 LockState enum8 / null 锁核心状态 锁当前状态
0x01 LockType enum8 锁核心状态 锁芯类型
0x02 ActuatorEnabled bool 锁核心状态 执行器是否启用
0x03 DoorState enum8 / null 锁核心状态 门体状态(需 DoorPositionSensor feature)
0x04 DoorOpenEvents uint32 锁核心状态 门被打开的累计次数
0x05 DoorClosedEvents uint32 锁核心状态 门被关闭的累计次数
0x06 OpenPeriod uint16 锁核心状态 门打开持续时间(秒)
0x11 NumberOfTotalUsersSupported uint16 用户与凭据 支持的最大用户总数
0x12 NumberOfPINUsersSupported uint16 用户与凭据 支持 PIN 码的最大用户数
0x13 NumberOfRFIDUsersSupported uint16 用户与凭据 支持 RFID 的最大用户数
0x14 NumberOfWeekDaySchedulesSupportedPerUser uint8 用户与凭据 每用户工作日时间表数
0x15 NumberOfYearDaySchedulesSupportedPerUser uint8 用户与凭据 每用户年度时间表数
0x16 NumberOfHolidaySchedulesSupported uint8 用户与凭据 假日时间表总数
0x17 MaxPINCodeLength uint8 用户与凭据 PIN 码最大长度
0x18 MinPINCodeLength uint8 用户与凭据 PIN 码最小长度
0x19 MaxRFIDCodeLength uint8 用户与凭据 RFID 码最大长度
0x1A MinRFIDCodeLength uint8 用户与凭据 RFID 码最小长度
0x1B CredentialRulesSupport bitmap8 用户与凭据 凭据规则支持位图
0x1C NumberOfCredentialsSupportedPerUser uint8 用户与凭据 每用户最大凭据数
0x21 Language string 操作与显示 锁界面语言(ISO 639-1)
0x22 LEDSettings uint8 操作与显示 LED 指示灯设置
0x23 AutoRelockTime uint32 操作与显示 自动回锁时间(秒)
0x24 SoundVolume uint8 操作与显示 操作音量
0x25 OperatingMode enum8 操作与显示 当前操作模式
0x26 SupportedOperatingModes bitmap16 操作与显示 支持的操作模式位图
0x27 DefaultConfigurationRegister bitmap16 操作与显示 默认配置寄存器
0x28 EnableLocalProgramming bool 操作与显示 是否允许本地编程
0x29 EnableOneTouchLocking bool 操作与显示 是否启用一键上锁
0x2A EnableInsideStatusLED bool 操作与显示 是否启用内侧状态 LED
0x2B EnablePrivacyModeButton bool 操作与显示 是否启用隐私模式按钮
0x2C LocalProgrammingFeatures bitmap8 操作与显示 本地编程功能位图
0x30 WrongCodeEntryLimit uint8 远程操作 错误码输入限制次数
0x31 UserCodeTemporaryDisableTime uint8 远程操作 错误码锁定时间(秒)
0x32 SendPINOverTheAir bool 远程操作 是否通过无线发送 PIN
0x33 RequirePINforRemoteOperation bool 远程操作 远程操作是否需要 PIN
0x80 AliroReaderVerificationKey octstr Aliro NFC 读卡器验证密钥
0x81 AliroReaderGroupIdentifier octstr Aliro NFC 读卡器组标识
0x82 AliroReaderGroupSubIdentifier octstr Aliro NFC 读卡器子标识
0x83 AliroExpeditedTransactionSupportedProtocolVersions list Aliro NFC 快速交易支持的协议版本
0x84 AliroGroupResolvingKey octstr Aliro NFC 组解析密钥
0x85 AliroSupportedBLEUWBProtocolVersions list Aliro NFC 支持的 BLE UWB 协议版本
0x86 AliroBLEAdvertisingVersion uint8 Aliro NFC BLE 广播版本
0x87 NumberOfAliroCredentialIssuerKeysSupported uint16 Aliro NFC 凭据发行密钥数量
0x88 NumberOfAliroEndpointKeysSupported uint16 Aliro NFC 端点密钥数量

锁核心状态(0x00-0x06)

门锁最基本的状态信息,包括锁状态、锁类型、执行器以及门体位置传感器数据。

ID名称类型说明
0x00 LockState
锁状态
enum8 / null 锁当前状态。null 表示设备尚未确定锁芯位置(如刚上电时)
0x01 LockType
锁类型
enum8 锁芯的物理类型,设备出厂固定
0x02 ActuatorEnabled
执行器启用
bool 执行器是否启用。为 false 时所有上锁/解锁命令都会被拒绝
0x03 DoorState
门体状态
enum8 / null 门的物理开合状态。需设备支持 DoorPositionSensor feature
0x04 DoorOpenEvents
开门次数
uint32 门被打开的累计次数(可写入重置计数)
0x05 DoorClosedEvents
关门次数
uint32 门被关闭的累计次数(可写入重置计数)
0x06 OpenPeriod
开门持续时间
uint16 门打开后持续未关闭的时间,单位秒

LockState 枚举值

0
NotFullyLocked 未完全锁定(可能是机械故障或门没关好)
1
Locked 已锁定
2
Unlocked 已解锁
3
Unlatched 门闩已缩回(未完全解锁的中间状态)
null
Unknown 设备尚未确定锁芯位置
开发提示

LockState 是 Nullable 类型 —— 当设备刚启动、还没来得及检测锁芯位置时,这个值可能是 null。处理这个字段时不要直接当数字用,需要先判断是否为空。

LockType 枚举值

0
DeadBolt 锁舌锁
1
Magnetic 磁力锁
2
Other 其他类型
3
Mortise 嵌入式锁
4
Rim 明装锁
5
LatchBolt 弹簧锁
6
CylindricalLock 圆柱锁
7
TubularLock 管状锁
8
InterconnectedLock 联动锁
9
DeadLatch 防拨锁舌
10
DoorFurniture 门配件

DoorState 枚举值

0
Open 门已打开
1
Closed 门已关闭
2
JammedOpen 门被卡住(处于打开状态)
3
ForcedOpen 门被强制打开(安全告警)
4
Unspecified 未指定
5
Ajar 门虚掩(未完全关闭)
null
Unknown 传感器未能确定门状态

用户与凭据(0x11-0x1C)

描述门锁支持的用户数量、凭据类型容量以及时间表调度能力。

ID名称类型说明
0x11 NumberOfTotalUsersSupported
最大用户总数
uint16 设备支持的最大用户总数
0x12 NumberOfPINUsersSupported
PIN 用户数
uint16 支持 PIN 码的最大用户数
0x13 NumberOfRFIDUsersSupported
RFID 用户数
uint16 支持 RFID 的最大用户数
0x14 NumberOfWeekDaySchedulesSupportedPerUser
工作日时间表数
uint8 每个用户支持的工作日时间表数量(如周一至周五特定时段可开锁)
0x15 NumberOfYearDaySchedulesSupportedPerUser
年度时间表数
uint8 每个用户支持的年度时间表数量(指定日期范围可开锁)
0x16 NumberOfHolidaySchedulesSupported
假日时间表数
uint8 设备支持的假日时间表总数(全局生效,覆盖常规时间表)
0x17 MaxPINCodeLength
PIN 码最大长度
uint8 设备支持的 PIN 码最大字符数
0x18 MinPINCodeLength
PIN 码最小长度
uint8 设备要求的 PIN 码最小字符数
0x19 MaxRFIDCodeLength
RFID 码最大长度
uint8 设备支持的 RFID 码最大字节数
0x1A MinRFIDCodeLength
RFID 码最小长度
uint8 设备要求的 RFID 码最小字节数
0x1B CredentialRulesSupport
凭据规则支持
bitmap8 设备支持的凭据验证规则(见下方位图)
0x1C NumberOfCredentialsSupportedPerUser
每用户凭据数
uint8 每个用户可绑定的最大凭据数量

CredentialRulesSupport 位图

Bit 0
Single 支持单一凭据即可开锁
Bit 1
Dual 支持双重凭据验证(如 PIN + 指纹)
Bit 2
Tri 支持三重凭据验证
凭据类型说明

Matter 定义的凭据类型包括:PIN(数字密码)、RFID(卡片)、Fingerprint(指纹)、FingerVein(指静脉)、Face(人脸)。 具体支持哪些凭据类型取决于门锁硬件实现。凭据通过 SetCredential 命令管理。

操作与显示(0x21-0x2C)

控制门锁的操作行为、界面显示和本地编程功能。

ID名称类型说明
0x21 Language
界面语言
string 锁界面显示语言,2 字符 ISO 639-1 编码(如 "en"、"zh")
0x22 LEDSettings
LED 设置
uint8 LED 指示灯在什么操作下点亮(见下方枚举)
0x23 AutoRelockTime
自动回锁时间
uint32 解锁后自动回锁的等待时间,单位秒。0 表示不自动回锁
0x24 SoundVolume
操作音量
uint8 门锁操作提示音的音量级别(见下方枚举)
0x25 OperatingMode
操作模式
enum8 门锁当前的操作模式(见下方枚举)
0x26 SupportedOperatingModes
支持的操作模式
bitmap16 设备支持哪些操作模式(位掩码,对应 OperatingMode 枚举值)
0x27 DefaultConfigurationRegister
默认配置寄存器
bitmap16 标识哪些配置项已从出厂默认值被修改过
0x28 EnableLocalProgramming
本地编程
bool 是否允许通过门锁面板本地添加/修改用户和凭据
0x29 EnableOneTouchLocking
一键上锁
bool 是否启用一键上锁功能(触摸面板即可锁门)
0x2A EnableInsideStatusLED
内侧状态 LED
bool 是否启用门锁内侧的状态指示 LED
0x2B EnablePrivacyModeButton
隐私模式按钮
bool 是否启用物理隐私模式按钮(按下后拒绝远程操作)
0x2C LocalProgrammingFeatures
本地编程功能
bitmap8 允许通过本地编程执行的具体功能(添加用户、修改时间表等)

LEDSettings 枚举值

0
Never LED 从不亮起
1
AccessLockUnlock 仅在开锁/上锁操作时亮起
2
NotAccessLockUnlock 仅在非开关锁操作时亮起
3
All 所有操作都亮起

SoundVolume 枚举值

0
Silent 静音
1
Low 低音量
2
High 高音量

OperatingMode 枚举值

0
Normal 正常模式,所有用户可正常使用
1
Vacation 度假模式,限制远程操作
2
Privacy 隐私模式,只允许本地操作
3
NoRemoteLockUnlock 禁止远程开关锁
4
Passage 通行模式,门保持解锁状态

远程操作(0x30-0x33)

与远程(网络/无线)操作安全策略相关的属性。

ID名称类型说明
0x30 WrongCodeEntryLimit
错误码次数限制
uint8 连续输入错误码的最大允许次数,超过后触发临时锁定
0x31 UserCodeTemporaryDisableTime
错误码锁定时间
uint8 触发临时锁定后的禁用时间,单位秒
0x32 SendPINOverTheAir
无线传输 PIN
bool 是否允许通过无线网络发送 PIN 码(安全相关,通常建议关闭)
0x33 RequirePINforRemoteOperation
远程操作需 PIN
bool 远程(App/网络)操作是否必须附带 PIN 码。为 true 时,LockDoor/UnlockDoor 必须在命令中携带有效 PIN
安全提示

WrongCodeEntryLimit 和 UserCodeTemporaryDisableTime 构成门锁的防暴力破解机制。 典型配置为 5 次错误后锁定 60 秒。App 端应在用户达到限制前给出提示,避免误触发锁定。

Aliro NFC 门禁(0x80-0x88)

Aliro 是 Matter 为门锁新增的 NFC 无感开锁标准。支持手机靠近门锁自动解锁,类似 Apple 数字车钥匙的体验。 通过 SetAliroReaderConfig / ClearAliroReaderConfig 命令管理。

ID名称类型说明
0x80 AliroReaderVerificationKey
读卡器验证密钥
octstr 用于验证读卡器身份的公钥
0x81 AliroReaderGroupIdentifier
读卡器组标识
octstr 读卡器所属组的标识符,同组读卡器共享访问权限
0x82 AliroReaderGroupSubIdentifier
读卡器子标识
octstr 读卡器在组内的唯一子标识
0x83 AliroExpeditedTransactionSupportedProtocolVersions
快速交易协议版本
list 支持的快速(无需完整握手)交易协议版本列表
0x84 AliroGroupResolvingKey
组解析密钥
octstr 用于解析和识别 Aliro 组成员身份的密钥
0x85 AliroSupportedBLEUWBProtocolVersions
BLE UWB 协议版本
list 支持的 BLE 和 UWB 协议版本列表(用于测距定位)
0x86 AliroBLEAdvertisingVersion
BLE 广播版本
uint8 Aliro 读卡器的 BLE 广播协议版本号
0x87 NumberOfAliroCredentialIssuerKeysSupported
凭据发行密钥数
uint16 设备支持的 Aliro 凭据发行者密钥数量
0x88 NumberOfAliroEndpointKeysSupported
端点密钥数
uint16 设备支持的 Aliro 端点密钥数量

标准示例

以下是 Matter 门锁的典型属性数据示例(JSON 格式),逐字段标注含义:

{
  // --- 锁核心状态 ---
  "0x00": 1,           // LockState = Locked(已锁定)
  "0x01": 0,           // LockType = DeadBolt(锁舌锁)
  "0x02": true,        // ActuatorEnabled = true(执行器启用)
  "0x03": 1,           // DoorState = Closed(门已关闭)

  // --- 用户与凭据 ---
  "0x11": 10,          // NumberOfTotalUsersSupported = 10
  "0x12": 10,          // NumberOfPINUsersSupported = 10
  "0x17": 8,           // MaxPINCodeLength = 8 位
  "0x18": 4,           // MinPINCodeLength = 4 位
  "0x1C": 5,           // NumberOfCredentialsSupportedPerUser = 5

  // --- 操作与显示 ---
  "0x23": 30,          // AutoRelockTime = 30 秒
  "0x24": 2,           // SoundVolume = High
  "0x25": 0,           // OperatingMode = Normal
  "0x26": 65535,       // SupportedOperatingModes(支持所有模式)

  // --- 远程操作 ---
  "0x30": 5,           // WrongCodeEntryLimit = 5 次
  "0x33": false        // RequirePINforRemoteOperation = false
}
开发提示

实际从设备读取数据时,Attribute ID 会是十六进制字符串作为 key。上面的 JSON 中 "0x00" 对应 LockState, "0x20" 对应 OperatingMode。对照本页的属性表就能逐个翻译。

常见场景

场景 1:远程开锁 / 关锁

  1. 读取 ActuatorEnabled (0x02),确认执行器是否启用
  2. 读取 RequirePINforRemoteOperation (0x33),判断是否需要用户输入 PIN
  3. 发送 LockDoor (0x00) 或 UnlockDoor (0x01) 命令(必须带 Timed Interaction)
  4. 订阅 LockState (0x00) 的变化,确认操作结果

场景 2:添加新用户和 PIN 码

  1. 读取 NumberOfTotalUsersSupported (0x11) 确认用户容量
  2. 发送 SetUser (0x1A) 创建用户
  3. 读取 MinPINCodeLength (0x18) 和 MaxPINCodeLength (0x17) 确认 PIN 长度要求
  4. 发送 SetCredential (0x22) 为该用户绑定 PIN 码
  5. 可通过 GetCredentialStatus (0x24) 验证凭据是否设置成功

场景 3:首页展示锁状态

  1. 读取 LockState (0x00) —— 注意处理 null 值
  2. 读取 OperatingMode (0x25) —— 如果不是 Normal,界面上可能需要提示
  3. 配合 PowerSource Cluster 读取电池电量