API Google Home для Android предоставляют унифицированную поверхность API, позволяющую разработчикам взаимодействовать с состоянием объектов в доме пользователя. Эти объекты могут описывать устройства и информацию, не связанную с устройствами, связанную со структурой и комнатами пользователя.
Домашние API определяют следующие сущности, с которыми может взаимодействовать пользователь:
- Структуры представляют собой дом, содержащий комнаты и устройства.
- Помещения являются частью конструкции и содержат устройства.
- Устройства реализуют свойства, содержащие атрибуты, соответствуют типам, излучают события и отвечают на команды.
- Автоматизация является частью структуры и использует домашние метаданные и устройства для автоматизации домашних задач.
Рисунок 1 иллюстрирует эту архитектуру:
Типы устройств Home API могут поддерживаться Matter , открытым стандартом для умного дома, или быть устройством Cloud-to-cloud в экосистеме Google Home. Некоторые типы устройств могут включать в себя функциональность обоих. Дополнительную информацию см. в разделе Поддерживаемые типы устройств .
В Matter функциональность устройства сгруппирована по кластерам, которые представлены в Home API как стандартные черты Matter . Домашние API поддерживают стандартный набор кластеров Matter , как определено в текущей спецификации Matter .
В экосистеме Google Home функциональность устройства сгруппирована по характеристикам умного дома, которые представлены в Home API как характеристики умного дома Google. Home API поддерживают набор функций умного дома, как определено в программе Cloud-to-cloud .
Также доступны другие характеристики, такие как кластеры, специфичные для производителя, и характеристики платформы. Дополнительную информацию см. в разделе Модель данных .
Язык
Домашние API написаны на 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 |
---|---|---|
Черта | Кластер | Черта |
Атрибут | Атрибут | Атрибут, Состояние |
Команда | Команда | Команда |
Событие | Событие | Последующий ответ, уведомление |