Los dispositivos del ecosistema de Google Home se pueden implementar con Cloud-to-cloud, Matter o ambos. Algunos tipos de dispositivos son más complejos que otros y presentan un desafío para el desarrollo cuando se usan las APIs de Home de una manera que permita una interfaz fluida con otros dispositivos del ecosistema.
Uno de los desafíos para implementar algunos de estos tipos de dispositivos es que pueden estar compuestos por diferentes combinaciones de rasgos. No todas las combinaciones funcionan igual de bien. Además, el modelo de datos de Cloud-to-cloud se asigna al modelo de datos de Matter, pero no siempre de una manera clara y unívoca. Consulta Modelo de datos en iOS, en el que se analizan los modelos de datos y sus asignaciones con más detalle.
Esta página contiene más información sobre cómo se asignan entre sí los modelos de datos para dispositivos específicos y ofrece orientación sobre qué rasgos usar para implementar esos tipos de dispositivos.
Horno
El tipo de dispositivo Horno (OvenDeviceType) y sus características de componentes no son tan fáciles de implementar en comparación con otros tipos de dispositivos. Existen varias formas de implementar un horno en
Matter, pero no todos los enfoques dan como resultado una interoperación
fluida con otros dispositivos o con el ecosistema de Google Home.
Asignación de rasgos
En lugar de implementar un dispositivo de horno Matter con los clústeres de modo de horno y de encendido y apagado, te recomendamos que uses el clúster de estado operativo de la cavidad del horno. Este clúster se representa en las APIs de Home con el rasgo OvenCavityOperationalStateTrait y se asigna al rasgo Cloud-to-cloud
RunCycle. Define fases como
"precalentamiento", "precalentado" y "enfriamiento".
| APIs de Home | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Existen limitaciones en el modelo de datos de Oven de Cloud-to-cloud. El modelo de datos de horno de Cloud-to-cloud solo permite una cámara con un solo RunCycle. En cambio, Matter modela un horno de varias cámaras como un extremo de dispositivo con un clúster de estado operativo de la cavidad del horno para cada cámara.
En el caso de algunos dispositivos de horno, puede ser apropiado que la lista de fases cambie durante el tiempo de ejecución. Por ejemplo, los hornos que admiten el precalentamiento podrían tener diferentes entradas en la lista de fases durante la fase de precalentamiento que durante las fases de calentamiento o enfriamiento.
Implementación recomendada
Como se mencionó en la sección anterior, una implementación de horno Matter debe implementar el clúster de estado operativo de la cavidad del horno, que se modela en las APIs de Home como el atributo OvenCavityOperationalStateTrait.
Para obtener los mejores resultados, asegúrate de que tu dispositivo de horno Cloud-to-cloud implemente el atributo RunCycle y publique el estado actual configurando el atributo currentRunCycle. Las APIs de Home pueden observar este atributo a través de los atributos OvenCavityOperationalStateTrait.phaseList y OvenCavityOperationalStateTrait.currentPhase.
El dispositivo Oven también debe publicar una notificación de dispositivo de ciclo de ejecución actualizando los atributos priority, status y currentCycleRemainingTime de RunCycle. En el siguiente ejemplo, se envía un evento
OperationalStateTrait.OperationCompletion,
que se puede usar para indicar que el horno pasó del ciclo de precalentamiento al ciclo de precalentado:
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Usa un horno en una automatización
Cuando crees una automatización para un horno implementado con el clúster de estado operativo de la cavidad del horno, haz referencia al atributo currentPhase para saber en qué ciclo se encuentra el horno:
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")
}
}
}
Para ver un ejemplo completo, consulta Si la TV está encendida cuando se completa el ciclo del horno, las luces de la sala de estar parpadean y la bocina inteligente anuncia "Ciclo del horno completo".