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

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

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

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

Духовка

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

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

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

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

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

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

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

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

Устройство Oven также должно публиковать уведомление о цикле работы, обновляя атрибуты 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
}

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