Совместимость на устройствах iOS

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

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

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

Духовка

Тип устройства "Духовка" (OvenDeviceType) и его характеристики сложнее реализовать, чем другие типы устройств. Реализовать духовку в Matter можно разными способами, но не все из них обеспечивают бесперебойное взаимодействие с другими устройствами или экосистемой Google Home.

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

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

API для дома Cloud-to-cloud
OvenCavityOperationalState RunCycle

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

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

Как говорилось в предыдущем разделе, в реализации Matter Oven должен быть кластер Oven Cavity Operational State, который в Home API представлен типажом OvenCavityOperationalStateTrait.

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

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

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

Как использовать духовку в автоматизации

При создании автоматизации для духовки, реализованной с помощью кластера Oven Cavity Operational State, используйте атрибут 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")
    }
  }
}

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