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

news2024/10/6 18:30:49

一、设备数据模型

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提升绘图效率不再难,看看这8款AI流程图软件,一键快速生成流程图!

流程图是表示流程、系统和思想的重要视觉辅助工具。在当今数字时代,AI技术的出现已经彻底改变了制作流程图的方式。 在本文中,我们将与各位分享8款好用的AI流程图软件,借助每款软件内置的AI能力,可以快速绘制出一份完整的流程图&…

Java修仙传之神奇的ES2(巧妙的查询及结果处理篇)

SDL语句查询 查询的基本语法 GET /indexName/_search {"query": {"查询类型": {"查询条件": "条件值"}} } 根据文档id查询 #查询文档 GET hotel/_doc/36934 查询所有 会弹出该索引库下所有文档// 查询所有 GET /indexName/_searc…

乐园要吸引儿童还是家长?万达宝贝王2000万会员的求精之路

2023年6月,万达宝贝王正式迈入“400店时代”。 万达宝贝王在全国200多座城市,以游乐设施、主题活动、成长课程服务10亿多用户,拥有2000多万名会员,是真正的国内儿童乐园领跑者。 当流量时代变成“留量”时代,用户增长…

利用RoboBrowser库和爬虫代理实现微博视频的爬取

技术概述 微博是一个社交媒体平台,用户可以在上面发布和分享各种内容,包括文字、图片、音频和视频。微博视频是微博上的一种重要的内容形式,有时我们可能想要下载微博视频到本地,以便于观看或分析。但是,微博视频并没…

2023年阿里云腾讯云双11活动优惠券,阿里云最高省2400元,腾讯云最高省3600元

阿里云腾讯云2023年双11活动优惠券都已经出炉了,阿里云优惠券总额8940元,最高可省2400元,腾讯云优惠券总额9999元,最高可省3600元。阿里云和腾讯云的优惠券旨在帮助用户进一步减少上云成本,推荐大家先领券后购买。 一…

提升服务器性能相关

目录 查看是否开启超线程 显示所有逻辑 CPU 及其 HT 对关系 查看NUMA Isolcpus 隔离 禁止使用中断均衡服务 设置线程名称 设置线程亲和性 taskset工具 使用代码绑定 绑定core需要注意以下几点 查看是否开启超线程 lscpu | grep Thread 显示所有逻辑 CPU 及其 HT 对关…

功能更新|Leangoo领歌免费敏捷工具支持SAFe大规模敏捷框架

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 
 Leangoo可以支持敏捷研发管理全流程,包括小型团队敏捷开发,规模化敏捷SAFe&#xf…

umi4 React项目使用icon集合

umi项目中使用icon集合。 icon集合:https://icones.js.org/ 测试使用这个ion .umirc.ts文件 icons:{autoInstall:{iconify-json/ion: true,//自动安装iconify-json/ion},include: [ion:social-windows-outline],//要使用的必须把icon类名加到include中…

数据集笔记:Telecom Shanghai Dataset

0 数据地址 📱Telecom Shanghai Dataset (kaggle.com) 1 数据描述 该数据集由上海电信提供,包含超过720万条记录,记录了9481部手机通过3233个基站访问互联网的情况,时间跨度为六个月。例如,下图显示了基站的分布情况…

Primavera P6 Calendars 全局日历和项目日历Calendar

Primavera P6 日历基本介绍 Primavera P6 日历特性和功能是项目和进度管理的强大工具。在这里我们将讨论 Primavera P6 中三种最常见的日历类型中的两种:全局日历和项目日历。 Primavera P6 日历的第三种类型是资源日历,它非常专业,在项目中…

数字时代的法律前沿:TikTok与政府监管的博弈

在当今数字化时代,社交媒体已经成为了人们生活的一部分,扮演着沟通、娱乐和信息获取的重要角色。TikTok,作为一款短视频分享应用,在全球范围内迅速崭露头角,吸引了数亿用户。 然而,随着TikTok的崛起&#…

【C++】单例模式【两种实现方式】

目录 一、了解单例模式前的基础题 1、设计一个类,不能被拷贝 2、设计一个类,只能在堆上创建对象 3、设计一个类,只能在栈上创建对象 4、设计一个类,不能被继承 二、单例模式 1、单例模式的概念 2、单例模式的两种实现方式 …

低代码平台,业务开发的“银弹”

目录 一、为什么需要低代码平台 二、低代码平台的搭建能力 三、低代码其他能力 四、写在最后 随着互联网和信息技术的快速发展,各行各业都在积极拥抱数字化转型。在这个过程中,软件开发成为企业实现数字化转型的关键环节。然而,传统的软件开发…

交流信号继电器 DX-31BJ/AC220V JOSEF约瑟 电压启动 面板嵌入式安装

DX系列信号继电器由矩形脉冲激磁,磁钢保持。本继电器为双绕组。工作线圈可为电压型,亦可为电流型。复归线圈为电压型。继电器的工作电流或工作电压为长脉冲,亦可为脉冲不小于20mS的短脉冲。 系列型号 DX-31B信号继电器DX-31BJ信号继电器 D…

【VS2019 Qt5 VTK9.2】临时解决配置相关问题的简单方法

配置报错 编译报错提示(LNK2019或LNK2001) 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 “__declspec(dllimport) public: __cdecl QVTKOpenGLNativeWidget::QVTKOpenGLNativeWidget(class QWidget *,class QFlags)(_i…

华为gre over ipsec配置案例

除了物理口加入安全域zone外,tunnel也得加入到安全域 一定记得tunnel也得加入zone,这个总爱忘记。 [fw1]firewall zone dmz [fw1-zone-dmz]add interface Tunnel 1 [fw2]firewall zone dmz [fw2-zone-dmz]add interface Tunnel 1

前端Vue 页面滑动监听 拿到滑动的坐标值

前言 前端Vue 页面滑动监听 拿到滑动的坐标值 实现 Vue2写法 mounted() {// 监听页面滚动事件window.addEventListener("scroll", this.scrolling);}, methods: { scrolling() {// 滚动条距文档顶部的距离let scrollTop window.pageYOffset ||document.documentE…

Python爬虫-获取汽车之家车家号

前言 本文是该专栏的第9篇,后面会持续分享python爬虫案例干货,记得关注。 地址:aHR0cHM6Ly9jaGVqaWFoYW8uYXV0b2hvbWUuY29tLmNuL0F1dGhvcnMjcHZhcmVhaWQ9MjgwODEwNA== 需求:获取汽车之家车家号数据 笔者将在正文中介绍详细的思路以及采集方法,废话不多说,跟着笔者直接往…

Spring Boot自动配置原理、实战、手撕自动装配源码

Spring Boot自动配置原理 相比较于传统的 Spring 应用,搭建一个 SpringBoot 应用,我们只需要引入一个注解 SpringBootApplication,就可以成功运行。 前面四个不用说,是定义一个注解所必须的,关键就在于后面三个注解&a…

竞赛选题 深度学习猫狗分类 - python opencv cnn

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习猫狗分类 ** 该项目较为新颖&a…