Matter 的数据模型(转自乐鑫博客)

设备开发人员通常会通过数据模型来定义 Matter 设备的功能。它将定义一个典型 Matter 节点的主要组成部分。

              一个简单的 Matter 数据模型结构

为了方便理解,我们以构架一个照明系统为例,它包括一个 Dimmable Light(可调光灯泡)和一个 On/Off Light(简单开关灯泡)。

Matter 结构的主要组成部分

照明系统在 Matter 结构下的表示方式如下图所示。

          一个 Matter 数据模型的示例

Node(节点):节点通常被定义为一个具有某些功能的网络可寻址实体,具有唯一性。用户可以看到的智能设备实体,比如我们的这个照明系统,就是一个节点。


Endpoint(端点):端点可以被想象为一个可提供某种或某些服务的虚拟设备,每个节点可以拥有多个端点。比如,我们照明系统节点就拥有不止一个端点,Dimmable Light 和 On/Off Light 都是照明系统节点的端点。

注意,每个节点的第一个端点 Endpoint 0 用于提供一些适用于整个节点的服务,因此需要保留。我们将在下文具体介绍。

Matter 规范还定义了一些常见的 Device Types(设备类型),可代表一组常用功能。例如,我们的 Dimmable Light 和 On/Off Light 均为 Matter 规范中定义的标准设备类型。


Cluster:多个常用操作组合为一个可复用的模块。

以上图为例,我们的 Dimmable Light (Endpoint 1) 中有 2 个标准 Cluster:On/Off Cluster 和 Level Control Cluster。其中,On/Off Cluster 可完成打开或关闭设备的操作,Level Control Cluster 可完成配置设备某个功能等级的操作。也就是说,在实际的 Dimmable Light 应用中,On/Off Cluster 可以控制灯泡的开关,Level Control Cluster 可以调节灯泡的亮度。

更进一步,假设我们还希望使 Dimmable Light 支持颜色控制功能,那么在该 Endpoint 中,还需要引入一个名为 Color Control 的标准 Cluster,用于控制灯泡的颜色。

我们照明系统中的另一个灯泡 On/Off Light 仅支持打开或关闭功能,因此只包括一个 On/Off Cluster。


从上图中,我们可以看到,每个 Cluster 内都有自己的 Attribute 和 Command。

Attribute:Attribute 表示可以读取或写入的内容。比如,On/Off Cluster 包含一个 OnOff Attribute,代表设备实际打开或关闭的状态;Level Control Cluster 包含一个 CurrentLevel Attribute,代表设备当前的等级。

Attribute 既可以长期有效,也可以在设备重启之后失效;读写权限也可设置为“只读”或“可读可写”。

Matter 规范中的 Attribute 支持丰富的数据类型:包括典型值、布尔值、整数(有符号/无符号)、浮点数、枚举数、字符串,甚至集合(列表或数据结构)。

Command:Command 代表触发 Cluster 进行某种行为的能力。每条 Command 可以有自己的参数。以上图为例,On/Off Cluster 中的 Toggle(切换开关)Command,可以改变 Cluster 的 OnOff Attribute;Level Control Cluster 中有 MoveToLevelMoveStep 等 Command,可以调整 Cluster 的 CurrentLevel Attribute。

Matter 规范提供了一系列标准 Cluster(及其 Attribute 和 Command)。用户可根据具体设备,从列表中寻找适合自己设备的 Cluster。

以上是 Matter 数据模型中常见组成部分的介绍。接下来,我们将介绍另一组概念:Cluster Server(Cluster 服务器)和 Cluster Client(Cluster 客户端)。

Cluster 服务器和 Cluster 客户端

每个 Matter Cluster 均有自己的服务器以及对应的客户端。以我们的照明系统为例,Dimmable Light 和 On/Off Light 均可提供照明服务,因此均作为服务器,而用户通过 Cluster 客户端与服务器进行交互。

Cluster 服务器和客户端之间的关系如下图所示,其中:

  • 在 Dimmable Light 的例子中,Dimmer Switch(调光开关)作为 OnOff Cluster 和 Level Control Cluster 的客户端,可以控制作为 Cluster服务器的灯泡。
  • 在 On/Off Light 的例子中,Simple Switch(简单开关)作为 OnOff Cluster 的客户端,可以控制作为 Cluster 服务器的灯泡。
  • 此外,我们还可以将手机 App 作为 Cluster 的客户端,它同样可以控制作为 Cluster 服务器的灯泡。
  • 请注意,这里的 Dimmer Switch、Simple Switch、Dimmable Light、On/Off Light 和手机 App 均为 Matter 节点。

下图表示了上述概念在其他用例中的定义。

                电源开关和电源插座

Endpoint 0

最后,让我们回到前文未作介绍的 Endpoint 0。Endpoint 0 的设备类型为“根节点”。作为一个特殊的 Endpoint,它提供了一些适用于整个节点的 Cluster,包括:

  • Basic Information Cluster Server(基本信息 Cluster 服务器):提供有关节点的基本信息,如固件版本、制造商等。
  • ACL Cluster Server(ACL Cluster 服务器):允许配置可访问控制此节点的其他节点列表。
  • Network Commissioning Cluster Server(网络调试 Cluster 服务器):允许在节点上配置网络(Wi-Fi、以太网、Thread 等)。

请注意,Matter 规范中还定义了所有 Endpoint 均需提供的强制性 Cluster。同理,每个 Cluster 中也可能定义了一些强制性 Attribute 和 Command,这里不一一列出。

posted @ 2023-03-20 08:26  K_Code  阅读(107)  评论(0编辑  收藏  举报