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

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

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

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

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

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

Роли узлов

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

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

Кластеры

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

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

Атрибуты

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

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

Команды

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

События

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В этом примере кластер клиента On/Off на узле A изменяет атрибуты кластера сервера On/Off на узлах A и B, а кластер клиента на узле B изменяет только кластер сервера на узле B.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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