门锁 Cluster(DoorLock)

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

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

适用角色

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

命令(Commands)

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

ID名称说明定时交互
0x00LockDoor上锁必须
0x01UnlockDoor解锁必须
0x03UnlockWithTimeout解锁,到时间后自动回锁必须
0x1ASetCredential添加或修改凭据(PIN 码、指纹等)必须
0x1BGetCredentialStatus查询指定凭据槽位的状态不需要
0x1DClearCredential删除凭据必须
0x22SetAliroReaderConfig配置 Aliro NFC 读卡器参数必须
0x24ClearAliroReaderConfig清除 Aliro NFC 配置必须
0x26SetUser添加或修改用户(可设置权限、有效期等)必须
0x28GetUser查询指定用户信息不需要
0x29ClearUser删除用户(同时删除其关联的所有凭据)必须
什么是定时交互(Timed Interaction)

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

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

LockDoor —— 上锁(0x00)

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

参数类型必填说明
PINCodeOctetString视配置RequirePINforRemoteOperationtrue 时,远程上锁必须提供 PIN 码
使用场景与参数

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

UnlockDoor —— 解锁(0x01)

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

参数类型必填说明
PINCodeOctetString视配置RequirePINforRemoteOperationtrue 时必须提供
使用场景与参数

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

UnlockWithTimeout —— 限时解锁(0x03)

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

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

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

SetCredential —— 设置凭据(0x1A)

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

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

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

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

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

ClearCredential —— 删除凭据(0x1D)

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

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

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

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

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

SetUser —— 设置用户(0x26)

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

参数类型说明
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 —— 查询用户(0x28)

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

ClearUser —— 删除用户(0x29)

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

定时交互示例(Timed Interaction)

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

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

属性详解

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

ID名称类型分组说明
0x00LockStateenum8 / null锁核心状态锁当前状态
0x01LockTypeenum8锁核心状态锁芯类型
0x02ActuatorEnabledbool锁核心状态执行器是否启用
0x03DoorStateenum8 / null锁核心状态门体状态(需 DoorPositionSensor feature)
0x04DoorOpenEventsuint32锁核心状态门被打开的累计次数
0x05DoorClosedEventsuint32锁核心状态门被关闭的累计次数
0x06OpenPerioduint16锁核心状态门打开持续时间(秒)
0x10NumberOfTotalUsersSupporteduint16用户与凭据支持的最大用户总数
0x11NumberOfPINUsersSupporteduint16用户与凭据支持 PIN 码的最大用户数
0x12NumberOfRFIDUsersSupporteduint16用户与凭据支持 RFID 的最大用户数
0x13NumberOfWeekDaySchedulesSupportedPerUseruint8用户与凭据每用户工作日时间表数
0x14NumberOfYearDaySchedulesSupportedPerUseruint8用户与凭据每用户年度时间表数
0x15NumberOfHolidaySchedulesSupporteduint8用户与凭据假日时间表总数
0x16MaxPINCodeLengthuint8用户与凭据PIN 码最大长度
0x17MinPINCodeLengthuint8用户与凭据PIN 码最小长度
0x18MaxRFIDCodeLengthuint8用户与凭据RFID 码最大长度
0x19MinRFIDCodeLengthuint8用户与凭据RFID 码最小长度
0x1ACredentialRulesSupportbitmap8用户与凭据凭据规则支持位图
0x1BNumberOfCredentialsSupportedPerUseruint8用户与凭据每用户最大凭据数
0x1CLanguagestring操作与显示锁界面语言(ISO 639-1)
0x1DLEDSettingsuint8操作与显示LED 指示灯设置
0x1EAutoRelockTimeuint32操作与显示自动回锁时间(秒)
0x1FSoundVolumeuint8操作与显示操作音量
0x20OperatingModeenum8操作与显示当前操作模式
0x21SupportedOperatingModesbitmap16操作与显示支持的操作模式位图
0x22DefaultConfigurationRegisterbitmap16操作与显示默认配置寄存器
0x23EnableLocalProgrammingbool操作与显示是否允许本地编程
0x24EnableOneTouchLockingbool操作与显示是否启用一键上锁
0x25EnableInsideStatusLEDbool操作与显示是否启用内侧状态 LED
0x26EnablePrivacyModeButtonbool操作与显示是否启用隐私模式按钮
0x27LocalProgrammingFeaturesbitmap8操作与显示本地编程功能位图
0x30WrongCodeEntryLimituint8远程操作错误码输入限制次数
0x31UserCodeTemporaryDisableTimeuint8远程操作错误码锁定时间(秒)
0x32SendPINOverTheAirbool远程操作是否通过无线发送 PIN
0x33RequirePINforRemoteOperationbool远程操作远程操作是否需要 PIN
0x80AliroReaderVerificationKeyoctstrAliro NFC读卡器验证密钥
0x81AliroReaderGroupIdentifieroctstrAliro NFC读卡器组标识
0x82AliroReaderGroupSubIdentifieroctstrAliro NFC读卡器子标识
0x83AliroExpeditedTransactionSupportedProtocolVersionslistAliro NFC快速交易支持的协议版本
0x84AliroGroupResolvingKeyoctstrAliro NFC组解析密钥
0x85AliroSupportedBLEUWBProtocolVersionslistAliro NFC支持的 BLE UWB 协议版本
0x86AliroBLEAdvertisingVersionuint8Aliro NFCBLE 广播版本
0x87NumberOfAliroCredentialIssuerKeysSupporteduint16Aliro NFC凭据发行密钥数量
0x88NumberOfAliroEndpointKeysSupporteduint16Aliro NFC端点密钥数量

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

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

