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

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

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

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

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

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

Роли узлов

Роль узла — это набор взаимосвязанных действий. Каждый узел может иметь одну или несколько ролей. Роли узлов включают в себя:

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

Кластеры

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

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

Атрибуты

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

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

Команды

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

События

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

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

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

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

В целом, какие комбинации кластеров следует включить в план выпуска нового устройства производителем?

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

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

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

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

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

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

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

Например, у нас может быть две настольные лампы: узел A и узел B. Оба узла реализуют тип устройства «Вкл/Выкл» . Этот тип устройства включает в себя кластер серверов «Вкл/Выкл» , который управляет их физическими световыми выходами.

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

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

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

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

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

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

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

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

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

Серверные кластеры

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

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

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

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

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

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

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

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

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

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


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