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 presentano una sfida di sviluppo 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 allo stesso modo. Inoltre, il modello di dati Cloud-to-cloud esegue il mapping al modello di dati Matter, ma non sempre in modo chiaro e uno a uno. Consulta Modello di dati su iOS, che descrive i modelli di dati e i relativi mapping in modo più approfondito.
Questa pagina contiene ulteriori informazioni sul mapping dei modelli di dati per dispositivi specifici e offre alcune indicazioni sulle caratteristiche da utilizzare per implementare questi tipi di dispositivi.
Forno
Il tipo di dispositivo Forno
(OvenDeviceType)
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 comportano un'interoperabilità perfetta con altri dispositivi o con l'ecosistema Google Home.
Mapping delle caratteristiche
Anziché implementare un Matter dispositivo forno utilizzando i
cluster Modalità forno e Acceso/Spento, ti consigliamo di utilizzare il cluster Stato operativo della cavità del forno. Questo cluster è rappresentato nelle API Home dalla
OvenCavityOperationalStateTrait
caratteristica ed esegue il mapping alla Cloud-to-cloud
RunCycle caratteristica. 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 forno
Cloud-to-cloud consente solo una singola camera,
con un singolo RunCycle. Al contrario, Matter modella un
forno multicamera come endpoint del dispositivo con un cluster Stato operativo della cavità del forno
per ogni camera.
Per alcuni dispositivi forno, potrebbe essere appropriato che l'elenco delle fasi cambi in fase di runtime. 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 del forno Matter deve implementare il cluster Stato operativo della cavità del forno, che è modellato nelle API Home come la caratteristica OvenCavityOperationalStateTrait.
Per risultati ottimali, assicurati che il tuo dispositivo forno Cloud-to-cloud implementi la trait RunCycle e pubblichi lo stato attuale impostando l'attributo currentRunCycle. Questo attributo è
osservabile dalle API Home tramite gli attributi
OvenCavityOperationalStateTrait.phaseList
e
OvenCavityOperationalStateTrait.currentPhase.
Il dispositivo forno deve anche pubblicare una notifica del dispositivo del ciclo di esecuzione aggiornando gli attributi priority, status e currentCycleRemainingTime di RunCycle. L'esempio seguente genera l'invio di un
OperationalStateTrait.OperationCompletion
evento 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 {
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")
}
}
}
Per un esempio completo, consulta Se la TV è accesa al termine del ciclo del forno, le luci del salotto lampeggiano e lo speaker smart trasmette "Ciclo del forno completato".