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 lors de l'utilisation des 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 traits. Certaines combinaisons ne fonctionnent pas aussi bien que d'autres. De plus, le modèle de données Cloud-to-cloud est mappé sur le modèle de données Matter, mais pas toujours de manière claire et un-à-un. Consultez Modèle de données sur Android pour en savoir plus sur les modèles de données et leurs mappages.
Cette page contient plus d'informations sur la façon dont les modèles de données pour des appareils spécifiques sont mappés les uns aux autres. Elle fournit également des conseils sur les traits à 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 les autres types d'appareils. Il existe plusieurs façons d'implémenter un four dans Matter, mais toutes les approches ne permettent pas une interopérabilité fluide avec d'autres appareils ou avec l'écosystème Google Home.
Mappage des traits
Plutôt que d'implémenter un appareil Matter Oven à 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 le trait OvenCavityOperationalState
et correspond au trait RunCycle
de Cloud-to-cloud. 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 Cloud-to-cloud Oven présente des limites. Le modèle de données du four Cloud-to-cloud n'autorise qu'une seule chambre, avec un seul RunCycle
. En revanche, Matter modélise un four multicompartiment en tant que point de terminaison d'appareil avec un cluster Oven Cavity Operational State pour chaque compartiment.
Pour certains appareils Oven, 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 par rapport aux phases de chauffage ou de refroidissement.
Implémentation recommandée
Comme indiqué dans la section précédente, une implémentation Matter Oven doit implémenter le cluster Oven Cavity Operational State, qui est modélisé dans les API Home en tant que trait OvenCavityOperationalState
.
Pour de meilleurs résultats, assurez-vous que votre appareil Cloud-to-cloud implémente le trait RunCycle
et publie l'état actuel en définissant l'attribut currentRunCycle
. Cet attribut est observable par les API Home via les attributs OvenCavityOperationalState.phaseList
et OvenCavityOperationalState.currentPhase
.
Le four doit également publier une notification de cycle de cuisson en mettant à jour les attributs priority
, status
et currentCycleRemainingTime
de RunCycle
. L'exemple suivant entraîne l'envoi d'un événement OperationalState.OperationCompletion
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 connaître le cycle dans lequel 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 quand le four atteint la température choisie.