ID名称类型说明
0x00LockState
锁状态
enum8 / null锁当前状态。null 表示设备尚未确定锁芯位置(如刚上电时)
0x01LockType
锁类型
enum8锁芯的物理类型,设备出厂固定
0x02ActuatorEnabled
执行器启用
bool执行器是否启用。为 false 时所有上锁/解锁命令都会被拒绝
0x03DoorState
门体状态
enum8 / null门的物理开合状态。需设备支持 DoorPositionSensor feature
0x04DoorOpenEvents
开门次数
uint32门被打开的累计次数(可写入重置计数)
0x05DoorClosedEvents
关门次数
uint32门被关闭的累计次数(可写入重置计数)
0x06OpenPeriod
开门持续时间
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传感器未能确定门状态

用户与凭据(0x10-0x1B)

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

ID名称类型说明
0x10NumberOfTotalUsersSupported
最大用户总数
uint16设备支持的最大用户总数
0x11NumberOfPINUsersSupported
PIN 用户数
uint16支持 PIN 码的最大用户数
0x12NumberOfRFIDUsersSupported
RFID 用户数
uint16支持 RFID 的最大用户数
0x13NumberOfWeekDaySchedulesSupportedPerUser
工作日时间表数
uint8每个用户支持的工作日时间表数量(如周一至周五特定时段可开锁)
0x14NumberOfYearDaySchedulesSupportedPerUser
年度时间表数
uint8每个用户支持的年度时间表数量(指定日期范围可开锁)
0x15NumberOfHolidaySchedulesSupported
假日时间表数
uint8设备支持的假日时间表总数(全局生效,覆盖常规时间表)
0x16MaxPINCodeLength
PIN 码最大长度
uint8设备支持的 PIN 码最大字符数
0x17MinPINCodeLength
PIN 码最小长度
uint8设备要求的 PIN 码最小字符数
0x18MaxRFIDCodeLength
RFID 码最大长度
uint8设备支持的 RFID 码最大字节数
0x19MinRFIDCodeLength
RFID 码最小长度
uint8设备要求的 RFID 码最小字节数
0x1ACredentialRulesSupport
凭据规则支持
bitmap8设备支持的凭据验证规则(见下方位图)
0x1BNumberOfCredentialsSupportedPerUser
每用户凭据数
uint8每个用户可绑定的最大凭据数量

CredentialRulesSupport 位图

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

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

操作与显示(0x1C-0x27)

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

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

LEDSettings 枚举值

0
NeverLED 从不亮起
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名称类型说明
0x30WrongCodeEntryLimit
错误码次数限制
uint8连续输入错误码的最大允许次数,超过后触发临时锁定
0x31UserCodeTemporaryDisableTime
错误码锁定时间
uint8触发临时锁定后的禁用时间,单位秒
0x32SendPINOverTheAir
无线传输 PIN
bool是否允许通过无线网络发送 PIN 码(安全相关,通常建议关闭)
0x33RequirePINforRemoteOperation
远程操作需 PIN
bool远程(App/网络)操作是否必须附带 PIN 码。为 true 时,LockDoor/UnlockDoor 必须在命令中携带有效 PIN
安全提示

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

Aliro NFC 门禁(0x80-0x88)

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

ID名称类型说明
0x80AliroReaderVerificationKey
读卡器验证密钥
octstr用于验证读卡器身份的公钥
0x81AliroReaderGroupIdentifier
读卡器组标识
octstr读卡器所属组的标识符,同组读卡器共享访问权限
0x82AliroReaderGroupSubIdentifier
读卡器子标识
octstr读卡器在组内的唯一子标识
0x83AliroExpeditedTransactionSupportedProtocolVersions
快速交易协议版本
list支持的快速(无需完整握手)交易协议版本列表
0x84AliroGroupResolvingKey
组解析密钥
octstr用于解析和识别 Aliro 组成员身份的密钥
0x85AliroSupportedBLEUWBProtocolVersions
BLE UWB 协议版本
list支持的 BLE 和 UWB 协议版本列表(用于测距定位)
0x86AliroBLEAdvertisingVersion
BLE 广播版本
uint8Aliro 读卡器的 BLE 广播协议版本号
0x87NumberOfAliroCredentialIssuerKeysSupported
凭据发行密钥数
uint16设备支持的 Aliro 凭据发行者密钥数量
0x88NumberOfAliroEndpointKeysSupported
端点密钥数
uint16设备支持的 Aliro 端点密钥数量

标准示例

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

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

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

  // --- 操作与显示 ---
  "0x1E": 30,          // AutoRelockTime = 30 秒
  "0x1F": 2,           // SoundVolume = High
  "0x20": 0,           // OperatingMode = Normal
  "0x21": 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 (0x10) 确认用户容量
  2. 发送 SetUser (0x26) 创建用户
  3. 读取 MinPINCodeLength (0x17)MaxPINCodeLength (0x16) 确认 PIN 长度要求
  4. 发送 SetCredential (0x1A) 为该用户绑定 PIN 码
  5. 可通过 GetCredentialStatus (0x1B) 验证凭据是否设置成功

场景 3:首页展示锁状态

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