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

Устройства в Matter имеют четко определенную модель данных (DM), которая представляет собой иерархическую модель функций устройства. На верхнем уровне этой иерархии находится устройство.

Устройства и конечные точки

Все устройства, включая смартфоны и голосовых помощников, состоят из узлов1. Узел – это однозначно идентифицируемый ресурс со своим адресом в сети, который для пользователя выглядит как единый функциональный блок. Все сетевые взаимодействия в Matter осуществляются между узлами.

Узлы представляют собой набор конечных точек. Каждая конечная точка содержит набор функций. Например, одна конечная точка может быть связана с освещением, другая – с обнаружением движения, а третья – с утилитами, такими как OTA-обновление устройства.

Иерархия устройств, узлов и конечных точек
Рисунок 1. Устройства, узлы и конечные точки

Роли узлов

Роль узла – это набор связанных действий. У каждого узла может быть одна или несколько ролей. Роли узлов:

  • Инициализирующее устройство – узел, выполняющий инициализацию.
  • Контроллер – узел, который может управлять одним или несколькими узлами. Например, Google Home app (GHA), Google Assistant и Google Nest Hub (2nd gen). Некоторые типы устройств, например выключатель света, имеют роль контроллера.
  • Управляемый объект – узел, которым могут управлять один или несколько узлов. Большинство типов устройств могут быть управляемыми, за исключением некоторых, которые имеют роль контроллера, например выключатель света. Переключатель света может быть только контроллером. Он не может быть контролируемым.
  • Поставщик беспроводных обновлений. Узел, который может предоставлять беспроводные обновления ПО.
  • Запрашивающее беспроводное обновление устройство – узел, который может запрашивать беспроводные обновления ПО.

Кластеры

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

У узла может быть несколько конечных точек, каждая из которых создает экземпляр одной и той же функции. Например, светильник может предоставлять возможность управлять отдельными лампами, а удлинитель – отдельными розетками.

Атрибуты

На последнем уровне находятся атрибуты – состояния, которые хранятся в узле, например атрибут текущего уровня кластера управления уровнем. Атрибуты могут быть разных типов, например uint8, строки или массивы.

Иерархия узлов, конечных точек, атрибутов и команд
Рисунок 2. Узлы, конечные точки, атрибуты и команды

Команды

Помимо атрибутов, кластеры также имеют команды, которые представляют собой действия, которые могут быть выполнены. В Matter DM они эквивалентны вызову удаленной процедуры. Команды похожи на глаголы, например закрыть дверь в кластере Дверной замок. Команды могут генерировать ответы и результаты; в Matter такие ответы также определяются как команды, идущие в обратном направлении.

События

Наконец, в кластерах могут быть события, которые можно рассматривать как записи о переходах между состояниями. Атрибуты представляют текущее состояние, а события – это журнал прошлых действий, в котором есть монотонно возрастающий счетчик, временная метка и приоритет. Они позволяют отслеживать переходы между состояниями, а также моделировать данные, что сложно сделать с помощью атрибутов.

Полный образец устройства
Рисунок 3. Пример иерархии модели взаимодействия Matter устройств

Конечная точка 0 зарезервирована для служебных кластеров. Служебные кластеры – это специальные кластеры, которые содержат функции обслуживания конечной точки, такие как обнаружение, адресация, диагностика и обновление программного обеспечения. В свою очередь, кластеры приложений поддерживают основные действия, такие как включение/выключение или измерение температуры.

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

Какие комбинации кластеров следует включить в новое устройство?

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

Типы устройств не указаны в основном документе спецификации Matter, а приведены в сопутствующем документе – Библиотеке устройств. Аналогичным образом все кластеры приложений определены в библиотеке кластеров приложений. Эти три документа можно найти на сайте участников Connectivity Standards Alliance (Alliance).

Каждая конечная точка, реализующая тип устройства, должна реализовывать обязательные кластеры, определяющие этот тип устройства. Помимо обязательных кластеров, конечная точка может реализовывать дополнительные кластеры, в том числе один или несколько необязательных кластеров типа устройства или даже кластеры, не входящие в тип устройства.

