Matter学习笔记(2)——数据模型和设备类型

一、设备数据模型

Matter 中的设备具有明确定义的 数据模型(DM),它是设备功能的分层建模。使用 属性(Attribute)命令(Command)事件(Event) 的概念描述 Matter 节点支持的远程操作,并分组为称为集群的逻辑块。Matter 应用集群规范中包含的集群具有明确定义的范围和行为,以确保不同供应商开发的 Matter 节点之间的互操作性。集群可以是抽象的,这意味着它可以作为多种设备类型的基础,以减少向 Matter 引入新产品类别的时间和成本。

此层次结构的顶层有 设备(Device)

1.1 节点和端点

所有设备(包括智能手机和家居助理)都由一个或多个节点 节点 组成。节点是网络中唯一可识别且可寻址的资源,用户可以将其视为整个功能。Matter 中的网络通信源自和终止于节点。

节点是 端点 的集合。每个端点都包含一个功能集。 例如,在语音控制门锁设备中,一个端点可以包括用于操作门锁的功能集,而另一端点可以包括用于处理温度传感器的功能集,而另一个端点与实用程序(例如设备 OTA)相关。

注意:端点 0 始终保留给 Matter 的实用程序集群。这是每个 Matter 设备的唯一强制端点。其中包含端点的服务功能,例如发现、寻址、诊断和软件更新。

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

  • Commissioner:执行调试的节点。
  • 控制器:可以控制一个或多个节点的节点。例如 Google Home app (GHA)、Google Assistant 和 Google Nest Hub (2nd gen)。某些设备类型(例如开/关灯开关)具有 Controller 角色。
  • 受控方:可由一个或多个节点控制的节点。大多数设备类型都可以是控制方,但具有“控制器”角色的某些设备类型除外,例如开/关灯开关。开/关灯开关只能是控制器。不能是被控制方。
  • OTA 提供方:可以提供 OTA 软件更新的节点。
  • OTA 请求方:可以请求 OTA 软件更新的节点。

1.2 集群

详细内容查看:Application Cluster Specification

端点由一个或多个集群组成,这些 集群 对属性、命令和事件进行分组,这些属性、命令和事件共同构成了一组中的每个功能。例如智能插座上的“开启/关闭”集群,或可调暗的浅色端点上的“级别控制”集群。

一个节点可能还有多个端点,每个端点都会创建一个功能相同的实例。例如,灯具可以单独控制各个灯,或者电源板可以对各个插座进行控制。

1.2.1 客户端和服务器

集群可以有以下类型:

  • 服务器: 负责保存属性、命令和事件的值。
  • 客户端: 负责与其他服务器集群进行交互,从而执行以下操作:
    • 读取和写入服务器属性。
    • 读取服务器事件。
    • 调用服务器远程命令。

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

例如,我们可能有两个台灯:节点 A节点 B。这两个节点都实现了开/关灯设备类型。此设备类型包含一个开启/关闭服务器集群,用于控制其各自的物理光输出。

不过,与典型台灯一样,我们的实体设备还会包含用于本地开/关的开关设备类型。此设备类型必须实现开启/关闭客户端集群,以便控制服务器集群。

1.2.2 描述符集群(Descriptor Cluster)

这是存在于每个节点的 Server Cluster,它用于描述节点信息,这个节点可以是一个Endpoint,也可以是多个Endpoint的组合;

每种设备类型都需要实现描述符集群。根设备类型在端点 0 上定义。读取其描述符集群可让客户端了解遍历所有可用端点树并执行适用的操作。

调试器或控制设备(如手机或集线器)可以使用在描述符集群上找到的信息对设备(灯、开关、泵、温控器)以及该设备的特定实例实现的特定功能进行建模,从而向用户显示正确的界面。

其中描述了端点及其属性以下枚举:

  • 设备类型(DeviceTypeList): 是端点支持的设备类型以及相应修订版本的列表。它必须至少包含一种设备类型。
  • 服务器列表(ServerList): 列出了端点中的集群服务器。
  • 客户端列表(ClientList): 列出了端点中的集群客户端。
  • 其他端点,称为零件列表(PartsList): 包含用于实现此设备类型的端点列表。
    端点 0(根节点)的 PartsList 包含设备本身以外的所有端点(端点 0)。
    其他端点的 PartsList 通常为空。例如,温度传感器会强制要求运行温度测量服务器集群,而不需要任何其他配置。
    其他设备类型可能采用由多个 Device Type 实例的树结构组成。例如,视频播放器设备类型可以由电视、视频播放器、音响设备和不同的内容应用设备类型组成,每种类型位于不同的端点上。

