I dispositivi nell'ecosistema Google Home possono essere implementati utilizzando Cloud-to-cloud, Matter o entrambi. Alcuni tipi di dispositivi sono più complessi di altri e rappresentano una sfida da sviluppare quando si utilizzano le API Home in modo da consentire un'interfaccia fluida con altri dispositivi nell'ecosistema.
Una delle sfide nell'implementazione di alcuni di questi tipi di dispositivi è che i dispositivi possono essere composti da diverse combinazioni di caratteristiche. Non tutte le combinazioni funzionano bene come altre. Inoltre, il modello dati Cloud-to-cloud viene mappato al modello dati Matter, ma non sempre in modo chiaro e univoco. Consulta Modello dei dati su Android, che descrive i modelli dei dati e le relative mappature in modo più approfondito.
Questa pagina contiene ulteriori informazioni sulla mappatura dei modelli di dati per dispositivi specifici e offre alcune indicazioni sui tratti da utilizzare per implementare questi tipi di dispositivi.
Forno
Il tipo di dispositivo Forno
(OvenDevice
)
e le relative caratteristiche dei componenti non sono così semplici da implementare
rispetto ad altri tipi di dispositivi. Esistono diversi modi per implementare un forno in
Matter, ma non tutti gli approcci garantiscono un'interoperabilità
senza problemi con altri dispositivi o con l'ecosistema Google Home.
Mappatura delle caratteristiche
Anziché implementare un dispositivo Matter forno utilizzando i cluster
Oven Mode e On Off, ti consigliamo di utilizzare il cluster Oven Cavity Operational
State. Questo cluster è rappresentato nelle API Home dal tratto
OvenCavityOperationalState
e corrisponde al tratto Cloud-to-cloud
RunCycle
. Definisce fasi come
"preriscaldamento", "preriscaldato" e "raffreddamento".
API Home | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
Esistono limitazioni al modello di dati del forno Cloud-to-cloud. Il modello di dati del
Cloud-to-cloud forno consente una sola camera,
con un solo RunCycle
. Al contrario, Matter modella un
forno multicamera come endpoint del dispositivo con un cluster di stato operativo della cavità del forno
per ogni camera.
Per alcuni dispositivi di cottura, potrebbe essere opportuno che l'elenco delle fasi cambi in fase di esecuzione. Ad esempio, i forni che supportano il preriscaldamento potrebbero avere voci diverse nell'elenco delle fasi durante la fase di preriscaldamento rispetto alle fasi di riscaldamento o raffreddamento.
Implementazione consigliata
Come discusso nella sezione precedente, un'implementazione di Matter Oven
deve implementare il cluster Oven Cavity Operational State, modellato nelle API per la casa come tratto
OvenCavityOperationalState
.
Per risultati ottimali, assicurati che il tuo dispositivo Cloud-to-cloud Oven implementi il tratto RunCycle
e pubblica lo stato attuale impostando l'attributo currentRunCycle
. Questo attributo è
osservabile dalle API Home tramite gli attributi
OvenCavityOperationalState.phaseList
e
OvenCavityOperationalState.currentPhase
.
Il dispositivo Forno deve anche pubblicare una notifica del ciclo di funzionamento aggiornando
gli attributi priority
, status
e currentCycleRemainingTime
di
RunCycle
. Il seguente esempio genera l'invio di un evento
OperationalState.OperationCompletion
e può essere utilizzato
per indicare che il forno è passato dal ciclo "preriscaldamento" al ciclo
"preriscaldato":
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
Utilizzare un forno in un'automazione
Quando crei un'automazione per un forno implementato utilizzando il cluster
Stato operativo della cavità del forno, fai riferimento all'attributo currentPhase
per
sapere in quale ciclo si trova il forno:
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
}
Per un esempio completo, vedi Lampeggiare le luci e annunciare quando il forno raggiunge la temperatura scelta.