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 .
Язык
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 |
---|---|---|
Черта | Кластер | Черта |
Атрибут | Атрибут | Атрибут, Состояние |
Команда | Команда | Команда |
Событие | Событие | Последующий ответ, уведомление |