Os dispositivos no ecossistema do Google Home podem ser implementados usando Cloud-to-cloud, Matter, ou ambas. Alguns tipos de dispositivos são mais complexos do que outros e apresentam um desafio para o desenvolvimento ao usar as APIs do Google Home de uma maneira que permita uma interface suave com outros dispositivos no ecossistema.
Um dos desafios na implementação de alguns desses tipos de dispositivos é que eles podem ser compostos por diferentes combinações de características. Nem todas as combinações funcionam tão bem quanto outras. Além disso, o Cloud-to-cloud modelo de dados é mapeado para o Matter modelo de dados, mas nem sempre de maneira clara e um para um. Consulte Modelo de dados no iOS, que discute os modelos de dados e os mapeamentos deles com mais detalhes.
Esta página contém mais informações sobre os modelos de dados para dispositivos específicos e oferece algumas orientações sobre quais características usar para implementar esses tipos de dispositivos.
Forno
O tipo de dispositivo do forno
(OvenDeviceType)
e as características do componente não são tão simples de implementar
em comparação com outros tipos de dispositivos. Há várias maneiras de implementar um forno em
Matter, mas nem todas as abordagens resultam em uma interoperabilidade perfeita com outros dispositivos ou com o ecossistema do Google Home.
Mapeamento de características
Em vez de implementar um dispositivo de forno Matter usando os clusters de modo de forno e de ativação/desativação, recomendamos o uso do cluster de estado operacional da cavidade do forno. Esse cluster é representado nas APIs do Google Home pela
OvenCavityOperationalStateTrait
característica e é mapeado para a Cloud-to-cloud
RunCycle característica. Ele define fases como "aquecimento programado", "pré-aquecido" e "resfriamento".
| APIs do Google Home | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Há limitações no modelo de dados do forno Cloud-to-cloud. O modelo de dados do forno
Cloud-to-cloud permite apenas uma câmara,
com um único RunCycle. Em contraste, Matter modela um
forno de várias câmaras como um endpoint de dispositivo com um cluster de estado operacional da cavidade do forno
para cada câmara.
Para alguns dispositivos de forno, pode ser apropriado que a lista de fases mude no momento da execução. Por exemplo, os fornos que oferecem suporte ao pré-aquecimento podem ter entradas diferentes na lista de fases durante a fase de pré-aquecimento do que durante as fases de aquecimento ou resfriamento.
Implementação recomendada
Conforme discutido na seção anterior, uma Matter implementação de forno
precisa implementar o cluster de estado operacional da cavidade do forno, que
é modelado nas APIs do Google Home como a
OvenCavityOperationalStateTrait
característica.
Para melhores resultados, verifique se o dispositivo de forno Cloud-to-cloud implementa a trait RunCycle e publique o estado atual definindo o atributo currentRunCycle. Esse atributo pode ser
observado pelas APIs do Google Home pelos
OvenCavityOperationalStateTrait.phaseList
e
OvenCavityOperationalStateTrait.currentPhase
atributos.
O dispositivo de forno também precisa publicar uma notificação de ciclo de execução atualizando os atributos priority, status e currentCycleRemainingTime de RunCycle. O exemplo a seguir resulta no envio de um
OperationalStateTrait.OperationCompletion
evento e pode ser usado para indicar que o forno fez a transição
do ciclo de 'aquecimento programado' para o ciclo 'pré-aquecido':
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Usar um forno em uma automação
Ao criar uma automação para um forno implementado usando o cluster de estado operacional da cavidade do forno, consulte o atributo currentPhase para saber em qual ciclo o forno está:
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 um exemplo completo, consulte Se a TV estiver ligada quando o ciclo do forno for concluído, as luzes da sala de estar vão piscar e o alto-falante inteligente vai transmitir "Ciclo do forno concluído".