Устройства в экосистеме 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
}
Полный пример можно найти в разделе Как заставить лампочки мигать и объявить, когда духовка достигнет заданной температуры.