API Home для iOS представляют все устройства в экосистеме Google Home в единой модели данных. Эта модель данных охватывает все типы устройств (от Google Nest или сторонних производителей), независимо от используемой технологии умного дома (например, Matter или Cloud-to-cloud ), и предоставляет единую API-панель для создания пользовательского интерфейса как для разработчиков smart home , так и для разработчиков мобильных приложений.
Типы устройств
Типы устройств, представленные в API Home, представляют собой объединение моделей данных Matter и Cloud-to-cloud . Некоторые из них напрямую получены из Matter , некоторые являются расширением типов устройств Matter , а некоторые — из Cloud-to-cloud .
Типы устройств содержат характеристики, используемые для управления устройствами. Как и типы устройств, характеристики формируются на основе кластеров Matter и характеристик Cloud-to-cloud и представляются в общем формате, аналогичном формату кластеров Matter . В API Home характеристики, полученные из Matter , называются характеристиками , а не кластерами .
Таким образом, типы и характеристики устройств в API Home ориентированы в первую очередь на Matter . Тип или характеристика устройства Matter имеет приоритет над аналогом Cloud-to-cloud .
Список поддерживаемых типов устройств на iOS и их характеристики см. в разделе «Поддерживаемые типы устройств».
Черты
Для использования в API Home генерируются версии трейтов на Swift, содержащие дополнительные функции, специфичные для API Home (отсутствующие в Matter или Cloud-to-cloud ). Например, каждый трейт имеет методы для проверки того, поддерживает ли он определенный атрибут или команду. Это полезно при определении возможности чтения состояния или выполнения определенных действий на устройстве пользователя, поскольку не все устройства одного типа должны обладать одинаковыми функциями.
Для импорта характеристик и типов устройств импортируйте модуль GoogleHomeTypes в ваше приложение:
import GoogleHomeTypes
Кроме того, для имен типов характеристик и устройств можно использовать typealias , чтобы сократить код и избежать повторения пространств имен:
import GoogleHomeTypes
typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType
Большинство характеристик поддерживаются для использования с автоматизациями, а некоторые характеристики доступны только для автоматизаций. Для получения более подробной информации см. раздел «Поддержка характеристик API автоматизации на Android» .
состав типов устройств
API Home поддерживают большинство кластеров приложений Matter в качестве характеристик в модели данных. Характеристики, которые не соответствуют управлению устройством или его состояниям и не предоставляют никакой пользы конечным пользователям, такие как привязка и группы, не отображаются через API Home.
Характеристики, полученные из характеристик умного дома, передаваемых Cloud-to-cloud обычно имеют одинаковое имя как в Cloud-to-cloud , так и в API Home, как, например, в случае с OpenCloseTrait . Другие представлены как расширения характеристик Matter , созданные с использованием расширений Matter , специфичных для производителей. Эти характеристики заполняют пробел в функциональности характеристик smart home , где она разделена между SDK Matter и экосистемой Google Home. Конкретным примером являются типы устройств Google* , которые передаются из Cloud-to-cloud но пока не имеют аналогов в Matter.
Типы устройств состоят из характеристик, полученных из одного или обоих источников: Matter или Cloud-to-cloud .
Например, тип FanDeviceType состоит из обоих компонентов и имеет три характеристики:
- Трейт
IdentifyTraitMatter предоставляет все функции трейта MatterIdentifyTrait. - Трейт
FanControlTraitMatter предоставляет все функции трейта MatterFanControlTrait. - Трейт Google
ExtendedFanControlTraitпредоставляет все функции трейта Google smart homeFanSpeedTrait, которые не охватываются трейтомFanControlTraitMatter .
Такой тип композиции характеристик обеспечивает гибкую модель для полной функциональности устройств любого типа, абстрагируя базовые модели данных smart home .