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