API Google Home для Android предоставляют унифицированную API-платформу, позволяющую разработчикам взаимодействовать с состоянием объектов в доме пользователя. Эти объекты могут описывать устройства и информацию, не связанную с устройствами, связанную со зданием и комнатами пользователя.
API Home определяют следующие сущности, с которыми может взаимодействовать пользователь:
- Структуры представляют собой дом, содержащий комнаты и устройства.
- Комнаты являются частью конструкции и содержат устройства.
- Устройства реализуют черты, содержащие атрибуты, соответствуют типам, генерируют события и реагируют на команды.
- Автоматизация является частью структуры и использует метаданные и устройства дома для автоматизации задач в доме.
Рисунок 1 иллюстрирует эту архитектуру:
Устройства с 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 .
Экосистема
Экосистема Google Home обеспечивает оптимальную основу для создания, управления, защиты и интеграции систем умного дома. На рисунке 2 показано, как все компоненты работают вместе.
Экосистема включает в себя Google Automation Engine , который хранит и запускает автоматизацию , позволяющую автоматизировать задачи и настройки устройств в доме.
API Home использует OAuth 2.0 для предоставления доступа к устройствам в структуре. OAuth позволяет пользователю предоставлять разрешение приложению или службе, не раскрывая свои учётные данные.
Google Home Developer Console используется для управления всеми этапами проекта Home API: от проверки бренда до разработки, тестирования, сертификации и окончательного запуска. Она оптимизирует процесс разработки, предоставляя надежные инструменты и возможности распространения через экосистему Google Home.
Язык
API Home для Android написаны на Kotlin и предоставляют идиоматический интерфейс Kotlin, использующий Flow для управления состоянием и подписками. Это обеспечивает ряд преимуществ по сравнению со стандартным API подписок.
Мы рекомендуем вам ознакомиться с документацией Kotlin по сопрограммам, потоку и Jetpack Compose, если вы этого еще не сделали:
- Разработка приложений для Android с помощью Kotlin
- Изучите Kotlin для Android
- Корутины Kotlin на Android . Эти практические занятия могут быть полезны:
- Kotlin работает на Android , а точнее, StateFlow .
- State и Jetpack Compose , в частности, функция
collectAsStateWithLifecycle()
. Эта функция автоматически управляет подпиской и отменой подписки на потоки в зависимости от того, находится ли пользовательский интерфейс, отображающий это состояние, на переднем плане или нет. - Если вы работаете с Automation API, чтение о типобезопасных конструкторах Kotlin будет полезно для понимания того, как работает Automation DSL.
Идентификаторы сущностей
Каждая сущность в Home API имеет идентификатор, представляющий её основной идентификатор. Этот идентификатор является уникальным и постоянным и не меняется на протяжении всего жизненного цикла сущности. Этот идентификатор можно использовать для кэширования объектов или проверки на равенство, поскольку метаданные сущности могут изменяться.
Чтобы узнать, какие сущности имеют идентификатор, см. интерфейс HasId
.
Терминологическое картирование
Сущности в API Home сопоставляются с концепциями Matter и Cloud-to-cloud следующим образом:
Домашние API | Matter | Cloud-to-cloud |
---|---|---|
Черта | Кластер | Черта |
Атрибут | Атрибут | Атрибут, Состояние |
Команда | Команда | Команда |
Событие | Событие | Последующий ответ, уведомление |