为方便使用,部分 trait 的简化版本可与 Automation API 搭配使用。
简化 trait 可替代标准 Home API trait,类似于 facade 模式的运作方式。简化后的 trait 提供了一些命令,可让您更轻松地在特定类型的设备上执行常见任务。简化 trait 是 Home API trait,与其他 Home API trait 一样,它们适用于 Matter 和 Cloud-to-cloud 设备。
简化 trait 提供了一组替代属性和命令,这些属性和命令比相应标准 trait 的属性和命令更依赖于设备。例如,标准 LevelControl
trait 是一种通用 trait,适用于具有在一系列数值范围内连续变化的设置的任何设备。Brightness
是一种简化的 trait,可替代 LevelControl
,并且仅提供 DimmableLight
设备所需的命令和属性。Brightness
有一个接受单个 brightnessPercent
参数的 moveToBrightness
命令,而 LevelControl
有多个 move
命令,其中大多数命令至少有 4 个参数,以适应更广泛的用例。
下表显示了每个简化 trait 及其底层标准 trait。每个 trait 名称都链接到相应的 API 文档:
简化 trait | 标准 trait |
---|---|
SimplifiedThermostat
|
Thermostat
|
Brightness
|
LevelControl
|
SimplifiedOnOff
|
OnOff
|
Volume
|
LevelControl OnOff
|
简化后的 trait 和 Discovery API
Discovery API 会报告简化特征及其底层标准特征,前提是这两种特征都已在 FactoryRegistry
中注册。例如,如果结构中存在 DimmableLight
设备,并且开发者在 FactoryRegistry
中注册了 LevelControl
和 Brightness
trait,则 Discovery API 会指明这两种 trait 都存在。开发者可以在自动化操作中选择使用任一 trait。
如需了解详情,请参阅 Discovery API。
检索支持简化 trait 的设备
使用 Device API 获取支持简化 trait(例如 SimplifiedThermostat
)的结构中的设备时,您无法使用 has(trait)
方法。请改用 has(deviceType)
方法:
val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }