为了便于使用,我们提供了部分特征的简化版本,以便在 Android 上与 Automation API 搭配使用。
简化特征可替代标准 Home API 特征,类似于如何 外观模式 工作。简化特征提供的命令可让某些设备类型更轻松地执行常见任务。简化特征是 Home API 特征,与其他 Home API 特征一样,它们适用于 Matter 和 Cloud-to-cloud 设备。
简化特征提供了一组替代属性和命令,这些属性和命令比相应标准特征的属性和命令更具设备专用性。
例如,标准
LevelControl
特征是一种通用特征,可用于任何具有可在一定数值范围内连续变化的
设置的设备。
Brightness 是一种
简化特征,可替代 LevelControl,并且仅提供
DimmableLight
设备所需的命令和属性。Brightness 具有一个
moveToBrightness 命令,该命令接受单个
brightnessPercent 实参,而 LevelControl 具有多个 move
命令,其中大多数命令至少有四个形参,以适应
更广泛的用例。
下表显示了每个简化特征及其底层标准特征。每个特征名称都链接到相应的 API 文档:
| 简化特征 | 标准特征 |
|---|---|
SimplifiedThermostat
|
Thermostat
|
Brightness
|
LevelControl
|
SimplifiedOnOff
|
OnOff
|
Volume
|
LevelControlOnOff
|
简化特征和 Discovery API
Discovery API 会报告简化特征及其底层
标准特征,前提是这两个特征都在
FactoryRegistry中注册。例如,如果结构中存在 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) }