Устройства в экосистеме Google Home можно реализовать с помощью Cloud-to-cloud , Matter или обоих. Некоторые типы устройств более сложны, чем другие, и представляют собой проблему для разработки при использовании Home API таким образом, чтобы обеспечить плавное взаимодействие с другими устройствами в экосистеме.
Одна из проблем при реализации некоторых из этих типов устройств заключается в том, что устройства могут иметь различные комбинации характеристик. Не все комбинации работают так же хорошо, как другие. Кроме того, модель данных Cloud-to-cloud соответствует модели данных Matter , но не всегда однозначно и однозначно. См. Модель данных , где более подробно обсуждаются модели данных и их сопоставления.
Эта страница содержит дополнительную информацию о том, как модели данных для конкретных устройств сопоставляются друг с другом, и предлагает некоторые рекомендации о том, какие характеристики использовать для реализации этих типов устройств.
Печь
Тип устройства Oven ( OvenDevice
) и свойства его компонентов не так просты в реализации по сравнению с другими типами устройств. Существует несколько способов реализации духовки в Matter , но не все подходы обеспечивают беспрепятственное взаимодействие с другими устройствами или с экосистемой Google Home.
Картирование признаков
Вместо реализации устройства Matter Oven с использованием кластеров «Режим духовки» и «Вкл. Выкл.» мы рекомендуем использовать кластер рабочего состояния духовки. Этот кластер представлен в Home API признаком OvenCavityOperationalState
и сопоставляется с признаком RunCycle
Cloud-to-cloud . Он определяет такие фазы, как «предварительный нагрев», «предварительный нагрев» и «охлаждение».
Домашние API | Cloud-to-cloud |
---|---|
OvenCavityOperationalState | RunCycle |
Модель данных Cloud-to-cloud Oven имеет ограничения. Модель данных Cloud-to-cloud печи позволяет использовать только одну камеру с одним RunCycle
. Напротив, Matter моделирует многокамерную печь как конечную точку устройства с кластером рабочего состояния камеры печи для каждой камеры.
Для некоторых устройств Oven может потребоваться изменение списка фаз во время выполнения. Например, духовки, поддерживающие предварительный нагрев, могут иметь разные записи в списке фаз на этапе предварительного нагрева и на этапах нагрева или охлаждения.
Рекомендуемая реализация
Как обсуждалось в предыдущем разделе, реализация Matter Oven должна реализовать кластер Oven Cavity Operational State, который моделируется в Home API как признак 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
}
Полный пример см. в разделе «Мигание индикаторов и объявление, когда духовка достигнет выбранной температуры» .