Модель данных на устройстве Android

Home API для 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. В Home API свойства, полученные из Matter, называются свойствами, а не кластерами.

Поэтому типы устройств и их характеристики в Home API предназначены в первую очередь для Matter. Тип или характеристика устройства Matter имеет приоритет над аналогом Cloud-to-cloud.

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

Черты характера

Версии Kotlin для характеристик генерируются для использования в Home API и содержат дополнительные функции, характерные для Home API (не встречаются в Matter или Cloud-to-cloud). Например, у каждой характеристики есть методы, позволяющие проверить, поддерживает ли она определенный атрибут или команду. Это полезно, когда нужно определить, можно ли считать состояние или выполнить определенные действия на устройстве пользователя, поскольку не все устройства одного типа имеют одинаковые функции.

Каждый типаж содержится в собственном пространстве имен и должен импортироваться отдельно.

Например, чтобы использовать типаж Matter On/Off и тип устройства On/Off Plug-in Unit, импортируйте в приложение следующие пакеты:

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…

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

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

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

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

Например, тип устройства Вентилятор состоит из обоих типов и имеет три характеристики:

  • Типаж Identify Matter предоставляет все функции Matter Identify.
  • Типаж FanControl Matter предоставляет все функции типажа Matter FanControl.
  • Типаж ExtendedFanControl Google предоставляет все функции типажа smart home FanSpeed, которые не охватывает типаж FanControl Matter.

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

Группы устройств

Группа устройств – это определенная пользователем коллекция устройств в рамках одной структуры. Группы устройств представлены объектом DeviceGroup, который отличается от HomeDevice.

Подробную информацию о группах устройств можно найти в статье Structure API.