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 permite 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 atributos. No todas las combinaciones funcionan tan bien como otras. Además, el Cloud-to-cloud modelo de datos se asigna al modelo de datos Matter, pero no siempre de forma clara y uno a uno. Consulta Modelo de datos en iOS, en el que se analizan los modelos de datos y sus asignaciones con más detalle.
En esta página, se incluye más información sobre los modelos de datos para dispositivos específicos que se asignan entre sí y se ofrecen algunas instrucciones sobre qué atributos usar para implementar esos tipos de dispositivos.
Horno
El tipo de dispositivo Horno
(OvenDeviceType)
y sus atributos de componentes no son tan fáciles de implementar
en comparación con otros tipos de dispositivos. Hay 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 atributos
En lugar de implementar un dispositivo de horno Matter con los clústeres
Oven Mode y On Off, te recomendamos que uses el clúster Oven Cavity Operational
State. Este clúster se representa en las APIs de Home con el
OvenCavityOperationalStateTrait
atributo y se asigna al Cloud-to-cloud
RunCycle atributo. Define fases como "precalentamiento", "precalentado" y "enfriamiento".
| APIs de Home | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Existen limitaciones en el modelo de datos de horno de Cloud-to-cloud. El modelo de datos de horno
Cloud-to-cloud solo permite una sola cámara,
con un solo RunCycle. Por el contrario, Matter modela un
horno de varias cámaras como un extremo de dispositivo con un clúster Oven Cavity Operational State
para cada cámara.
Para algunos dispositivos de horno, puede ser apropiado que la lista de fases cambie en 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 explicó en la sección anterior, una implementación de horno Matter Oven
debe implementar el clúster Oven Cavity Operational State, que
se modela en las APIs de Home como el
OvenCavityOperationalStateTrait
atributo.
Para obtener 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
OvenCavityOperationalStateTrait.phaseList
y
OvenCavityOperationalStateTrait.currentPhase
atributos.
El dispositivo de horno 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
OperationalStateTrait.OperationCompletion
evento y se puede usar para indicar que el horno pasó
del ciclo "precalentamiento" al ciclo "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 Oven Cavity Operational State, haz referencia al atributo currentPhase para saber en qué ciclo está 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 obtener un ejemplo completo, consulta Si la TV está encendida cuando se completa el ciclo del horno, las luces de la sala parpadean y la bocina inteligente transmite "Ciclo del horno completado".