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

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

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

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

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

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

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

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

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

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

Язык

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

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

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

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

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

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

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

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