互通性

Google Home 生態系統中的裝置可使用 Cloud-to-cloudMatter 或兩者實作。某些裝置類型比其他類型更複雜,因此在使用 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.phaseListOvenCavityOperationalState.currentPhase 屬性,由 Google Home API 觀察。

Oven 裝置也應透過更新 RunCycleprioritystatuscurrentCycleRemainingTime 屬性,發布執行週期裝置通知。以下範例會傳送 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
}

如需完整範例,請參閱「當烤箱達到所選溫度時閃爍燈光並發出語音通知」。