Os dispositivos no ecossistema do Google Home podem ser implementados usando Cloud-to-cloud, Matter ou ambos. Alguns tipos de dispositivo são mais complexos do que outros e apresentam um desafio para o desenvolvimento ao usar as APIs Home de uma forma que permita uma interface tranquila com outros dispositivos no ecossistema.
Um dos desafios na implementação de alguns desses tipos de dispositivo é que eles podem ser compostos por diferentes combinações de atributos. Nem todas as combinações funcionam tão bem quanto as outras. Além disso, o modelo de dados do Cloud-to-cloud é mapeado para o modelo de dados do Matter, mas nem sempre de maneira clara e direta. Consulte Modelo de dados no iOS, que aborda os modelos de dados e os mapeamentos deles em mais detalhes.
Esta página contém mais informações sobre como os modelos de dados de dispositivos específicos são mapeados entre si e oferece algumas orientações sobre quais atributos usar para implementar esses tipos de dispositivo.
Forno
O tipo de dispositivo Forno
(OvenDeviceType)
e os atributos de componente dele não são tão simples de implementar
em comparação com outros tipos de dispositivo. 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 atributos
Em vez de implementar um dispositivo de forno Matter usando os
clusters de modo de forno e de ativação/desativação, recomendamos usar o cluster de estado operacional
da cavidade do forno. Esse cluster é representado nas APIs Home pela característica
OvenCavityOperationalStateTrait
e é mapeado para a característica Cloud-to-cloud
RunCycle. 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 de forno Cloud-to-cloud só permite uma única câmara, com um único RunCycle. Por outro lado, o Matter modela um
forno com 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 ambiente de execução. Por exemplo, fornos que aceitam pré-aquecimento podem ter entradas diferentes na lista de fases durante o pré-aquecimento em comparação com as fases de aquecimento ou resfriamento.
Implementação recomendada
Como discutido na seção anterior, uma implementação de forno Matter
precisa implementar o cluster de estado operacional da cavidade do forno, que
é modelado nas APIs Home como a característica
OvenCavityOperationalStateTrait.
Para melhores resultados, verifique se o dispositivo Cloud-to-cloud Oven
implementa o atributo RunCycle e publique
o estado atual definindo o atributo currentRunCycle. Esse atributo é
observável pelas APIs Home pelos atributos
OvenCavityOperationalStateTrait.phaseList
e
OvenCavityOperationalStateTrait.currentPhase.
O dispositivo Oven 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 evento OperationalStateTrait.OperationCompletion e pode ser usado para indicar que o forno passou do ciclo de "aquecimento programado" para o ciclo de "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 terminar, as luzes da sala de estar vão piscar e o alto-falante inteligente vai transmitir "Ciclo do forno concluído".