Клиенты и серверы

Кластеры могут быть клиентскими или серверными. Сервер является с отслеживанием состояния и хранит атрибуты, события и команды, а клиент – без отслеживания состояния. Клиент инициирует взаимодействия с удаленным кластером серверов, выполняя следующие действия:

  • считывает и записывает данные в удаленные атрибуты.
  • чтение удаленных событий.
  • вызов удаленных команд.

Хотя модель данных имеет иерархическую структуру в пределах узла, между узлами иерархия отсутствует. У узлов в Matter нет вертикальных отношений контроллера/периферийного устройства или ведущего/ведомого. Напротив, связь между ними горизонтальная: любой кластер может быть как сервером, так и клиентом. Таким образом, узел может быть как сервером, так и клиентом в отношении разных кластеров и функций.

Например, у нас есть две настольные лампы: Узел А и Узел Б. Оба узла реализуют тип устройства On/Off Light. Этот тип устройств включает кластер On/Off Server, который управляет соответствующими физическими источниками света.

Однако, как и обычные настольные лампы, наши физические устройства будут включать тип устройства Выключатель света для локальных выключателей. Устройство этого типа должно реализовать кластер On/Off Client, чтобы управлять кластерами Server.

Лампы, поддерживающие и функцию включения/выключения света, и функцию выключателя
Рисунок 4. Кластеры клиента и сервера

В этом примере клиентский кластер "Вкл./Выкл." на узле А изменяет атрибуты серверного кластера "Вкл./Выкл." на узлах А и Б, а клиентский кластер на узле Б изменяет только серверный кластер на узле Б.

В следующем разделе мы подробно расскажем о том, как взаимодействуют кластеры клиентов и серверов, а также о модели взаимодействия.

Кластер дескрипторов

Как следует из названия, сервер кластера дескрипторов предоставляет информацию для самоанализа. Он описывает конечную точку, перечисляя ее:

  • кластеры серверов;
  • кластеры клиентов.
  • Типы устройств.
  • Дополнительные конечные точки, известные как части.

Для каждого типа устройств требуется реализовать кластеры дескрипторов. Тип корневого устройства определяется в конечной точке 0. Чтение кластера дескрипторов позволяет клиенту просматривать все доступные конечные точки и выполнять необходимые операции.

Устройство-контроллер, например телефон или концентратор, может использовать информацию из кластера дескрипторов, чтобы смоделировать устройство (светильник, переключатель, насос, термостат) и определенные функции, реализованные в этом экземпляре устройства, и показать пользователю правильный интерфейс.

Кластеры серверов

Атрибут ServerList содержит список серверов кластера в конечной точке.

Кластеры клиентов

Атрибут ClientList содержит список клиентов кластера в конечной точке.

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

Атрибут DeviceTypeList представляет собой список типов устройств, поддерживаемых конечной точкой, с указанием их версий. Он должен содержать хотя бы один тип устройства.

Список деталей

PartsList – список конечных точек, используемых для реализации этого типа устройства.

PartsList Конечная точка 0 (корневой узел) содержит все конечные точки устройства, кроме себя.

Обычно поле PartsList других конечных точек пустое. Например, датчику температуры требуется кластер сервера измерения температуры, и ничего больше.

Устройства других типов могут быть представлены в виде древовидной структуры, состоящей из нескольких экземпляров DeviceType. Например, тип устройства "Видеопроигрыватель" может состоять из телевизора, видеопроигрывателя, колонки и разных типов устройств для приложений с контентом, каждый из которых находится в отдельной конечной точке.


  1. Согласно спецификации Matter, у устройства может быть несколько узлов. Например, на смартфоне может быть несколько приложений, каждое из которых является отдельным узлом. В этом руководстве все устройства будут содержать один узел. Ожидается, что большинство физических устройств будут следовать этому шаблону. ↩