Обзор домашних API для Android

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

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

  • Эти сооружения представляют собой дом, в котором расположены комнаты и оборудование.
  • Помещения являются частью конструкции и содержат оборудование.
  • Устройства реализуют свойства, содержащие атрибуты, соответствуют типам, генерируют события и реагируют на команды.
  • Системы автоматизации являются частью общей структуры и используют метаданные дома и устройства для автоматизации задач в доме.

На рисунке 1 представлена ​​данная архитектура:

Диаграмма, изображающая архитектуру API Home для Android-приложения.
Рисунок 1: Архитектура API Home для приложения Android.

Устройства, использующие Home API, могут поддерживаться Matter — открытым стандартом для умного дома, — или быть Cloud-to-cloud устройствами в экосистеме Google Home. Некоторые типы устройств могут сочетать в себе функциональность обоих подходов. Дополнительную информацию см. в разделе «Поддерживаемые типы устройств на Android» .

В Matter функциональность устройств сгруппирована по кластерам, которые представлены в API Home в виде стандартных характеристик Matter . API Home поддерживают стандартный набор кластеров Matter , определенный в текущей спецификации Matter .

В экосистеме Google Home функциональность устройств сгруппирована по характеристикам умного дома, которые представлены в API Home как характеристики умного дома Google. API Home поддерживают набор характеристик умного дома, определенных в программе Cloud-to-cloud .

Также доступны другие характеристики, такие как кластеры, специфичные для производителя, и характеристики платформы. Для получения дополнительной информации см. раздел «Модель данных в Android» .

Экосистема

Экосистема Google Home предоставляет упрощенную основу для создания, управления, обеспечения безопасности и интеграции решений для умного дома. На рисунке 2 показано, как все компоненты взаимодействуют друг с другом.

Диаграмма, иллюстрирующая экосистему API Home для приложения Android.
Рисунок 2: Экосистема API Home для приложения Android.

Экосистема включает в себя Google Automation Engine , который хранит и запускает сценарии автоматизации , позволяющие автоматизировать задачи и настройки устройств в доме.

API Home использует OAuth 2.0 для предоставления доступа к устройствам в структуре. OAuth позволяет пользователю предоставлять разрешения приложению или сервису без необходимости раскрывать свои учетные данные для входа.

Google Home Developer Console используется для управления всеми этапами проекта по API Home, от проверки бренда до разработки, тестирования, сертификации и, в конечном итоге, запуска. Она оптимизирует процесс разработки, предоставляя при этом надежные инструменты и возможности распространения через экосистему Google Home.

Язык

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

Если вы еще этого не сделали, рекомендуем ознакомиться с документацией Kotlin по сопрограммам, потоку выполнения и Jetpack Compose:

Идентификаторы сущностей

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

Чтобы узнать, какие сущности имеют идентификатор, обратитесь к интерфейсу HasId .

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

В API-интерфейсах Home сущности сопоставляются с концепциями Matter и Cloud-to-cloud следующим образом:

Главная API Matter Cloud-to-cloud
Черта Кластер Черта
Атрибут Атрибут Атрибут, Состояние
Командование Командование Командование
Событие Событие Последующий ответ, уведомление