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

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

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

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

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

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

Устройства с API Home могут поддерживаться 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 .

Язык

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

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

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

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

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

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

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

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