Google Home エコシステムのデバイスは、 Cloud-to-cloud、Matter、またはその両方を使用して実装できます。一部のデバイスタイプは他のデバイスタイプよりも複雑で、Google Home の API を使用してエコシステム内の他のデバイスとのスムーズなインターフェースを可能にする方法で開発するのは困難です。
これらのデバイスタイプの一部を実装する際の課題の 1 つは、デバイスがさまざまな特性の組み合わせで構成される可能性があることです。すべての組み合わせが他の組み合わせと同じように機能するわけではありません。また、Cloud-to-cloud データ モデルは Matter データモデルにマッピングされますが、常に明確な 1 対 1 のマッピングになるわけではありません。データモデルとそのマッピングの詳細については、iOS の データモデルをご覧ください。
このページでは、特定のデバイスのデータモデルが相互にどのようにマッピングされるかについて詳しく説明し、これらのデバイスタイプを実装するために使用する特性についてガイダンスを提供します。
オーブン
オーブン
(OvenDeviceType)
デバイスタイプとそのコンポーネント特性は、他のデバイスタイプと比較して実装が簡単ではありません
。Matter でオーブンを実装する方法は複数ありますが、すべてのアプローチで他のデバイスや Google Home エコシステムとのシームレスな相互運用が実現するわけではありません。Matter
特性のマッピング
オーブンモード クラスタとオン / オフ クラスタを使用して Matter オーブン デバイスを実装するのではなく、オーブン キャビティ動作状態
クラスタを使用することをおすすめします。このクラスタは、Google Home の API では
OvenCavityOperationalStateTrait
特性で表され、Cloud-to-cloud
RunCycle特性にマッピングされます。「事前暖房」、「予熱完了」、「冷却」などのフェーズを定義します。
| Google Home の API | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Cloud-to-cloud オーブン データモデルには制限があります。
Cloud-to-cloud オーブン データモデルでは、1 つのチャンバーと
1 つの RunCycle のみを使用できます。一方、Matter では、マルチチャンバー オーブンは、各チャンバーにオーブン キャビティ動作状態
クラスタがあるデバイス エンドポイントとしてモデル化されます。
一部のオーブン デバイスでは、フェーズリストが実行時に変更されることが適切です。たとえば、予熱をサポートするオーブンでは、予熱フェーズと加熱フェーズまたは冷却フェーズで、フェーズリストのエントリが異なる場合があります。
おすすめの実装方法
前のセクションで説明したように、Matter オーブン
の実装では、オーブン キャビティ動作状態クラスタを実装する必要があります。このクラスタは
、Google Home の API では
OvenCavityOperationalStateTrait
特性としてモデル化されます。
最良の結果を得るには、Cloud-to-cloud オーブン デバイスが RunCycle 特性を実装し、currentRunCycle 属性を設定して現在の状態を公開していることを確認してください。この属性は、Google 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")
}
}
}
完全な例については、 オーブン サイクルが完了したときにテレビがオンになっている場合、リビングルームの照明が点滅し、スマート スピーカーが「オーブン サイクルが完了しました」とブロードキャストするをご覧ください。