3. Matter智能家居设备类型与数据模型
在Matter协议中,设备类型(Device Type)并不是一个简单的标签,而是一份“能力契约”。它规定了该设备必须实现哪些集群(Cluster)、每个集群必须包含哪些属性(Attribute)、命令(Command)和事件(Event),以及这些元素之间的约束关系。理解设备类型与数据模型,是开发Matter智能家居产品的基础。本节将围绕On/Off Light、Dimmable Light、Thermostat和Door Lock四类典型设备,说明它们的定义方式、集群组成和属性语义。
设备类型、集群与属性的层级关系
Matter数据模型采用树状结构:最上层是节点(Node),一个节点代表一个可独立寻址的物理或逻辑设备;节点下挂载一个或多个端点(Endpoint),端点才是设备类型的载体;每个端点包含若干集群,集群再包含属性、命令和事件。例如,一个同时支持开关和调光的灯具,可以在端点1上实现On/Off Light设备类型,在端点2上实现Dimmable Light设备类型,或者在同一端点上同时实现两者。
设备类型由Matter规范中的Device Type Library定义,每个设备类型有唯一的Device Type ID。On/Off Light的ID为0x0100,Dimmable Light为0x0101,Thermostat为0x0301,Door Lock为0x000A。这些ID在设备描述(Device Descriptor)集群的DeviceTypeList属性中声明,控制器读取后即可知道该端点具备哪些能力。
On/Off Light与Dimmable Light
On/Off Light是最基础的照明设备类型,其核心是On/Off集群(Cluster ID 0x0006)。该集群必须包含OnOff属性(布尔型),表示灯当前的开或关状态。控制器通过发送On、Off、Toggle命令改变状态,设备端执行后更新OnOff属性,并通过报告机制通知订阅者。On/Off集群还包含OnTime和OffWaitTime属性,用于实现“开启后延时自动关闭”或“关闭后延时自动开启”的定时行为,单位为十分之一秒。
Dimmable Light在On/Off Light基础上增加了Level Control集群(Cluster ID 0x0008)。该集群的核心属性是CurrentLevel,取值范围0~254,其中0表示最暗(通常对应关闭或最低亮度),254表示最亮。控制器通过MoveToLevel、Step、Move等命令调节亮度。MoveToLevel命令携带Level、TransitionTime和OptionsMask等字段,TransitionTime以十分之一秒为单位,实现平滑渐变。设备端需要维护MinLevel和MaxLevel属性,限制实际可调范围,避免因过低占空比导致LED闪烁。
在Silicon Labs的Matter SDK中,这两类设备通常基于Zigbee/Thread SoC实现。开发者需要在ZCL(Zigbee Cluster Library)配置中启用对应集群,并在应用层实现属性回调。例如,当收到MoveToLevel命令时,应用层计算目标PWM占空比,驱动LED,然后更新CurrentLevel属性并触发报告。
Thermostat
Thermostat设备类型(0x0301)用于暖通空调控制,其数据模型比照明复杂得多。它必须实现Thermostat集群(0x0201),该集群包含数十个属性,核心包括:LocalTemperature(本地温度,单位0.01°C)、OccupiedCoolingSetpoint和OccupiedHeatingSetpoint(制冷/制热设定点)、SystemMode(系统模式,如Off、Auto、Cool、Heat)、ThermostatRunningMode(当前运行模式)等。此外,Thermostat设备通常还需要Fan Control集群(0x0202)和Temperature Measurement集群(0x0402)。
SystemMode属性是控制逻辑的关键。当SystemMode设为Auto时,设备根据LocalTemperature与两个设定点的关系自动切换制冷或制热。例如,OccupiedCoolingSetpoint设为2400(24.00°C),OccupiedHeatingSetpoint设为2000(20.00°C),当温度高于24°C时启动制冷,低于20°C时启动制热,中间区域保持待机。SetpointRaiseLower命令允许控制器一次性调整两个设定点,携带Mode和Amount字段,Amount以0.1°C为单位。
开发Thermostat时,需要注意属性报告的频率控制。LocalTemperature变化频繁,若每次变化都上报会消耗大量网络带宽。通常采用“变化阈值+最小间隔”策略,例如温度变化超过0.5°C且距上次报告超过30秒才上报。
Door Lock
Door Lock设备类型(0x000A)的核心是Door Lock集群(0x0101)。该集群的LockState属性是只读枚举,取值包括NotFullyLocked(0)、Locked(1)、Unlocked(2)和Undefined(3)。LockType属性表示锁的类型,如DeadBolt(0)、Magnetic(1)、Other(2)等。控制器通过LockDoor和UnlockDoor命令控制锁具,命令中可携带PIN码或RFID凭证。
Door Lock集群还包含LockDoor和UnlockDoor命令的响应机制。设备执行后需更新LockState属性,并通过Report发送给订阅者。对于电池供电的锁,还需要实现Power Source集群(0x002F)和Battery Percentage Remaining属性,以便用户及时更换电池。此外,Door Lock通常需要与Access Control集群(0x001F)配合,管理用户凭证和访问权限。
设备类型与集群的对应关系
| 设备类型 | Device Type ID | 必须实现的Server集群 | 关键属性 |
|---|---|---|---|
| On/Off Light | 0x0100 | On/Off (0x0006)、Descriptor (0x001D) | OnOff |
| Dimmable Light | 0x0101 | On/Off (0x0006)、Level Control (0x0008)、Descriptor | OnOff、CurrentLevel、MinLevel、MaxLevel |
| Thermostat | 0x0301 | Thermostat (0x0201)、Fan Control (0x0202)、Temperature Measurement (0x0402)、Descriptor | LocalTemperature、SystemMode、OccupiedCoolingSetpoint、OccupiedHeatingSetpoint |
| Door Lock | 0x000A | Door Lock (0x0101)、Power Source (0x002F)、Descriptor | LockState、LockType、BatteryPercentageRemaining |
总结来说,Matter设备类型是一份标准化的能力清单。On/Off Light和Dimmable Light聚焦照明控制,Thermostat管理温度调节,Door Lock负责门禁安全。开发者需要准确理解每个设备类型的集群组成和属性语义,才能设计出符合规范、互操作性良好的智能家居产品。