Обзор API для дома для Android

API Google Home для Android предоставляет единый интерфейс API, позволяющий разработчикам взаимодействовать с состоянием объектов в доме пользователя. Эти объекты могут описывать устройства и информацию, не связанную с устройствами, которая относится к структуре и комнатам пользователя.

API для умного дома определяют следующие объекты, с которыми может взаимодействовать пользователь:

  • Дома – это объекты, в которых есть комнаты и устройства.
  • Комнаты входят в структуру и содержат устройства.
  • Устройства реализуют черты, содержащие атрибуты, соответствуют типам, генерируют события и отвечают на команды.
  • Группы устройств – это коллекции устройств в структуре, заданные пользователем.
  • Автоматизации являются частью структуры и используют метаданные дома и устройства для автоматизации задач в доме.

На рисунке 1 показана эта архитектура.

Диаграмма архитектуры Home API для приложения Android
Рисунок 1. Архитектура API для дома в приложении Android

Типы устройств 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 показано, как все компоненты работают вместе.

Схема экосистемы Home API для приложения Android
Рисунок 2. Экосистема Home API для приложения Android

Экосистема включает 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.

Идентификаторы объектов

У каждого объекта в API Google Home есть идентификатор, который представляет собой его основной идентификатор. Это уникальный постоянный идентификатор, который не меняется в течение всего срока существования объекта. Этот идентификатор можно использовать для кеширования объектов или проверки на равенство, поскольку метаданные объекта могут меняться.

Чтобы узнать, у каких объектов есть идентификаторы, откройте интерфейс HasId.

Сопоставление терминологии

Объекты в API для умного дома сопоставляются с концепциями Matter и Cloud-to-cloud следующим образом:

API для дома Matter Cloud-to-cloud
Трейт Кластер Трейт
Атрибут Атрибут Атрибут, статус
Команда Команда Команда
Событие Событие Ответ на запрос, уведомление