【ESP-Matter】matter协议学习笔记--以乐鑫方案为例

2023-11-07

0. 写在前边的话

以下学习笔记均参考乐鑫官方给出的 esp_matter 方案;
主要包括matter基本概念,设备间的监护、设备桥接、thread边界路由器等

关于乐鑫 esp-matter 方案,自己的环境搭建以及测试过程见以下两篇博文:

【ESP32-Matter】基于 Matter 协议的 esp32-c3 开发板通讯测试过程

【ESP32-Matter】基于matter协议 chip-tool 控制 esp32-c3 开发板点灯

1. matter 协议基本概念

参考资料:【智能家居互联标准 Matter 的数据模型】

matter node:节点,灯泡类设备

–-> endpoints0 ,端点0,保留

–-> endpoints1 ,端点1,可以调节亮度的灯泡设备

​ –> cluster1: on、off

attribute

command

–-> endpoints2 , 端点2,只能开关的灯泡设备

​ –> cluster2: 灯的亮度

attribute

command

–-> endpointsx ,端点x,xxxx

image-20221226160006895

可调光灯泡作为一个 endpoint,是服务端,一个遥控器或者手机App都可以作为客户端控制服务端。

image-20221226160959432

2. 设备间的本地自动化交互

每个 cluster 都有一个 cluster 服务器及其对应的客户端, Matter 设备之间的通信实际上就是 Cluster 服务器和客户端之间的通信。终端用户可以配置家中的 Matter 设备,使其与一个或多个设备进行交互。比如,通过matter手机APP绑定多个要控制的设备。

image-20221226161823791

2.1 同步控制的实例:

image-20221226163612082

手机APP向开关发送绑定指令—命令开关和灯泡绑定

开关和灯泡绑定后,二者建立通信链路

用户使用手机对开关操作,开关就会操作灯泡的开关

若一个通过一个 Dimmer Switch(调光器开关)控制一个 Dimmable Light(可调光灯泡),则需要再部署一个 Level Control Cluster 客户端

2.2 异步通知(订阅、报告)

image-20221226163803044

用户需要将恒温器与传感器绑定

恒温器订阅传感器的 Attribute,并定期或在传感器 Attribute 变化时,接收来自传感器的数据

当传感器的数据发生变化时,可以触发恒温器进行一系列操作

3. 桥接设备

matter fabric:即同一安全域下的 Node 集合,在该安全域下 Node 能够彼此认证建立安全通信。 一个 Fabric 共享同一证书机构(Certificate Authority (CA)) 的根证书(Root of Trust),同时约定一个 Fabric ID。

参考资料:【Matter 系列之 Fabric】 【Matter 系列之 Commissioning

一个生态可以描述一个 Fabric,如上的 Google Fabric。一个设备可以同时加入多个 Fabric,也就是同时被多个生态使用,取决于设备能力。

image-20221227083357565

【桥接设备】

如下,Matter-Zigbee 桥接设备可以让两个 Zigbee 灯泡加入 Matter 生态系统

image-20221227092144667

Matter 桥接设备除了充当协议“翻译”外,还可以具有 Matter 原生功能:比如一个智能恒温器设备既可以作为桥接设备,完成 Zigbee 等协议与 Matter 生态的通信,也可以同时作为一个标准的 Matter 智能恒温器设备,通过 Matter 协议向暖通系统发送控制指令。

桥接过程解释:给出一个例子,一个ZigBee 设备 ,加入matter网络,实现被matter APP 控制。

matter 生态 桥接设备 非matter网路

matter fabric bridge ZigBee network

  • 第一步,matter 桥接设备遵循matter配网流程,桥接设备首先加入matter网络
  • 第二步,桥接设备加入ZigBee网络,注意,桥接设备加入不同的网络是根据不同厂商定义的不同的网络加入方式
  • 第三步,桥接设备成功加入ZigBee 和 matter 网络后,在ZigBee网络中广播消息来发现ZigBee网络中的设备,比如:谁是OnOff灯泡?ZigBee网络中满足条件的设备会给出response,并回复自己的网络地址,桥接设备将为每一个匹配的 Zigbee 设备添加一个动态端点,使其作为被桥接设备加入 Matter 网络。
  • 第四步,matter 系统会根据matter协议中的设备发现机制发现桥接设备
  • 第五步,通过以上四步之后,matter APP 就可以在桥接设备的过渡下,控制ZigBee网络中的灯泡了

