Совместимость на iOS

Устройства в экосистеме Google Home могут быть интегрированы с использованием Cloud-to-cloud , Matter или обоих вариантов. Некоторые типы устройств сложнее других и представляют собой проблему при разработке с использованием API Home таким образом, чтобы обеспечить бесперебойное взаимодействие с другими устройствами в экосистеме.

Одна из сложностей при реализации некоторых из этих типов устройств заключается в том, что устройства могут состоять из различных комбинаций характеристик. Не все комбинации работают одинаково хорошо. Кроме того, модель данных Cloud-to-cloud соответствует модели данных Matter , но не всегда в однозначном соответствии. См. раздел «Модель данных на iOS» , где модели данных и их сопоставления рассматриваются более подробно.

На этой странице представлена ​​дополнительная информация о сопоставлении моделей данных для конкретных устройств, а также даны рекомендации по выбору характеристик для реализации этих типов устройств.

Печь

Тип устройства «Печь» ( OvenDeviceType ) и его характеристики компонентов не так просты в реализации по сравнению с другими типами устройств. Существует несколько способов реализовать «Печь» в Matter , но не все подходы обеспечивают бесперебойную работу с другими устройствами или с экосистемой Google Home.

сопоставление признаков

Вместо реализации устройства Matter Oven с использованием кластеров Oven Mode и On Off, мы рекомендуем использовать кластер Oven Cavity Operational State. Этот кластер представлен в API Home трейтом OvenCavityOperationalStateTrait и соответствует трейту RunCycle используемому для связи Cloud-to-cloud . Он определяет такие фазы, как «предварительный нагрев», «предварительный нагрев» и «охлаждение».

Главная API Cloud-to-cloud
OvenCavityOperationalState RunCycle

У модели данных Cloud-to-cloud » Cloud-to-cloud есть ограничения. Эта модель допускает только одну камеру и один RunCycle . В отличие от этого, Matter моделирует многокамерную печь как конечную точку устройства с кластером рабочих состояний камеры печи для каждой камеры.

Для некоторых моделей духовок может быть целесообразно изменять список этапов во время работы. Например, в духовках, поддерживающих предварительный нагрев, записи в списке этапов могут отличаться на этапе предварительного нагрева и на этапах нагрева или охлаждения.

Как обсуждалось в предыдущем разделе, реализация Matter Oven должна реализовывать кластер «Рабочее состояние камеры печи», который в API Home моделируется как трейт OvenCavityOperationalStateTrait .

Для достижения наилучших результатов убедитесь, что ваше устройство Cloud-to-cloud Oven реализует трейт RunCycle , и опубликуйте текущее состояние, установив атрибут currentRunCycle . Этот атрибут доступен для просмотра через API Home с помощью атрибутов OvenCavityOperationalStateTrait.phaseList и OvenCavityOperationalStateTrait.currentPhase .

Устройство «Печь» также должно отправлять уведомление о завершении цикла работы, обновляя атрибуты priority , status и currentCycleRemainingTime объекта RunCycle . В следующем примере отправляется событие OperationalStateTrait.OperationCompletion , которое можно использовать для индикации перехода печи из цикла «предварительного нагрева» в цикл «предварительного нагрева»:

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

Использование печи в автоматизации

При создании автоматизации для печи, реализованной с использованием кластера «Состояние работы камеры печи», используйте атрибут currentPhase , чтобы узнать, в каком цикле находится печь:

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")
    }
  }
}

Полный пример см. в статье «Если телевизор включен, когда завершается цикл работы духовки, свет в гостиной мигает, а умная колонка транслирует сообщение «Цикл работы духовки завершен»» .