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

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

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

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

Рисунок 1 иллюстрирует эту архитектуру:

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

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

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

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

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

Язык

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

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

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

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

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

Терминологическое отображение

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

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