Устройства в экосистеме 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
}
Полный пример см. в статье «Мигание индикаторов и оповещение о достижении духовкой выбранной температуры» .