Модель данных на iOS

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 -first. Тип устройства Matter или черта имеет приоритет над аналогом Cloud-to-cloud .

Список типов устройств и их характеристик см. в разделе Поддерживаемые типы устройств на iOS .

Черты

Версии Swift-характеристик генерируются для использования в API Home и содержат дополнительные функции, характерные для 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 автоматизации на iOS .

Состав типа устройства

API Home поддерживают большинство кластеров приложений Matter как черты в модели данных. Черты, которые не соответствуют управлению устройствами или состояниям и не предлагают никакой полезности для конечных пользователей, такие как Binding и Groups, не отображаются через API Home.

Черты, полученные из черт умного дома Cloud-to-cloud обычно имеют одинаковое имя между API Cloud-to-cloud и Home, как в примере OpenCloseTrait . Другие представлены как расширения черт Matter , созданные с использованием расширений Matter , специфичных для производителя. Эти черты заполняют пробел для черты smart home , где функциональность разделена между Matter SDK и экосистемой Google Home. Конкретным примером этого являются типы устройств Google* , которые приходят из Cloud-to-cloud , но пока не имеют аналогов Matter.

Типы устройств состоят из характеристик из одного или обоих источников: Matter или Cloud-to-cloud .

Например, FanDeviceType состоит из обоих и имеет три характеристики:

  • Трейт IdentifyTrait Matter предоставляет все функциональные возможности Matter IdentifyTrait .
  • Трейт FanControlTrait Matter предоставляет все функциональные возможности Matter FanControlTrait .
  • Черта ExtendedFanControlTrait Google предоставляет все функции smart home Google FanSpeedTrait , которые не охватываются чертой FanControlTrait Matter .

Этот тип композиции признаков обеспечивает гибкую модель для полной функциональности типа устройства, абстрагируя базовые модели данных smart home .