Interoperabilità su iOS

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 tratti. 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 univoco. Consulta Modello di dati su iOS, che illustra in modo più approfondito i modelli di dati e le relative mappature.

Questa pagina contiene ulteriori informazioni sulla mappatura dei modelli di dati per dispositivi specifici e offre alcune indicazioni su quali tratti utilizzare per implementare questi tipi di dispositivi.

Forno

Il tipo di dispositivo Forno (OvenDeviceType) e i relativi tratti 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 consentono un'interoperabilità perfetta con altri dispositivi o con l'ecosistema Google Home.

Mappatura dei tratti

Anziché implementare un dispositivo Forno Matter 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 OvenCavityOperationalStateTrait e viene mappato 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 Forno Cloud-to-cloud. Il modello di dati del forno Cloud-to-cloud consente una sola camera, con un solo RunCycle. Al contrario, Matter modella un forno multicamera come endpoint del dispositivo con un cluster Oven Cavity Operational State per ogni camera.

Per alcuni dispositivi Forno, potrebbe essere opportuno 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.

Come discusso nella sezione precedente, un'implementazione di Matter Oven deve implementare il cluster Oven Cavity Operational State, che viene modellato nelle API Home come tratto OvenCavityOperationalStateTrait.

Per risultati ottimali, assicurati che il tuo dispositivo Cloud-to-cloud Forno implementi il tratto RunCycle e pubblica 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 relativa al ciclo di funzionamento aggiornando gli attributi priority, status e currentCycleRemainingTime di RunCycle. L'esempio seguente genera l'invio di un evento OperationalStateTrait.OperationCompletion e può essere utilizzato per indicare che il forno è passato dal ciclo di "preriscaldamento" a quello di "preriscaldato":

{
  "currentRunCycle": [
    {
      "currentCycle": "pre-heating",
      "nextCycle": "pre-heated",
      "lang": "en"
    }
  ],
  "currentTotalRemainingTime": 1200,
  "currentCycleRemainingTime": 300
}

Utilizza un forno in un'automazione

Quando crei un'automazione per un forno implementato utilizzando il cluster Oven Cavity Operational State, 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 quando il ciclo del forno è completato, le luci del salotto lampeggiano e lo smart speaker trasmette "Ciclo del forno completato".