4. thread 边界路由器

参考:【Matter 中的 Thread 边界路由器】

matter 协议拓扑结构:

image-20221227094302996

thread 边界路由器:在 wifi 网络和 thread 网络之间转发IP帧。只需专注于IP层通信,无需关注应用层数据

5. 专业名词

参考:【matter设备调试(Device Commissioning):】

Device Commissioning:设备调试

Commissionee:被调试的设备

Commissioner:调试专员,管理设备调试的设备

【基本概念与专业英文词汇】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ESP-Matter】matter协议学习笔记--以乐鑫方案为例 的相关文章

  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • Ubuntu 12.04 上的 PHP 从 5.3 升级到 php 5.6

    我正在按照本教程将 php 从版本 5 3 升级到 5 6 http phpave com upgrade php 53 to php 56 on ubuntu 1204 lts http phpave com upgrade php 53
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • 如何使用AWK脚本检查表的所有列数据类型? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在这里 我正在检查表中第一列的数据类型 但我想知道AWK中表的所有列数据类型 我尝试过 但只能获得一列数据类型 例如 Column 1
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • gentoo crontab:为什么这个简单的 crontab 不起作用?

    我使用 GENTOO 发行版 crontab e 35 12 root php5 home www cron php 当我手动运行时 php5 php5 home www cron php 这有效 它向我发送了一封电子邮件 然后我检查日期
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • 伪分布式模式下的 Hadoop。连接被拒绝

    P S 请不要将此标记为重复 Hi 我一直在尝试以伪分布式模式设置和运行 Hadoop 当我运行 start all sh 脚本时 我得到以下输出 starting namenode logging to home raveesh Hado
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何

