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 des difficultés de développement lorsque vous utilisez les API Home de manière à permettre une interface fluide avec les autres appareils de l'écosystème.
L'un des défis de l'implémentation de certains de ces types d'appareils est qu'ils 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é sur le modèle de données Matter, mais pas toujours de manière claire et individuelle. Consultez la section Modèle de données, qui décrit plus en détail les modèles de données et leurs mappages.
Cette page contient plus d'informations sur les modèles de données de certains appareils et sur la façon dont ils se correspondent. 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 de four Matter à l'aide des clusters "Mode du four" et "Marche/Arrêt", nous vous recommandons d'utiliser le cluster "État de fonctionnement de la cavité du four". Ce cluster est représenté dans les API Home par le trait OvenCavityOperationalState
et correspond au trait Cloud-to-cloud
RunCycle
. 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 à plusieurs chambres en tant que point de terminaison d'appareil avec un cluster d'état de fonctionnement de la cavité du four 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 compatibles avec 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 implémentation de four Matter doit implémenter le cluster "État de fonctionnement de la cavité du four", 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 Four implémente la caractéristique RunCycle
et publiez 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
.
L'appareil Four doit également publier une notification d'appareil de cycle d'exécution 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 de préchauffage au cycle de préchauffage:
{
"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 "État de fonctionnement de la cavité du four", 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 lorsque le four atteint la température choisie.