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