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

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

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

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

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

Схема, изображающая архитектуру Home API
Рисунок 1. Архитектура домашних API

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

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

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

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

Язык

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

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

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

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

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

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

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

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