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