Geräte im Google Home-Ökosystem können mit Cloud-to-cloud, Matter, oder beidem implementiert werden. Einige Gerätetypen sind komplexer als andere und stellen eine Herausforderung bei der Entwicklung mit den Home APIs dar, wenn eine reibungslose Interaktion mit anderen Geräten im Ökosystem ermöglicht werden soll.
Eine der Herausforderungen bei der Implementierung einiger dieser Gerätetypen besteht darin, dass die Geräte aus verschiedenen Kombinationen von Merkmalen bestehen können. Nicht alle Kombinationen funktionieren gleich gut. Außerdem wird das Cloud-to-cloud Daten modell dem Matter Datenmodell zugeordnet, aber nicht immer auf klare Weise. Weitere Informationen zu den Datenmodellen und ihren Zuordnungen finden Sie unter Datenmodell auf iOS.
Auf dieser Seite finden Sie weitere Informationen dazu, wie die Datenmodelle für bestimmte Geräte einander zugeordnet werden, und einige Hinweise dazu, welche Merkmale verwendet werden sollten, um diese Gerätetypen zu implementieren.
Herd
Der Gerätetyp „Herd“
(OvenDeviceType)
und seine Komponentenmerkmale sind im Vergleich zu anderen Gerätetypen nicht so einfach zu implementieren. Es gibt mehrere Möglichkeiten, einen Herd in
Matter zu implementieren, aber nicht alle Ansätze führen zu einer nahtlosen
Interaktion mit anderen Geräten oder mit dem Google Home-Ökosystem.
Zuordnung von Merkmalen
Anstatt ein Matter Herdgerät mit den
Clustern „Oven Mode“ und „On Off“ zu implementieren, empfehlen wir die Verwendung des Clusters „Oven Cavity Operational
State“. Dieser Cluster wird in den Home APIs durch das
OvenCavityOperationalStateTrait
Merkmal dargestellt und dem Cloud-to-cloud
RunCycle Merkmal zugeordnet. Er definiert Phasen wie „Vorheizen“, „Vorheizphase abgeschlossen“ und „Abkühlen“.
| Home APIs | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Das Datenmodell für Cloud-to-cloud Herde hat Einschränkungen. Das
Cloud-to-cloud Ofen-Datenmodell lässt nur eine einzelne Kammer zu,
mit einem einzigen RunCycle. Im Gegensatz dazu modelliert Matter einen
Herd mit mehreren Kammern als Geräteendpunkt mit einem Cluster „Oven Cavity Operational State“
für jede Kammer.
Bei einigen Herden kann es sinnvoll sein, dass sich die Phasenliste zur Laufzeit ändert. Bei Herden, die das Vorheizen unterstützen, können beispielsweise während der Vorheizphase andere Einträge in der Phasenliste vorhanden sein als während der Heiz- oder Abkühlphase.
Empfohlene Implementierung
Wie im vorherigen Abschnitt beschrieben, sollte eine Matter Herd
Implementierung den Cluster „Oven Cavity Operational State“ implementieren, der
in den Home APIs als
OvenCavityOperationalStateTrait
Merkmal modelliert wird.
Um optimale Ergebnisse zu erzielen, muss Ihr Cloud-to-cloud Herdgerät das RunCycle Trait implementieren und den aktuellen Zustand veröffentlichen, indem Sie das currentRunCycle Attribut festlegen. Dieses Attribut kann
von den Home APIs über die
OvenCavityOperationalStateTrait.phaseList
und
OvenCavityOperationalStateTrait.currentPhase
Attribute beobachtet werden.
Das Herdgerät sollte außerdem eine Benachrichtigung zum Laufzyklus veröffentlichen, indem die Attribute priority, status und currentCycleRemainingTime von RunCycle aktualisiert werden. Das folgende Beispiel führt dazu, dass ein
OperationalStateTrait.OperationCompletion
Ereignis gesendet wird. Es kann verwendet werden, um anzugeben, dass der Herd
von der Vorheizphase zur Phase „Vorheizphase abgeschlossen“ übergegangen ist:
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Herd in einer Automatisierung verwenden
Wenn Sie eine Automatisierung für einen Herd erstellen, der mit dem Cluster „Oven Cavity Operational State“ implementiert wurde, verweisen Sie auf das Attribut currentPhase, um zu ermitteln, in welchem Zyklus sich der Herd befindet:
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")
}
}
}
Ein vollständiges Beispiel finden Sie unter Wenn der Fernseher eingeschaltet ist, wenn der Herdzyklus abgeschlossen ist, blinkt das Licht im Wohnzimmer und der Smart Speaker gibt „Oven Cycle Complete“ aus.