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