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

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

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

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

Печь

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

Картирование признаков

Вместо реализации устройства Matter Oven с использованием кластеров «Режим печи» и «Вкл./Выкл.» мы рекомендуем использовать кластер «Операционное состояние полости печи». Этот кластер представлен в API Home трейтом OvenCavityOperationalState и соответствует трейту Cloud-to-cloud RunCycle . Он определяет такие фазы, как «предварительный нагрев», «предварительный нагрев» и «охлаждение».

Домашние API Cloud-to-cloud
OvenCavityOperationalState RunCycle

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

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

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

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

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

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

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

При создании автоматизации для печи, реализованной с использованием кластера рабочего состояния полости печи, обратитесь к атрибуту 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
}

Полный пример см. в статье «Мигание индикаторов и оповещение о достижении духовкой выбранной температуры» .