Home API для iOS представляют все устройства в экосистеме 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. В Home API свойства, полученные из Matter, называются свойствами, а не кластерами.
Поэтому типы устройств и их характеристики в Home API предназначены в первую очередь для Matter. Тип или характеристика устройства Matter имеет приоритет над аналогом Cloud-to-cloud.
Список типов устройств и их характеристик приведен в разделе Поддерживаемые типы устройств на iOS.
Черты характера
Версии признаков Swift создаются для использования в Home API и содержат дополнительные функции, характерные для Home API (не встречаются в Matter или Cloud-to-cloud). Например, у каждого признака есть методы, позволяющие проверить, поддерживает ли признак определенный атрибут или команду. Это полезно, когда нужно определить, можно ли считать состояние или выполнить определенные действия на устройстве пользователя, поскольку не все устройства одного типа имеют одинаковые функции.
Чтобы импортировать типы устройств и их характеристики, импортируйте модуль GoogleHomeTypes в свое приложение:
import GoogleHomeTypes
Вы также можете использовать typealias для названий типов устройств и признаков, чтобы сократить код и избежать повторения пространства имен:
import GoogleHomeTypes
typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType
Большинство функций поддерживается в автоматизациях, а некоторые доступны только в них. Подробнее о поддержке функций Automation API на Android…
Состав типов устройств
Home API поддерживает большинство кластеров приложений Matter в качестве типажей в модели данных. Кластеры конфигурации низкого уровня, которые не предлагают прямых утилит для конечных пользователей, например Binding, не предоставляются напрямую через Home API. Подробнее о группах устройств…
Признаки, унаследованные от признаков умного дома Cloud-to-cloud, обычно имеют одинаковые названия в Cloud-to-cloud и Home API, как в примере с OpenCloseTrait. Другие представлены как расширения характеристик Matter, созданные с помощью расширений Matter, относящихся к конкретному производителю. Эти свойства заполняют пробел для свойства smart home, функции которого разделены между SDK Matter и экосистемой Google Home. Например, типы устройств Google*, которые есть в Cloud-to-cloud, но пока не имеют аналогов в Matter.
Типы устройств состоят из характеристик, полученных из одного или обоих источников: Matter или Cloud-to-cloud.
Например, FanDeviceType состоит из обоих типов и имеет три черты:
- Типаж
IdentifyTraitMatter предоставляет все функции MatterIdentifyTrait. - Типаж
FanControlTraitMatter предоставляет все функции MatterFanControlTrait. - Свойство
ExtendedFanControlTraitGoogle предоставляет все функции smart homeFanSpeedTrait, которые не охватывает свойствоFanControlTraitMatter.
Такой подход позволяет гибко настраивать функциональность устройств, абстрагируясь от базовых моделей данных smart home.
Группы устройств
Группа устройств – это определенная пользователем коллекция устройств в рамках одной структуры. Участие в группе сохраняется в сервисах Google и видно другим участникам структуры и другим приложениям, у которых есть доступ к структуре.
Группы устройств представлены объектом DeviceGroup, который отличается от HomeDevice. Каждый объект HomeDevice содержит список групп, к которым он принадлежит, в свойстве GroupMembershipTrait. Таким образом, ваше приложение может проверять принадлежность к группам и напрямую перебирать устройства, входящие в группу. Кроме того, DeviceGroup соответствует протоколу HasParts, чтобы показывать типы устройств, поддерживаемые устройствами-участниками, при таргетинге на группу в целом.
Подробнее о группах устройств рассказывается в статьях Structure API и Управление группой устройств.