Les appareils de l'écosystème Google Home peuvent être implémentés à l'aide de Cloud-to-cloud, Matter ou des deux. Certains types d'appareils sont plus complexes que d'autres et présentent un défi de développement lorsque vous utilisez les API Home d'une manière qui permet une interface fluide avec d'autres appareils de l'écosystème.
L'un des défis liés à l'implémentation de certains de ces types d'appareils est que les appareils peuvent être composés de différentes combinaisons de caractéristiques. Toutes les combinaisons ne fonctionnent pas aussi bien que d'autres. De plus, le modèle de données Cloud-to-cloud est mappé au modèle de données Matter, mais pas toujours de manière claire et un-à-un. Consultez la section Modèle de données sur Android, qui aborde plus en détail les modèles de données et leurs mappages.
Cette page contient plus d'informations sur la manière dont les modèles de données de certains appareils sont mappés les uns aux autres, et fournit des conseils sur les caractéristiques à utiliser pour implémenter ces types d'appareils.
Four
Le type d'appareil Four
(OvenDevice)
et ses caractéristiques de composant ne sont pas aussi simples à implémenter
que d'autres types d'appareils. Il existe plusieurs façons d'implémenter un four dans
Matter, mais toutes les approches n'entraînent pas une interopérabilité fluide avec d'autres appareils ou avec l'écosystème Google Home.
Mappage des caractéristiques
Plutôt que d'implémenter un Matter appareil de four à l'aide des
clusters Oven Mode et On Off, nous vous recommandons d'utiliser le cluster Oven Cavity Operational
State. Ce cluster est représenté dans les API Home par la
OvenCavityOperationalState
caractéristique et est mappé à la Cloud-to-cloud
RunCycle caractéristique. Il définit des phases telles que "préchauffage", "préchauffé" et "refroidissement".
| API Home | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Le modèle de données pour les fours Cloud-to-cloud présente des limites. Il n'autorise qu'une seule chambre,
avec un seul RunCycle.Cloud-to-cloud En revanche, Matter modélise un
four à plusieurs chambres en tant que point de terminaison d'appareil avec un cluster Oven Cavity Operational State
pour chaque chambre.
Pour certains appareils de four, il peut être approprié que la liste des phases change au moment de l'exécution. Par exemple, les fours qui prennent en charge le préchauffage peuvent avoir des entrées différentes dans la liste des phases pendant la phase de préchauffage que pendant les phases de chauffage ou de refroidissement.
Implémentation recommandée
Comme indiqué dans la section précédente, une Matter implémentation de four
doit implémenter le cluster Oven Cavity Operational State, qui
est modélisé dans les API Home en tant que
OvenCavityOperationalState
caractéristique.
Pour obtenir les meilleurs résultats, assurez-vous que votre appareil de four Cloud-to-cloudimplémente la caractéristique RunCycle et publie l'état actuel en définissant l'attribut currentRunCycle. Cet attribut est
observable par les API Home via les
OvenCavityOperationalState.phaseList
et
OvenCavityOperationalState.currentPhase
attributs.
L'appareil de four doit également publier une notification d'appareil de cycle de cuisson en mettant à jour les attributs priority, status et currentCycleRemainingTime de RunCycle. L'exemple suivant génère l'envoi d'un
OperationalState.OperationCompletion événement et peut être utilisé
pour indiquer que le four est passé du cycle "préchauffage" au cycle
"préchauffé" :
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Utiliser un four dans une automatisation
Lorsque vous créez une automatisation pour un four implémenté à l'aide du cluster Oven Cavity Operational State, référencez l'attribut currentPhase pour savoir dans quel cycle se trouve le four :
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
}
Pour obtenir un exemple complet, consultez Faire clignoter les lumières et annoncer lorsque le four atteint la température choisie.