设备数据模型

Matter 中的设备具有明确定义的数据模型 (DM):对设备功能进行分层建模。此层次结构的顶层是设备

设备和端点

包括智能手机和家居助理在内的所有设备都由 节点1节点是 Google Cloud 中的 一个完整的网络。网络通信: Matter 在节点处产生和终止。

节点是端点的集合。每个端点都包含一组功能。 例如,一个端点可能与照明功能相关,另一个端点与动作检测相关,还有一个端点与实用程序(例如设备 OTA)相关。

设备、节点和端点的层次结构
图 1:设备、节点和端点

节点角色

节点角色是一组相关行为。每个节点可能有一个或多个 角色。节点角色包括:

  • Commissioner:该节点 佣金
  • 控制器:可以控制一个或多个节点的节点。 示例包括 Google Home app (GHA)Google AssistantGoogle Nest Hub (2nd gen)。部分 设备类型,例如开/关灯 开关,请使用控制器 角色。
  • 受控对象:可由一个或多个账号控制的节点 节点。大多数设备类型都可以成为受控对象,但某些设备类型除外 (例如“开/关灯”) 开关。开/关灯 开关只能是控制器。它不能是受控对象。
  • OTA 提供商:可以提供 OTA 软件更新的节点。
  • OTA 请求者:可请求 OTA 软件的节点 更新。

集群

在一个端点中,节点具有一个或多个集群。这些是另一个 是设备层次结构中处于“状态”的步骤,因为它们将特定功能分为一组, 智能插座上的开/关集群,或者可调光的电平控制集群 light Endpoint。

一个节点也可能有多个端点, 功能例如,灯具可以单独控制 单个灯具或电源板可能会暴露对各个插座的控制。

属性

在最后一层,我们找到 Attributes,它们是节点保持的状态, 例如“级别控制”集群的“当前级别”属性。属性可以定义为不同的数据类型,例如 uint8、字符串或数组。

节点、端点、特性和命令的层次结构
图 2:节点、端点、属性和命令

命令

除了属性之外,集群还有命令,也就是 文档。它们相当于Matter的决策者 远程过程调用。命令类似于动词,例如对门锁集群执行锁门操作。命令可能会生成响应和结果;在 Matter 中,此类响应也定义为命令,方向相反。

事件

最后,集群还可能包含事件,可视为一条记录 过去的状态转换。虽然属性代表当前状态, 活动是过去的日志,其中包括单调递增的 计数器、时间戳和优先级。 它们能够捕获状态转换以及 无法通过某些属性轻松实现。

完整示例设备
图 3:Matter 的层次结构示例 设备交互模型

端点 0 已预留给实用程序集群。实用程序集群 是在端点上提供服务功能的特定集群,例如 例如发现、寻址、诊断和软件更新。另一方面 应用集群支持主要操作,例如打开/关闭或 体温测量。

设备类型

设备应包括哪些集群组合 制造商打算购买新设备?

Matter 规范要求设备实现 或扩展一种或多种设备类型。设备类型 必填集群和可选集群,用于定义 实体设备(例如可调光灯门锁视频播放器)。

设备类型并非由 Matter 指定 但通过随附文档提供:设备 媒体库。同样,所有应用集群都在 Cluster Library。您可以在 Connectivity Standards Alliance (Alliance) 会员网站上找到这三份文件。

每个实现设备类型的端点都必须实现必需的集群 指定设备类型除了必需的集群之外, 端点可以实现其他集群,包括一个或多个设备 类型的可选集群,甚至是不属于该设备类型的集群。

客户端和服务器

集群可以是客户端集群,也可以是服务器集群。虽然 服务器是有状态的,包含属性、事件和命令;客户端 无状态的责任是发起交互 远程服务器集群,因此可以执行:

  • 对远程属性执行 readwrites 操作。
  • 读取其远程事件。
  • 调用其远程命令。

虽然 DM 在节点内是分层的,但节点之间的关系不是。Matter 中的节点没有垂直方向 控制器/外围设备或领导者/关注者关系。相反, 关系是水平的:任何集群都可以是 ServerClient。 因此,就不同的集群而言,节点既可能是服务器,又是客户端 和功能。

例如,我们可以有两个台灯:节点 A 和节点 B。两个节点 实现开启/关闭浅色设备类型。此设备类型包含开启/关闭 服务器集群,用于控制各自物理光源输出。

但是,和典型的台灯一样,我们的实体设备还将包含一个 开/关灯开关:本地开/关开关的设备类型。此设备 类型必须实现开启/关闭客户端集群,以便它可以控制服务器 集群。

同时实现开/关灯和电灯开关的灯
图 4:客户端和服务器集群

在此示例中,节点 A 上的开启/关闭客户端集群将更改属性 节点 A 和节点 B 上的开/关服务器集群,而节点 B 的客户端 集群只更改了节点 B 上的服务器集群。

在下一部分中,我们将详细介绍客户端和服务器集群如何交互: 互动模型

描述符集群

顾名思义,描述符集群服务器提供内省功能, 信息。它描述端点,并列举其:

  • 服务器集群。
  • 客户端集群。
  • 设备类型。
  • 其他端点,称为“部分”。

每种设备类型都需要实现描述符聚类。根源 设备类型是在端点 0 上定义的。读取其描述符集群将会 使客户端能够遍历整个可用资源树 然后执行适用的操作。

调试器或控制设备(例如手机或集线器)可以使用 对设备进行建模的信息(灯、开关、 泵、温控器)以及由该特定实例实现的特定功能 并向用户显示正确的界面。

服务器集群

ServerList 属性列出了端点中的集群服务器。

客户端集群

ClientList 属性列出了端点中的集群客户端。

设备类型列表

DeviceTypeList 属性是端点支持的设备类型及其各自修订版本的列表。必须包含至少一种设备类型。

零件清单

PartsList 包含用于实现此设备类型的端点列表。

端点 0(根节点)的 PartsList 包含 设备(端点 0)。

其他端点的 PartsList 通常为空。例如, 温度传感器指定温度测量服务器集群,什么都不指定 其他。

其他设备类型可以组合成包含多个 Device Type 实例的树结构。例如,视频播放器设备类型可以由电视、 视频播放器、音箱和不同的内容应用设备类型,每种 另一个端点。


  1. Matter 规范决定了设备可以 并有多个节点 例如,智能手机可能有多个应用,每个应用都是一个 另一个节点。在本入门手册中,所有设备都将包含一个节点。大多数实体设备都应遵循此模式。