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