1.3 属性

属性 是表示物理量或状态的数据实体。它们存储在 Matter 设备的内存中,但也可以根据需要动态计算。例如级别控制集群的当前级别属性。属性可定义为不同的数据类型,例如 uint8、字符串或数组。

1.4 命令

除了属性之外,集群还有命令。命令 是可用于触发其他设备上某些行为的操作。例如在门锁设备中,锁门命令可用于在物理设备上触发此类操作。命令可以生成响应和结果;在 Matter 中,此类响应也被定义为反向执行的命令。

1.5 事件

最后,集群还可能包含事件。事件 是一种传达设备状态更改的特殊属性。它们也可以被视为设备状态转换的记录。属性表示当前状态,而事件是过去的日志,包含单调递增的计数器、时间戳和优先级。 它们能够捕获状态转换,以及不易用属性实现的数据建模。

二、设备类型

详细内容查看:Device Library Specification

Matter 设备类型是一个或多个端点的正式定义的要求集合。设备类型旨在确保市场上不同设备品牌的互操作性。

所有设备类型均在设备库规范中定义,该规范可从CSA 规范下载请求页面获取。每个设备类型定义由以下元素组成:

  • 设备类型 ID
  • 设备类型修订
  • 一个或多个强制集群,包括每个集群的最小修订版

设备库规范中的设备类型定义可能会随着时间而改变。使用设备类型修订值(最初设置为 )来跟踪更改。更改不会改变设备的工作方式,而只会改进其功能。

设备类型可以需要其他设备类型来进行组合,从而使其成为组合设备类型。例如强制性集群之外,端点还可以实现其他集群,包括设备类型的一个或多个可选集群,甚至是不属于设备类型的集群。


• 由 Leung 写于 2023 年 11 月 9 日

• 参考:设备数据模型 | Matter | Google Home Developers
    nRF Connect SDK - Matter
    实例刨析,沉浸式掌握Matter重要概念
    【Matter】Matter学习笔记1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/137053.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

POJ 3254 Corn Fields 状态压缩DP(铺砖问题)

