Google Home 生态系统中的设备可以使用 Cloud-to-cloud、Matter 或两者来实现。某些设备类型比其他设备类型更复杂,并且在使用 Home API 时会带来开发方面的挑战,因为需要以允许与其他生态系统设备顺利交互的方式使用这些 API。
实现某些此类设备类型时面临的挑战之一是,这些设备可以由不同的特征组合而成。并非所有组合都像其他组合一样有效。此外,Cloud-to-cloud数据 模型会映射到 Matter 数据模型,但并非总是以清晰的一对一方式进行映射。如需更深入地了解数据模型及其映射,请参阅 Android 上的数据模型。
本页详细介绍了特定设备的数据模型如何相互映射,并提供了一些关于使用哪些特征来实现这些设备类型的指南。
烤箱
与
其他设备类型相比,烤箱
(OvenDevice)
设备类型及其组件特征的实现并不简单。在 Matter 中,有多种实现烤箱的方法,但并非所有方法都能与其他设备或 Google Home 生态系统实现无缝互操作。Matter
特征映射
我们建议您使用“烤箱腔体运行
状态”集群,而不是使用“烤箱模式”和“开/关”集群来实现 Matter 烤箱设备。此集群在 Home API 中由
OvenCavityOperationalState
特征表示,并映射到 Cloud-to-cloud
RunCycle 特征。它定义了“预先升温”“已预热”和“冷却”等阶段。
| Home API | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Cloud-to-cloud 烤箱数据模型存在一些限制。
Cloud-to-cloud烤箱数据模型仅允许使用单个腔体,
且只能使用单个RunCycle。相比之下,Matter 将
多腔体烤箱建模为设备端点,每个腔体都有一个“烤箱腔体运行状态”
集群。
对于某些烤箱设备,阶段列表可能需要在运行时更改。例如,支持预热的烤箱在预热阶段的阶段列表中的条目可能与加热或冷却阶段不同。
推荐的实现方式
如上一部分所述,Matter 烤箱
实现应实现“烤箱腔体运行状态”集群,该集群
在 Home API 中建模为
OvenCavityOperationalState
特征。
为获得最佳效果,请确保您的 Cloud-to-cloud 烤箱设备实现 RunCycle trait,并通过设置 currentRunCycle 属性来发布当前状态。Home API 可以通过
OvenCavityOperationalState.phaseList
和
OvenCavityOperationalState.currentPhase
属性观察此属性。
烤箱设备还应通过更新 RunCycle 的 priority、status 和 currentCycleRemainingTime 属性来发布运行周期设备通知。以下示例会导致发送
OperationalState.OperationCompletion事件,可用于指示烤箱已从“预先升温”周期过渡到
“已预热”周期:
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
在自动化操作中使用烤箱
为使用“烤箱腔体运行状态”集群实现的烤箱构建自动化操作时,请引用 currentPhase 属性,以了解烤箱所处的周期:
sequential {
val starterNode =
starter<_>(oven, OvenDevice, OvenCavityOperationalState /* Or OperationalState */)
condition {
expression = starterNode.phaseList[operationalState.currentPhase.toUInt()] equals "pre-heated"
}
action(speaker, SpeakerDevice) {
command(AssistantBroadcast.broadcast("Oven Cycle Complete"))
}
// Additional actions here as needed
}
如需查看完整示例,请参阅当烤箱达到 所选温度时,闪烁灯光并发出通知。