随机推荐

  • 如何使用Aiseesoft Mac Video Enhancer让视频更加清晰

    Aiseesoft Mac它可以让视频更加清晰 并在Mac上旋转侧向视频以纠正角度 它还允许您使用提供的裁剪 剪裁和水印功能编辑视频 小编来教您如何使用Aiseesoft Mac Video Enhancer让视频更加清晰 1 在Mac上添
  • MySQL主从复制详解

    文章目录 1 简介 1 1 应用场景 1 2 复制形式 2 复制原理 3 复制类型 3 1 异步复制 3 2 同步复制 3 3 半同步复制 4 复制方式 4 1 语句复制 Statement格式 4 2 行数据复制 Row格式 4 3 混合
  • 3.Elasticsearch基础操作

    介绍ES的基本操作 如创建索引 mappings doc的一些基本操作 在doc操作中将分别介绍查询单条数据和多条数据 通过DSL的方式和JAVA api的方式体现 3 1 索引操作 索引操作是一种很危险的操作 索引就像相当于关系型数据库的
  • 浅浅谈Canvas和SVG的区别

    1 Canvas Canvas 中文名称叫 画布 它是游戏中所有UI组件的 容器 一个场景中 可以允许多个Canvas对象的存在 还允许Canvas之间可以进行 嵌套 使用 需要注意的是 场景中的任何一个UI对象 都肯定是某个Canvas对
  • idea web项目中java程序的配置文件放在resources目录下,但是读取不到配置文件

    每个人遇到的情况可能不一样 这个问题困扰我一天多 最后才发现是用错了加载器 可能是同样的加载器调用的方法不一样作用也不一样吧 直接获取系统类加载器 当使用系统类加载器加载配置文件时报空指针异常 当时没考虑到加载器问题 一味的修改路径 绝对路
  • 层次分析法(附代码)

    层次分析法 The Analytic Hierarchy Process即AHP 是一种系统分析与决策的综合评价方法 其较合理地解决了定性问题定量化的处理过程 AHP的主要特点是通过建立递阶层次结构 把人类的判断转化到若干因素两两之间重要度
  • 最新服务器处理器天梯,服务器cpu天梯图2020 至强处理器天梯排名

    排名名称评分 1Intel Xeon Platinum 8173M 2 00GHz28 860 2Intel Xeon Gold 6154 3 00GHz27 722 3Intel Xeon Gold 6138 2 00GHz25 416
  • 判断环形链表及寻找入环口问题详解

    文章目录 一 判断环形链表 1 1 题目描述 1 2 题解详细思路与解答 二 找环形链表的入环点 2 1 题目描述 2 2 题解思路 2 2 1 为什么快指针每次走两步 慢指针走一步可以 2 2 2 快指针一次走3步 走4步 n步行吗 2
  • start.S文件分析

    S 显示源代码和反汇编代码 arm linux objdump S u boot arm linux objdump S u boot less 34800000 是这句代码的内存地址 是在Makefile中定义的 ea000014 将该汇
  • 错误:类 xxx 是公共的, 应在名为 xxx.java 的文件中声明

    此错误是因为类名和类文件名不一致造成的 我之前遇到是因为类名书写没有遵循驼峰规则 于是改了一下类名 但是类文件名没有改 启动项目时报错
  • Android Studio 之 Gradle与Project Structure详解

    http blog sina com cn s blog 77d5a0310102vhw1 html
  • 独角访谈

    1 序言 从比特币和区块链诞生的那天起 去中心化这个词就进入了大家的视野 技术极客们也纷纷开始研究这一开创性的技术及其应用 其中包括开发去中心化的数字货币交易所 然而这种交易所目前还未被大众熟知 原因有很多 比如大家目前还不够理解区块链技术
  • 时间控件里面禁选国家节假日期和双休,将其置灰

    继上篇文章 两个日期之间计算节假日 根据项目需要 对时间的选择进行约束 只能选择工作日 还是之前笨办法取到2018年和2019年的所有节假日 在计算属性中新增方法 判断是否是节假日 返回true和false 然后在时间控件中引用就可以了 看
  • 步道乐跑怎么刷次数_大事件

    别看了 没有方法 好好跑步锻炼身体才是硬道理 校会君很认真地建议大家好好跑步道乐跑哟 理由如下 没有看错 你的目标的确是80次 准备好了吗 再擦几次眼睛也没有用 女生的里程数确确实实是增加到了1 6公里 每天可以跑两次了 不过校会君觉得你应
  • Warning: Your Nexus 7 Tablet Is Not Actually a "Tablet" (But Here's How You Make It One)

    If the Nexus 7 wasn t your first Android tablet you may have noticed something different with the user interface when co
  • 将一个项目发布到Tomcat上并进行运行

    1 下载任意版本的Tomcat 我这里是9的版本 应该是当前我认为比较好用的一个版本了 有需要的话可以到公众号自取 微信公众号搜索 是短短吖 后台回复 Tomcat 即可 2 在webapp下部署一个项目Test 名字自选 英文即可 新建项
  • Python爬虫入门3:使用google浏览器获取网站访问的http信息

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 开启开发者工具 为了简单处理 本次介绍的内容是基于网站已经登录的情况下去获取网页访问的http信息 首先需要使用谷歌浏览器登录指定网站 并访问
  • 分治法时间复杂度求解:主定理、代换法和递归树

    分治策略 分解 将原问题划分成形式相同的子问题 规模可以不等 对半或2 3对1 3的划分 解决 对于子问题的解决 很明显 采用的是递归求解的方式 如果子问题足够小了 就停止递归 直接求解 合并 将子问题的解合并成原问题的解 这里引出了一个如
  • error: DIV usage mismatch between xx and output

    使用NDK编译代码的时候 常常需要导入预编译库 然而使用预编译库的时候报错了 因为库文件是android源码编译出来或者是其他NDK版本产生的 库版本存在了不兼容的情况 这里明显看出DIV 函数不兼容 home u android ndk
  • 【ESP-Matter】matter协议学习笔记--以乐鑫方案为例

    matter协议学习笔记 以乐鑫方案为例 0 写在前边的话 1 matter 协议基本概念 2 设备间的本地自动化交互 2 1 同步控制的实例 2 2 异步通知 订阅 报告 3 桥接设备 4 thread 边界路由器 5 专业名词 0 写在