一、题目大意 我们要在N * M的田地里种植玉米,有如下限制条件: 1、对已经种植了玉米的位置,它的四个相邻位置都无法继续种植玉米。 2、题目中有说一些块无论如何,都无法种植玉米。 求所有种植玉米的方案数(不种植也…

【Java 进阶篇】JQuery DOM操作:轻松驾驭网页内容的魔法

在前端开发的舞台上,DOM(文档对象模型)是我们与网页内容互动的关键。而JQuery作为一个轻量级的JavaScript库,为我们提供了便捷而强大的DOM操作工具。在本篇博客中,我们将深入探讨JQuery的DOM内容操作,揭开这…

外星人笔记本键盘USB协议逆向

前言 我朋友一台 dell g16 购买时直接安装了linux系统,但是linux上没有官方的键盘控制中心,所以无法控制键盘灯光,于是我就想着能不能逆向一下键盘的协议,然后自己写一个控制键盘灯光的程序。我自己的外星人笔记本是m16&#xff…

阿里系APP崩了?回应来了!

最近,阿里云遭遇了一场可怕的疑似故障,引起了广泛的关注和热议。各种消息纷传,阿里云盘崩了,淘宝又崩了,闲鱼也崩了,连钉钉也不幸中招。这一系列故障让人不禁发问:阿里系的APP都崩了&#xff0c…

【Unity每日一记】“调皮的协程”,协程和多线程的区别在哪里

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

msvcp120.dll丢失的6种解决方法,教你如何修复dll文件丢失

“找不到msvcp120dll,无法继续执行代码的6个修复方案”。我相信很多朋友在运行某些程序时,可能会遇到这样的错误提示:“找不到msvcp120dll,无法继续执行代码”。那么,msvcp120dll究竟是什么?为什么会丢失呢&#xff1f…

发布订阅者模式(观察者模式)

目录 应用场景 1.结构 2.效果 3.代码 3.1.Main方法的类【ObserverPatternExample】 3.2.主题(接口)【Subject】 3.3.观察者(接口)【Observer】 3.4.主题(实现类)【ConcreteSubject】 3.5.观察者&a…

qemu 之 uboot、linux 启动

目录 编译uboot、kernel 编译启动从 uboot 中引导启动 linux注参考 本文主要说明 arm64 在 qemu 上的相关启动。 编译 使用的是 qemu-8.1.1 版本,编译命令如下: ../configure --cc/usr/local/bin/gcc --prefix/home/XXX/qemu_out --enable-virtfs --enable-slir…

Three.js——基于原生WebGL封装运行的三维引擎

文章目录 前言一、什么是WebGL?二、Three.js 特性 前言 Three.js中文官网 Three.js是基于原生WebGL封装运行的三维引擎,在所有WebGL引擎中,Three.js是国内文资料最多、使用最广泛的三维引擎。既然Threejs是一款WebGL三维引擎,那么…

RAG相关内容介绍

本文记录在查找RAG相关内容时所整合的一些资料与内容,还有一个组会报告的PPT 文章目录 定义LLM的知识更新难题 RAG是什么?-“开卷考试”RAG原理与技术RAG技术细节一、数据索引• 数据提取• 分块(Chunking)分块方式确定应用程序的…

摊牌 了,我不藏了,上线了一年多的网站还是广而告之吧!

大家好,我是大明哥,一个专注「死磕 Java」系列文章创作的程序员。 本文已收录到我的小站:https://skjava.com。 从去年开始一直有小伙伴问我,大明哥,你的网站怎么打不开了?我只能苦涩地跟他说,没…

DevChat智能编程助手:小白也能轻松上手的开发利器

DevChat智能编程助手:小白也能轻松上手的开发利器 一、DevChat介绍1.1 DevChat简介1.2 DevChat特点1.3 DevChat官网 二、注册DevChat账号2.1 访问DevChat官网2.2 注册账号2.3 复制Access Key2.4 登录DevChat 三、安装DevChat3.1 打开VS Code软件3.2 安装DevChat3.3 …

(免费领源码)java#ssm#mysql在线学习平台85204-计算机毕业设计项目选题推荐

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,在线学习平台当然也不能排除在外。在线学习平台是以实际运用为开发背景,运用软件工程原理和开发方法&#x…

Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器

1.前言 首先要实现这个功能,必须先搞懂如何通过C调用python脚本文件最为关键,因为两者的环境不同。本质上是在 c 中启动了一个 python 解释器,由解释器对 python 相关的代码进行执行,执行完毕后释放资源。 2 模块功能 2.1python…

基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码

基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于樽海鞘群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。

CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。 概述 时空函数是一种用于描述时空结构和演化的函数。它在物理学、数学和计算机科学等领域中都有广泛的应用。时空函数可以描述物体在时空中的位置、速度、加速度以及其他相关属性。 用法 CnosDB 将使用一种全新的…

基于蜉蝣算法优化概率神经网络PNN的分类预测 - 附代码

基于蜉蝣算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于蜉蝣算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于蜉蝣优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

腾讯域名优惠卷领取

腾讯域名到到期了,听说申请此计划,可获得优惠卷,看到网上5年域名只需要10元,姑且试试看。 我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?in…

Vue3+NodeJS 接入文心一言, 发布一个 VSCode 大模型问答插件

目录 一&#xff1a;首先明确插件开发方式 二&#xff1a;新建一个Vscode 插件项目 1. 官网教程地址 2. 一步一步来创建 3. 分析目录结构以及运行插件 三&#xff1a;新建一个Vue3 项目&#xff0c;在侧边栏中展示&#xff0c;实现vscode插件 <> vue项目 双向消息传…

模型部署:量化中的Post-Training-Quantization(PTQ)和Quantization-Aware-Training(QAT)

模型部署&#xff1a;量化中的Post-Training-Quantization&#xff08;PTQ&#xff09;和Quantization-Aware-Training&#xff08;QAT&#xff09; 前言量化Post-Training-Quantization&#xff08;PTQ&#xff09;Quantization-Aware-Training&#xff08;QAT&#xff09; 参…