Matter 系列之 Data Model

Matter 2022-09-06 3854 次浏览 次点赞


Matter 中的具有定义明确的设备数据模型 (Device Data Model),它是对设备功能的分层建模,在此模型最顶层的实体就是设备。

I. 设备和 Endpoints

Hierarchy of Devices, Nodes and Endpoints

提示:对于如上包含关系,对于 Matter 物理设备通常是一个 Device 就是一个 Node,一对一的关系。但是对于 Matter Controller 例如智能手机可能出现多个 App,也就是多个出现 Node。

Matter 中所有的设备,包含手机,家庭语音助手的音箱都统称为 Nodes。Node 作为网络中节点,它是网络中唯一可识别和可寻址的资源,用户可以将其视为一个功能的整体。同样地,通信中原地址和目的地址也是描述 Node。

Node 是 Endpoint 的集合。每个 Endpoint 都包含一个特定功能集。例如,一个 Endpoint 与照明功能相关,而另一个与运动监测相关,再一个与系统(例如设备 OTA)相关。

II. Clusters

一个 Endpoint 包含一个或者多个 Clusters。Cluster 是设备数据模型描述的另一个层次,它是特定设备功能分组,例如智能插座上的 On/Off Cluster,或者是可调光设备 Level Control Cluster 。

然而,不同 Endpoint 也可以一个相同功能的实例。例如,多键开关上面的开关独立控制,或者插板插座的需要对每一个插孔进行控制,而这里每一个开关或者插孔都可以是一个 Endpoint。

属性

如下分层和包含关系,最后一级就是 Attributes。他是 Node 的一个状态集合。例如可调光灯的当前调光值。Attributes 可以有不同的数据类型, uint8, strings 或者 arrays。

Hierarchy of Nodes, Endpoints, Attributes and Commands

命令

除了 Attributes, 一个 Cluster 同样可以包含 Commands,它是操作和影响 Attribute 的动作值。它在该数据模型的设计中相当于RPC 调用。 例如 Door Lock cluster 中的 Lock door (锁门) 动作。 Commands 会产生一个消息回复,该回复消息也被定义成了 Commands,只是数据方向相反。

事件

最后,Clusters 还包含一系列 Events,Events 可以认为是状态从过去转换到现在的一次记录。Attributes 代表当前状态,事件是过去状态的的转换的日志,它包含一个递增的计数值、时间戳和优先级。它们可以捕获状态转换,以及使用属性不容易实现的数据建模。

Full sample device

Node 的 Endpoint 0 是保留的特殊 Utility Clusters,Utility Clusters 是在 Endpoint 上包含服务功能的特定 Clusters,主要用发现、寻址、诊断和软件更新,对比其他 Endpoint 的 Application Clusters 用以开/关或温度测量等操作。

III. 设备类型

那么,开发者该如何来设计设备的 Cluster 组合呢?虽然你可以使用任何 Cluster 任意组合。但是通用做法是是扩展 Device Type。Device Type 是一个或者多个 Endpoint 的包含强制和可选 Cluster 的集合,其定义了一个物理设备的最顶层属性。例如一个设备的 Device Type 可以是 Dimmable Light ,Door Lock,Video Player。

对于 Endpoint 默认是一个独立功能的聚合。然而对于 Device Type 却明确规定其需要实现固定的一个或者多个 Endpoint 。

Device Type 不是由 Matter Specificition 约定,它在 Device Library 文档描述,类似的应用 Cluster,是包含在 Application Cluster Library,这些文档都可以在由会员在 CSA 官网获取。

提示:三份文档分别对应,《Connected Home over IP Specification》《Connected Home over IP Device Library》、《Connected Home over IP Application Clusters》。

IV. Cluster 的客户端/服务端属性

最后一个概念, Cluster 是具有客户端(Client)和 服务器端(Server)属性的,其中 Server Cluster 一个有状态的,其实现了 Attributes、Events、Commands。Client 是无状态,主要是负责初始化 Interactions,用以远程执行对 Server Cluster 的如下操作。

  • reads、writes 远程服务端 Attributes。
  • reads 远程服务端 Events。
  • invocation 远程服务端 Commands

虽然 DM 在 Node 内是分层的,但节点之间的关系不是。 Matter 中的 Node 没有非对称 Controller/Peripheral 或者 Leader/Follower 关系。相反,关系是等同的:任何 Clusters 都可能是 Server 或 Client。因此,就不同的 Cluster 和功能而言,一个 Node 可能既是 Server 又是 Client。

例如,我们可能有两个台灯:Node A 和 Node B,两个 Node 都实现了 On/Off Light Switch 设备类型。此设备类型包括一个 On/Off Server Cluster,用于控制其各自的物理灯光。

但是,就像常用的台灯一样,物理设备通常还包括包括一个 On/Off Light Switch 设备类型,用于其本地开/关开关按钮。此设备类型必须实现 On/Off Client Cluster,以便它可以控制 Server Cluster。

Lamps implementing both On/Off Light and Light Switch

在如上图例中,Node A 的 On/Off Client Cluster 可以同时改变 Node A 和 Node B 的 On/Off Client Cluster 的 On/Off 属性。然后 Node B 的 Client Cluster 就设计为只操作自己的 On/Off 属性。

接下来章节,我们将详细讲解客客户端和服务端 Cluster 之间的交互:Interaction Model。


本文由 Jay 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处,点赞4

8 条评论

  1. lijie
    lijie

    更!

  2. Snoopy.Xiao
    Snoopy.Xiao

    博主加油,看Spec 好幾天沒弄明白,看樓主的一篇,就清楚了,謝謝,加油。

    1. lijie
      lijie

      哈哈,谢谢。这么一说我得把 Interaction Model 补上。

  3. lijie
    lijie

    Interaction Model 可以说是 Matter 开发中最为重要的章节了,因为之前系列文档阅读量感觉不太够,所以 Interaction Model Delay 了,立个 Flag,今年之内补上。

    1. Yankel
      Yankel

      老板 Interaction Model 没更新呀

      1. lijie
        lijie

        更!

        1. frank
          frank

          还在做 MATTER/THREAD 相关的工作吗,希望看到代码分析的内容,感谢

          1. Jay
            Jay

            可以有。

添加新评论