简化的 trait

为方便使用,部分 trait 的简化版本可与 Automation API 搭配使用。

简化 trait 可替代标准 Home API trait,类似于 facade 模式的运作方式。简化后的 trait 提供了一些命令,可让您更轻松地在特定类型的设备上执行常见任务。简化 trait 是 Home API trait,与其他 Home API trait 一样,它们适用于 MatterCloud-to-cloud 设备。

简化 trait 提供了一组替代属性和命令,这些属性和命令比相应标准 trait 的属性和命令更依赖于设备。例如,标准 LevelControl trait 是一种通用 trait,适用于具有在一系列数值范围内连续变化的设置的任何设备。Brightness 是一种简化的 trait,可替代 LevelControl,并且仅提供 DimmableLight 设备所需的命令和属性。Brightness 有一个接受单个 brightnessPercent 参数的 moveToBrightness 命令,而 LevelControl 有多个 move 命令,其中大多数命令至少有 4 个参数,以适应更广泛的用例。

下表显示了每个简化 trait 及其底层标准 trait。每个 trait 名称都链接到相应的 API 文档:

表格:简化后的 trait
简化 trait 标准 trait
SimplifiedThermostat Thermostat
Brightness LevelControl
SimplifiedOnOff OnOff
Volume LevelControl
OnOff

简化后的 trait 和 Discovery API

Discovery API 会报告简化特征及其底层标准特征,前提是这两种特征都已在 FactoryRegistry 中注册。例如,如果结构中存在 DimmableLight 设备,并且开发者在 FactoryRegistry 中注册了 LevelControlBrightness 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) }