API Google Home для Android предоставляют унифицированную поверхность API, позволяющую разработчикам взаимодействовать с состоянием объектов в доме пользователя. Эти объекты могут описывать устройства и информацию, не связанную с устройствами, связанную со структурой и комнатами пользователя.
Домашние API определяют следующие сущности, с которыми может взаимодействовать пользователь:
- Структуры представляют собой дом, содержащий комнаты и устройства.
- Помещения являются частью конструкции и содержат устройства.
- Устройства реализуют свойства, содержащие атрибуты, соответствуют типам, излучают события и отвечают на команды.
- Автоматизация является частью структуры и использует домашние метаданные и устройства для автоматизации домашних задач.
Рисунок 1 иллюстрирует эту архитектуру:
Типы устройств Home API могут поддерживаться Matter , открытым стандартом для умного дома, или быть устройством Cloud-to-cloud в экосистеме Google Home. Некоторые типы устройств могут включать в себя функциональность обоих. Дополнительную информацию см. в разделе Поддерживаемые типы устройств на Android .
В Matter функциональность устройства сгруппирована по кластерам, которые представлены в Home API как стандартные черты Matter . Домашние API поддерживают стандартный набор кластеров Matter , как определено в текущей спецификации Matter .
В экосистеме Google Home функциональность устройства сгруппирована по характеристикам умного дома, которые представлены в Home API как характеристики умного дома Google. Home API поддерживают набор функций умного дома, как определено в программе Cloud-to-cloud .
Также доступны другие характеристики, такие как кластеры, специфичные для производителя, и характеристики платформы. Дополнительные сведения см. в разделе Модель данных на Android .
Язык
Домашние API для Android написаны на Kotlin и предоставляют идиоматический интерфейс Kotlin, который использует Flow для управления состоянием и подпиской. Это дает ряд преимуществ по сравнению со стандартным API подписки.
Мы рекомендуем ознакомиться с документацией Kotlin по сопрограммам, потоку и Jetpack Compose, если вы еще этого не сделали:
- Разрабатывайте приложения для Android с помощью Kotlin
- Изучите Kotlin для Android
- Сопрограммы Kotlin на Android . Эти конкретные лаборатории кода могут быть полезны:
- Kotlin работает на Android , а точнее, на StateFlow .
- State и Jetpack Compose , в частности функция
collectAsStateWithLifecycle()
. Эта функция автоматически управляет подпиской и отменой подписки на потоки в зависимости от того, находится ли пользовательский интерфейс, показывающий это состояние, на переднем плане или нет. - Если вы работаете с API автоматизации, чтение о типобезопасных сборщиках Kotlin полезно для понимания того, как работает Automation DSL.
Идентификаторы объектов
У каждого объекта в Home API есть идентификатор, который представляет его основной идентификатор. Этот идентификатор является уникальным и стабильным идентификатором, который никогда не изменится на протяжении всего срока существования объекта. Этот идентификатор можно использовать для кэширования объектов или проверки равенства, поскольку метаданные объекта могут меняться.
См. интерфейс HasId
, чтобы узнать, какие объекты имеют идентификатор.
Сопоставление терминологии
Сущности в Home API сопоставляются с концепциями Matter и Cloud-to-cloud следующим образом:
Домашние API | Matter | Cloud-to-cloud |
---|---|---|
Черта | Кластер | Черта |
Атрибут | Атрибут | Атрибут, Состояние |
Команда | Команда | Команда |
Событие | Событие | Последующий ответ, уведомление |