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