API Google Home для Android представляют все устройства экосистемы Google Home в единой модели данных. Эта модель данных охватывает все типы устройств (от Google Nest и сторонних производителей) независимо от используемой технологии умного дома (например, Matter или Cloud-to-cloud) и предоставляет общий API для создания пользовательских интерфейсов как для smart home, так и для мобильных приложений.
Типы устройств
Типы устройств, представленные в Home API, объединяют модели данных Matter и Cloud-to-cloud. Некоторые из них получены непосредственно из Matter, некоторые являются расширением типов устройств Matter, а некоторые – из Cloud-to-cloud.
Типы устройств содержат признаки, которые используются для управления устройствами. Как и типы устройств, характеристики создаются на основе кластеров Matter и характеристик Cloud-to-cloud и представляются в общем формате, похожем на формат кластеров Matter. В API для дома признаки, полученные из Matter, называются признаками, а не кластерами.
Поэтому типы устройств и признаки в Home API предназначены для использования в первую очередь с Matter. Тип устройства Matter или характеристика имеет приоритет над аналогом Cloud-to-cloud.
Список типов устройств и их характеристик приведен в разделе Поддерживаемые типы устройств на Android.
Функции
Версии трейтов на языке Kotlin создаются для использования в Home API и содержат дополнительные функции, характерные для Home API (их нет в Matter и Cloud-to-cloud). Например, у каждого трейта есть методы, позволяющие проверить, поддерживает ли он определенный атрибут или команду. Это полезно, когда нужно определить, можно ли считывать данные о состоянии или выполнять определенные действия на устройстве пользователя, поскольку не все устройства одного типа имеют одинаковые функции.
Каждая характеристика содержится в собственном пространстве имен и должна быть импортирована отдельно для использования.
Например, чтобы использовать признак Matter "Включено/выключено" и тип устройства "Включаемое/выключаемое устройство", импортируйте в приложение следующие пакеты:
import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice
Для устройств типа "Гараж" (из умного дома Google) используйте сочетание черт Matter и черт Google:
import com.google.home.google.LockUnlock
import com.google.home.matter.standard.DoorLock
import com.google.home.matter.standard.GoogleGarageDevice
Android Studio поддерживает автозаполнение и часто автоматически добавляет полные названия пакетов при добавлении строк import в исходные файлы проекта. Однако названия пакетов не всегда одинаковы для разных типов устройств и функций. Чтобы проверить правильность названия пакета для каждого DeviceType или Trait, ознакомьтесь со справочной информацией.
Большинство характеристик можно использовать в программах, а некоторые доступны только в них. Подробнее о поддержке признаков Automation API на устройствах Android…
Состав типов устройств
API для умного дома поддерживают большинство кластеров приложений Matter в качестве признаков в модели данных. Кластеры конфигурации низкого уровня, которые не представляют прямой пользы для конечных пользователей, например Binding, не предоставляются через API Home.
Названия признаков, полученных из признаков умного дома Cloud-to-cloud, обычно совпадают в Cloud-to-cloud и API Home, как в примере с признаком OpenClose. Другие представлены как расширения признаков Matter, созданные с помощью Matter и специальных расширений производителя. Эти признаки позволяют использовать функцию smart home, когда ее функциональность разделена между Matter SDK и экосистемой Google Home. Примером могут служить типы устройств Google*, которые поступают из Cloud-to-cloud, но пока не имеют аналогов в Matter.
Типы устройств состоят из характеристик из одного или обоих источников: Matter или Cloud-to-cloud.
Например, тип устройства для вентилятора состоит из обоих типов и имеет три характеристики:
- Свойство
IdentifyMatter предоставляет все функции свойства MatterIdentify. - Свойство
FanControlMatter предоставляет все функции свойства MatterFanControl. ExtendedFanControl– это черта Google, которая предоставляет все функции черты Google smart homeFanSpeed, не охваченные чертойFanControlMatter.
Такая структура позволяет создать гибкую модель для реализации всех функций устройства, абстрагируясь от базовых моделей данных smart home.
Группы устройств
Группа устройств – это определенная пользователем коллекция устройств в рамках одной структуры. Группы устройств представлены объектом DeviceGroup, который отличается от объекта HomeDevice.
Подробнее о группах устройств…