Google Home 生態系統中的裝置可使用 Cloud-to-cloud、Matter 或兩者實作。部分裝置類型比其他裝置複雜,使用 Home API 時,若要與生態系統中的其他裝置順暢介接,開發過程會面臨挑戰。
導入部分裝置類型時,其中一項挑戰是裝置可能由不同特徵組合而成。並非所有組合都能達到最佳效果。此外,Cloud-to-cloud 資料模型會對應至 Matter 資料模型,但並非一對一的明確對應。請參閱「Android 上的資料模型」,進一步瞭解資料模型及其對應關係。
本頁提供更多資訊,說明特定裝置的資料模型如何相互對應,並提供一些指引,說明要使用哪些特徵來實作這些裝置類型。
烤箱
與其他裝置類型相比,Oven (OvenDevice
) 裝置類型及其元件特徵的實作方式較為複雜。實作 Oven 的方式有很多種,但並非所有方法都能與其他裝置或 Google Home 生態系統順暢互通。Matter
特徵對應
建議您使用 Oven Cavity Operational State 叢集,而非透過 Oven Mode 和 On Off 叢集實作 Matter Oven 裝置。這個叢集在 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 Oven 實作項目應實作 Oven Cavity Operational State 叢集,該叢集在 Home API 中會以 OvenCavityOperationalState
特徵建模。
為獲得最佳結果,請確保Cloud-to-cloud烤箱裝置實作 RunCycle
特徵,並設定 currentRunCycle
屬性來發布目前狀態。這項屬性可透過 OvenCavityOperationalState.phaseList
和 OvenCavityOperationalState.currentPhase
屬性,由 Home API 觀察。
Oven 裝置也應發布執行週期裝置通知,方法是更新 RunCycle
的 priority
、status
和 currentCycleRemainingTime
屬性。以下範例會導致系統傳送 OperationalState.OperationCompletion
事件,並可用於指出烤箱已從「預熱」週期轉換為「預熱完成」週期:
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
在自動化動作中使用烤箱
為使用 Oven Cavity Operational State 叢集實作的烤箱建立自動化程序時,請參照 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
}
如需完整範例,請參閱「在烤箱達到所選溫度時閃爍燈光並發出通知」。