I dispositivi dell'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 per lo sviluppo quando si utilizzano le API Home in modo da consentire un'interfaccia fluida con altri dispositivi nell'ecosistema.
Uno dei problemi nell'implementare alcuni di questi tipi di dispositivi è che possono essere composti da diverse combinazioni di caratteristiche. Non tutte le combinazioni funzionano allo stesso modo. Inoltre, il modello di dati Cloud-to-cloud viene mappato al modello di dati Matter, ma non sempre in modo chiaro e uno a uno. Consulta la sezione Modello di dati, che illustra in modo più approfondito i modelli di dati e le relative mappature.
Questa pagina contiene ulteriori informazioni sui modelli di dati per dispositivi specifici che si mappano tra loro e offre alcune indicazioni su quali tratti utilizzare per implementare questi tipi di dispositivi.
Forno
Il tipo di dispositivo Forno
(OvenDevice
)
e i relativi tratti dei componenti non sono facili da implementare
rispetto ad altri tipi di dispositivi. Esistono diversi modi per implementare un forno in
Matter, ma non tutti gli approcci consentono un'interoperabilità senza problemi con altri dispositivi o con l'ecosistema Google Home.
Mappatura dei tratti
Anziché implementare un dispositivo forno Matter utilizzando i cluster Modalità forno e On/Off, ti consigliamo di utilizzare il cluster Stato di funzionamento della cavità del forno. 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 per la casa | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
Il modello di dati di Cloud-to-cloud Oven presenta delle limitazioni. Il
Cloud-to-cloud modello di dati del forno consente solo una camera,
con un singolo RunCycle
. Al contrario, Matter modella un forno con più camere come endpoint del dispositivo con un cluster dello stato di funzionamento della cavità del forno per ogni camera.
Per alcuni dispositivi Oven, potrebbe essere opportuno modificare l'elenco delle fasi 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 di raffreddamento.
Implementazione consigliata
Come discusso nella sezione precedente, un'implementazione di Matter Forno deve implementare il cluster dello stato operativo della cavità del forno, che è modellato nelle API Home come tratto OvenCavityOperationalState
.
Per risultati ottimali, assicurati che il tuo dispositivo forno Cloud-to-cloud implementi la funzionalità RunCycle
e pubblichi lo stato corrente impostando l'attributo currentRunCycle
. Questo attributo è osservabile dalle API Home tramite gli attributi OvenCavityOperationalState.phaseList
e OvenCavityOperationalState.currentPhase
.
Il forno deve anche pubblicare una notifica del ciclo di funzionamento aggiornando gli attributi priority
, status
e currentCycleRemainingTime
di RunCycle
. L'esempio seguente comporta l'invio di un evento OperationalState.OperationCompletion
e può essere utilizzato per indicare che il forno è passato dal ciclo di "preriscaldamento" al ciclo di "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 di funzionamento 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, consulta Far lampeggiare le spie e annunciare quando il forno raggiunge la temperatura scelta.