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

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

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

Конечная точка 0 зарезервирована для служебных кластеров . Кластеры служебных программ — это особые кластеры, включающие сервисные функции конечной точки, такие как обнаружение, адресация, диагностика и обновление программного обеспечения. С другой стороны, кластеры приложений поддерживают основные действия, такие как включение/выключение или измерение температуры.
Типы устройств
В целом, какие комбинации Кластеров следует включить, поскольку производитель устройства планирует новое Устройство? Хотя может использоваться любая комбинация кластеров, общая практика заключается в реализации и расширении нескольких типов устройств . Тип устройства — это набор обязательных и необязательных кластеров на одной или нескольких конечных точках, которые определяют атрибуты верхнего уровня физического устройства, такие как регулируемый свет , дверной замок или видеоплеер .
В то время как к конечным точкам предъявляются слабые требования в отношении того, что они должны реализовывать связную функциональность, типы устройств являются строгим требованием. Если узел реализует тип устройства, он должен включать в себя набор кластеров на одной или нескольких конечных точках, чтобы определить четкое связное поведение, такое как переключатель цветового диммера или датчик освещенности .
Типы устройств указаны не в основном документе спецификации Matter , а в сопроводительном документе: Библиотеке устройств . Точно так же все кластеры приложений определяются в библиотеке кластеров приложений . Эти три документа можно найти на веб-сайте членов CSA.
Клиенты и серверы
Кластеры могут быть кластерами клиентов или кластерами серверов . В то время как Сервер имеет состояние и содержит Атрибуты, События и Команды, Клиент не имеет состояния , и его ответственность заключается в инициировании Взаимодействий с удаленным Кластером Серверов, таким образом выполняя:
- читает и записывает в свои удаленные атрибуты.
- читает свои удаленные события.
- вызов его удаленных команд.
В то время как DM является иерархическим внутри узла, отношения между узлами — нет. Узлы в Matter не имеют вертикальных отношений контроллер/периферия или лидер/ведомый. Наоборот, связь горизонтальна: любой кластер может быть либо сервером , либо клиентом . Таким образом, узел может быть как сервером , так и клиентом в отношении различных кластеров и функций.
Например, у нас может быть две настольные лампы: Node A и Node B. Оба узла реализуют тип светового устройства включения/выключения . Этот тип устройства включает в себя кластер серверов On/Off , который управляет их соответствующими физическими световыми выходами.
Но, как и обычные настольные лампы, наши физические устройства также будут включать тип устройства включения/выключения света для своих локальных выключателей. Этот тип устройства должен реализовывать включенный/выключенный клиентский кластер, чтобы он мог управлять кластерами серверов.

В этом примере включенный/выключенный клиентский кластер на узле A изменяет атрибуты включенного/выключенного кластера серверов на узле A и узле B, в то время как клиентский кластер узла B изменяет только кластер серверов на самом узле B.
В следующем разделе мы подробно расскажем, как взаимодействуют клиентские и серверные кластеры: модель взаимодействия .
Кластер дескрипторов
Как следует из названия, Descriptor Cluster Server предоставляет информацию для самоанализа. Он описывает конечную точку, перечисляя ее:
- Кластеры серверов.
- Клиентские кластеры.
- Типы устройств.
- Дополнительные конечные точки, известные как Части.
Для каждого типа устройств требуется реализация кластеров дескрипторов. Тип корневого устройства определяется на конечной точке 0. Чтение его кластера дескрипторов предоставит клиенту видимость для просмотра всего дерева доступных конечных точек и выполнения соответствующих операций.
Комиссар или управляющее устройство, такое как телефон или концентратор, могут использовать информацию, найденную в кластере дескрипторов, для моделирования Устройства (свет, переключатель, насос, термостат) и конкретных функций, реализованных этим конкретным экземпляром Устройства, показывая правильный пользовательский интерфейс. пользователю.
Кластеры серверов
Атрибут ServerList
перечисляет серверы кластера в конечной точке.
Клиентские кластеры
Атрибут ClientList
перечисляет клиентов кластера в конечной точке.
Список типов устройств
Атрибут DeviceTypeList
представляет собой список типов устройств, поддерживаемых конечной точкой, вместе с соответствующими версиями. Он должен содержать хотя бы один тип устройства.
Список деталей
PartsList
содержит список конечных точек, используемых для реализации этого типа устройства.
PartsList
конечной точки 0 (корневой узел) содержит все конечные точки устройства, кроме самого себя (конечная точка 0).
PartsList
других конечных точек обычно будет пустым. Например, датчик температуры требует наличия кластера серверов измерения температуры и ничего больше.
Другие типы устройств могут быть объединены в древовидную структуру из более чем одного экземпляра типа устройства. Например, тип устройства видеопроигрывателя может состоять из телевизора, видеопроигрывателя, динамика и различных типов устройств приложения контента, каждый из которых находится на отдельной конечной точке.
Спецификация Matter определяет, что Устройство может иметь несколько Узлов. Например, на смартфонах может быть несколько приложений, каждое из которых представляет собой отдельный узел. Для целей этого учебника все Устройства будут содержать один узел. Ожидается, что большинство физических устройств будут следовать этому шаблону. ↩