Google Home 生態系統中的裝置可使用 Cloud-to-cloud、Matter 或兩者實作。某些裝置類型比其他類型更複雜,因此在使用 Home API 時,如果要讓裝置與生態系統中的其他裝置順利連接,就會遇到開發上的挑戰。
實作部分裝置類型時,其中一個挑戰是裝置可由不同特徵組合組成。並非所有組合都會產生相同的效果。此外,Cloud-to-cloud 資料模型會對應至 Matter 資料模型,但不一定是明確的一對一方式。請參閱「資料模型」,進一步瞭解資料模型及其對應項目。
本頁面提供更多資訊,說明特定裝置的資料模型如何對應,並提供一些指引,說明如何使用特徵來實作這些裝置類型。
烤箱
與其他裝置類型相比,Oven (OvenDevice
) 裝置類型及其元件特徵的實作方式較為複雜。在 Matter 中實作烤箱的方法有很多種,但並非所有方法都能與其他裝置或 Google Home 生態系統無縫整合。
特徵對應
建議您使用「Oven Cavity Operational State」叢集,而非使用「Oven Mode」和「On Off」叢集,來實作 Matter 烤箱裝置。這個叢集會在 Google Home API 中以 OvenCavityOperationalState
特徵表示,並對應至 Cloud-to-cloud
RunCycle
特徵。它定義了「預熱」、「預熱」和「冷卻」等階段。
Home API | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
Cloud-to-cloud Oven 資料模型有其限制。Cloud-to-cloud 烤箱資料模型只允許單一腔室,且只有一個 RunCycle
。相反地,Matter 會將多腔烤箱模擬為裝置端點,並為每個腔體提供烤箱腔體運作狀態叢集。
對於某些 Oven 裝置,在執行階段變更階段清單可能會比較適當。舉例來說,支援預熱的烤箱在預熱階段和加熱或冷卻階段的階段清單中,可能會有不同的項目。
建議實作方式
如前面一節所述,Matter 烤箱實作項目應實作烤箱腔體運作狀態叢集,這個叢集在 Google Home API 中以 OvenCavityOperationalState
特徵模擬。
為獲得最佳結果,請確認您的 Cloud-to-cloud 烤箱裝置實作 RunCycle
特徵,並透過設定 currentRunCycle
屬性來發布目前狀態。這個屬性可透過 OvenCavityOperationalState.phaseList
和 OvenCavityOperationalState.currentPhase
屬性,由 Google Home API 觀察。
Oven 裝置也應透過更新 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
}
如需完整範例,請參閱「當烤箱達到所選溫度時閃爍燈光並發出語音通知」。