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