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

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

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

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

Духовка

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

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

Вместо того чтобы реализовывать устройство Matter Oven с помощью кластеров Oven Mode и On Off, мы рекомендуем использовать кластер Oven Cavity Operational State. Этот кластер представлен в Home API типажом OvenCavityOperationalState и сопоставляется с типажом 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 представлен типажом OvenCavityOperationalState.

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

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

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

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

При создании автоматизации для духовки, реализованной с помощью кластера Oven Cavity Operational State, используйте атрибут currentPhase, чтобы узнать, в каком цикле находится духовка:

   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
}

Полный пример приведен в разделе Мигание света и объявление, когда духовка нагревается до выбранной температуры.