【Matter】使用chip tool在ESP32-C3上进行matter开发

文章目录

  • 使用chip tool在ESP32-C3上进行matter开发
    • 前提准备
    • 编译 chip-tool
      • 1.激活esp-matter环境
      • 2.编译matter所需环境
      • 3.构建CHIP TOOL
    • chip-tool client 调试设备说明
      • 1.基于 BLE 调试
      • 2.通过IP与设备配对
      • 3.Trust store
      • 4.忘记当前委托的设备
    • 使用chip-tool点灯
      • 1.matter环境激活
      • 2.固件烧录
      • 3.项目调试
    • CHIP TOOL基于BLE调试完整过程
    • 参考

使用chip tool在ESP32-C3上进行matter开发


前提准备

  • 请确保你已经能够完成在esp-matter下的应用程序的烧录及串口监视,可参考此博客【Matter】esp-matter环境下的应用实践(程序烧录及串口监视)

  • ubuntu最好使用20以上的版本,因为matter最低需要python3.8的环境

  • PC机需要支持蓝牙4.0及以上版本,如果没有的话需要购买一个USB蓝牙适配器,而且需要支持Linux,可以参考购买这款蓝牙适配器

编译 chip-tool

1.激活esp-matter环境

cd esp-idf
. ./export.sh
cd esp-matter 
. ./export.sh

2.编译matter所需环境

  • step1:首先安装编译所需的依赖包:
sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev
  • step2:切换到 /matter/connectedhomeip/connectedhomeip 目录下,编译matter环境(如果没显示环境过期,这一步可跳过)
# 运行引导程序,该脚本负责下载 GN、ninja,并使用用于构建和测试的库设置 Python 环境。如果此脚本显示环境已过期,则可以通过运行以下命令进行更新

source scripts/bootstrap.sh

对于 MacOS,gdbguipython 包不会使用bootstrap.sh 脚本安装,因为它仅限于 x64 Linux 平台。它受到限制,因为在 MacOS 上为gevent(依赖于gdbgui)构建轮子失败。

对于ARM-based Mac,如果Python3版本大于或等于3.11,则不需要进一步的安装步骤。

如果 Python3 版本低于 3.11 或者您使用的是 x86(基于英特尔)Mac,那么请在每次引导后运行以下命令以将 gdbgui wheels 安装为二进制文件

python3 -m pip install -c scripts/setup/constraints.txt --no-cache --prefer-binary gdbgui==0.13.2.0
deactivate
  • step3:激活编译matter环境
source scripts/activate.sh
  • step4:启用 Ccache 以加快 IDF 构建速度
$ export IDF_CCACHE_ENABLE=1

3.构建CHIP TOOL

~/esp/esp-matter/connectedhomeip/connectedhomeip目录下,执行命令

./gn_build.sh

image-20230504173815084

执行完之后,会在根目录下生成 out/debug/standalone/chip-tool一个二进制文件。

image-20230504174038993

如果上述命令:./gn_build.sh执行失败,也可以执行如下命令:

scripts/examples/gn_build_example.sh examples/chip-tool SOME-PATH/

image-20230504175634584

执行完毕后,在以下路径 connetedhomeip/connectedhomeip/SOME-PATH也可以发现生成了 chip-tool 工具

image-20230504175700807

chip-tool client 调试设备说明

为了向设备发送命令,必须使用客户端对其进行调试。芯片工具目前一次只支持调试和记忆一个设备。配置状态存储在/tmp/chip_tool_config.ini中;

另外删除/tmp中的此文件和其他.ini文件有时可以解决由于过时配置导致的问题。

# 获取受支持集群的列表

Usage:
  ./chip-tool cluster_name command_name [param1 param2 ...]

  +-------------------------------------------------------------------------------------+
  | Clusters:                                                                           |
  +-------------------------------------------------------------------------------------+
  | * barriercontrol                                                                    |
  | * basic                                                                             |
  | * colorcontrol                                                                      |
  | * doorlock                                                                          |
  | * groups                                                                            |
  | * iaszone                                                                           |
  | * identify                                                                          |
  | * levelcontrol                                                                      |
  | * onoff                                                                             |
  | * pairing                                                                           |
  | * payload                                                                           |
  | * scenes                                                                            |
  | * temperaturemeasurement                                                            |
  +-------------------------------------------------------------------------------------+

image-20230504180042312

  • 有关具体其他命令和使用方法详见 : https://github.com/project-chip/connectedhomeip/tree/v1.0-branch/examples/chip-tool

要向设备发起客户端调试请求,需要运行构建的可执行文件并选择配对模式,具体操作如下:

1.基于 BLE 调试

运行构建的可执行文件并将远程设备的鉴别器和配对代码以及要使用的网络凭据传递给它。下面的命令使用硬编码到 ESP32 all-clusters-app 调试版本中的默认值来将其调试到 Wi-Fi 网络:

chip-tool pairing ble-wifi ${NODE_ID_TO_ASSIGN} ${SSID} ${PASSWORD} 20202021 3840
  • ${NODE_ID_TO_ASSIGN}(必须是十进制数或0x- 前缀的十六进制数)是要分配给正在调试的节点的节点 ID。
  • ${SSID} 是 Wi-Fi SSID 可以是字符串,也可以是hex:XXXXXXXX SSID 的字节被编码为两位十六进制数字的形式。
  • ${PASSWORD} 是 Wi-Fi 密码,同样是字符串或十六进制数据
# 例如
chip-tool pairing ble-wifi 0x7283 jetbot jetbotwyq 202021 3840

2.通过IP与设备配对

下面的命令将发现设备并尝试使用提供的设置代码与它发现的第一个设备配对。

chip-tool pairing onnetwork ${NODE_ID_TO_ASSIGN} 20202021

下面的命令将发现具有长鉴别器 3840 的设备,并尝试使用提供的设置代码与它发现的第一个设备配对。

chip-tool pairing onnetwork-long ${NODE_ID_TO_ASSIGN} 20202021 3840

下面的命令将根据给定的二维码(哪些设备在启动时记录)发现设备,并尝试与它发现的第一个配对。

chip-tool pairing code ${NODE_ID_TO_ASSIGN} MT:#######

在所有这些情况下,将为设备分配节点 ID ${NODE_ID_TO_ASSIGN} (必须是十进制数或以 0x 为前缀的十六进制数)。

3.Trust store

Trust store 将使用默认的 Test Attestation PAA 自动创建。要使用不同的 PAA 集,请在运行构建的可执行文件时使用可选参数 --paa-trust-store-path 传递路径。受信任的 PAA 位于 credentials/development/paa-root-certs/。

下面的命令将选择一组受信任的 PAA,以在证明验证期间使用。它还会发现具有长鉴别器 3840 的设备,并尝试使用提供的设置代码与它发现的第一个设备配对。

chip-tool pairing onnetwork-long ${NODE_ID_TO_ASSIGN} 20202021 3840 --paa-trust-store-path path/to/PAAs

4.忘记当前委托的设备

chip-tool pairing unpair

使用chip-tool点灯

1.matter环境激活

由于每次配置的 esp-idf 和 esp-matter 环境激活仅在当前终端有效,这里我们编写一个脚本文件,每次打开一个终端执行此脚本即可完成matter环境的激活:

  • step1:新建一个名为 matter.sh 的脚本文件
vi matter.sh
  • step2:复制以下内容到 matter.sh
#/bin/bash
# matter.sh

EPS_MATTER_PATH="/home/kurisaw/Desktop/esp/esp-gitee-tools/esp-matter"

if [ $1 -eq 1 ]; then
    export IDF_PATH="/home/kurisaw/Desktop/esp/esp-gitee-tools/esp-idf" 
    source /home/kurisaw/Desktop/esp/esp-gitee-tools/esp-idf/export.sh
    source $EPS_MATTER_PATH/export.sh
    export IDF_CCACHE_ENABLE=1
    
    echo "enter matter dir"
    cd $EPS_MATTER_PATH
fi
  • step3:执行脚本以激活 matter 环境
source matter.sh 1

2.固件烧录

  • 打开一个新的终端1,进入示例目录设置并编译烧写到评估板运行
cd ./esp/esp-matter/examples/light
  • 设置要构建的 Matter 目标
  • 目前所有示例应用程序都支持目标芯片:esp32、esp32s3、esp32c3,一般仅需要使用 命令1 即可。需要注意的是:如果你使用的设备为ESP32H2,而ESP32H2 仅在 lighting-app 中支持,执行 命令2 将其设置为目标
# 命令1,通用命令,ESP32H2请执行命令2
idf.py set-target (target chip)

# 命令2,ESP32H2专用命令
idf.py --preview set-target esp32h2

这里我使用的是 ESP32C3,所以执行以下命令即可

idf.py set-target esp32c3
  • 配置选项(可遵循默认配置即可,非特定配置可跳过这一步)

构建特定配置(示例m5stack):

rm sdkconfig
idf.py -D 'SDKCONFIG_DEFAULTS=sdkconfig_m5stack.defaults' build

注意:如果使用特定的设备配置,强烈建议从默认设置之一开始并在此基础上进行自定义。某些配置具有在设备特定配置中自定义的不同约束(例如:主应用程序堆栈大小)。

要自定义配置,请运行 menuconfig,在菜单中可完成自定义配置:

idf.py menuconfig
  • 构建应用程序
idf.py build
  • 擦除Flash

构建应用程序后,要通过 USB 连接您的设备来闪擦除它。然后运行以下命令擦除整个闪存,将演示应用程序闪存到设备上,然后监控其输出。

请注意,有时您可能必须在设备尝试连接时按住设备上的启动按钮,然后才能刷机。对于 ESP32-DevKitC 设备,这在functional description diagram中有所提及。

idf.py -p (PORT) erase_flash
idf.py -p (PORT) flash monitor

请替换(PORT)为您系统的正确 USB 设备名称(如/dev/ttyUSB0在 Linux 或/dev/tty.usbserial-101Mac 上)。

查看USB设备,esp32c3设备名为 ttyUSB0,因此执行以下命令 :

idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash monitor
  • 注意此时的设备串口终端1暂时先不关闭,后面可使用CTRL+]关闭设备串口调试

image-20230530173001926

注意:某些用户可能必须在设备出现在 /dev/tty 之前安装VCP 驱动程序。

提示:在监视器运行时,您可以通过按 Ctrl+t Ctrl+h 来查看各种监视器命令的菜单。

3.项目调试

以下四种方式可以用于调试在ESP32上运行应用程序:

  • Python Based Device Controller
  • Standalone chip-tool
  • iOS chip-tool App
  • Android chip-tool App

注:这里使用 Standalone chip-tool进行项目调试

打开一个新的终端2,我们需要运行构建的可执行文件并将远程设备的鉴别器和配对代码以及要使用的网络凭据传递给它,执行命令:

cd esp-matter/connectedhomeip/connectedhomeip

# 激活matter环境
source scripts/activate.sh

image-20230530172301207

  • 调试WIFI设备(ESP32、ESP32C3、ESP32S3)

如果你使用的是Thread设备(ESPH2)或以太网设备(ESP32-Ethernet-Kit),设备调试具体可以查看此链接

执行下面命令将 matter 设备接入现有现有IP网络,这里我们基于BLE调试

需要注意的是,你需要确保你的 Linux 蓝牙可用,如果是使用虚拟机的话需要考虑购买一个蓝牙适配器,可参考这个购买链接

接下来请按照我的步骤一步步执行:

  • step1:安装 blueman 软件
sudo apt install blueman #安装blueman软件
sudo /etc/init.d/bluetooth restart  # 重启blueman服务
  • step2:确保你的蓝牙状态处于激活状态
# 查看蓝牙状态

sudo systemctl status bluetooth

7e8b531f8b4be994ed272cf2e69703c

如果未运行,请执行:

sudo systemctl enable bluetooth
sudo systemctl start bluetooth
  • step3:确认蓝牙适配器已经被识别并启用
hciconfig -a

LRHC%H77T8AU FZ_V$F@(Q6

根据提示信息我们可以得知我的蓝牙适配器名为"hci0",并且状态为 “DOWN”,因此我们需要启用该蓝牙适配器。

  • step4:启用蓝牙适配器
sudo hciconfig hci0 up
  • step5:为了让 matter 设备连接蓝牙网络,我们需要让蓝牙适配器在任何时候可见,点击右上角的蓝牙图标,点击Adapters...--->Visibility Setting--->Always visible,这一步很关键,每次基于 BLE 调试都需要检查这一步!!

image-20230530174457873

  • step6:BLE调试,回到终端2,执行如下命令
cd esp-matter/connectedhomeip/connectedhomeip
    
out/debug/chip-tool pairing ble-wifi 0x7283 jetbot jetbotwyq 20202021 3840

注意:本机ip和matter设备ip必须在同一局域网下

  • 0x7283(必须是十进制数或0x- 前缀的十六进制数)是要分配给正在调试的节点的节点 ID,随意填写即可。
  • jetbot 是 Wi-Fi SSID 可以是字符串,也可以是hex:XXXXXXXX SSID 的字节被编码为两位十六进制数字的形式。
  • jetbotwyq 是 Wi-Fi 密码,同样是字符串或十六进制数据

image-20230530175437844

终端1我们可以看到相关的ip信息:

image-20230530175633102

  • step7:利用 chip tool 控制LED开关
# open led
out/debug/chip-tool onoff on 0x7896 0x1
# close led
out/debug/chip-tool onoff off 0x7896 0x1

这里的节点ID:0x7896需要和前面保持一致

cd20c5fede056bf65b089da69ab9f3a

f40b925710de89f66bf9ecf7ef27d7e

CHIP TOOL基于BLE调试完整过程

matter_record


参考

  • CHIP Reference
  • Setup ESP-IDF and CHIP Environment
  • building and commissioning

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

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

相关文章

linuxOPS基础_Linux系统的文件目录结构及用途

linux系统文件目录结构 Linux 系统不同于 Windows,没有 C 盘、D 盘、E 盘那么多的盘符,只有一个根目录(/),所有的文件(资源)都存储在以根目录(/)为树根的树形目录结构中…

【大数据之Hive】四、配置Hive元数据存储到MySQL

需求:   把Hive元数据写道MySQL的metastore数据库中(MySQL默认没有metastore数据库,需要提前创建:create database metastore;)   连接地址:jdbc:mysql//hadoop102:3306/metastore   驱动&#xff1a…

什么是SOAP

什么是SOAP 什么是SOAP? SOAP (Simple Object Access Protocol) 是一种基于XML的通信协议,用于在网络上交换结构化的信息。它被广泛用于分布式系统中的应用程序间通信。 SOAP定义了一组规范,描述了消息的格式、通信的方式和处理消息的过程。它允许应…

第四章 程序的控制结构

文章目录 第四章 程序的控制结构4.1 程序的三种控制结构4.1.1 程序流程图4.1.2 程序控制结构基础4.1.3 程序控制结构扩展 4.2 程序的多分支结构4.2.1 单分支结构:if4.2.2 二分支结构:if-else4.2.3 多分支结构:if-elif-else4.2.4 判断条件及组…

图及其与图相关的算法

⭐️前言⭐️ 本篇文章主要介绍图及其与图相关的算法 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉博客中涉及源码及博主…

智慧档案馆八防是怎么建设的?都需要注意哪些内容

智慧档案馆八防环境监控系统一体化解决系统方案 智慧档案库房一体化平台通过智慧档案管理,实现智慧档案感知协同处置功能;实现对档案实体的智能化识别、定位、跟踪监控;实现对档案至智能密集架、空气恒湿净化一体设备、安防设备&#xff0c…

Linux守护进程

守护进程 Linux/Unix 会话 会话首进程 进程组 组长进程:第一个启动的进程叫组长进程。 关闭终端:进程组里全部进程关闭。 setsid()创建一个新的会话。(必须是组员进程才可以创建一个新的会话) 1.先fork(),退出父进程 2…

电力系统的虚假数据注入攻击和MTD系统研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

字符串最后一个单词的长度

描述 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾) 输入描述: 输入一行,代表要计算的字符串,非空,长度小于500…

mysql触发器监听数据投递中间件

目前市面上有许多的 CDC(Change Data Capture) 框架用于监听数据库的数据变动,例如:canal、Debezium、Maxwell等都是用来解析 binlog 日志实现事件的监听。但是有一个情况就是如果公司对 binlog 日志文件的权限管控的很严格&#…

【学习日记2023.6.2】之 管理端报表统计

文章目录 11. 管理端报表统计11.1 Apache ECharts11.1.1 介绍11.1.2 入门案例 11.2 营业额统计11.2.1 需求分析和设计11.2.2 代码开发Controller层Service层接口Service层实现类Mapper层 11.2.3 功能测试11.2.4 提交代码 11.3 用户统计11.3.1 需求分析和设计11.3.2 代码开发Con…

如何编写接口自动化框架系列通过yaml来管理测试用例(四)

本文是接口自动化测试框架系列篇的第四篇 ,主要介绍yaml包的使用 。自动化测试的本质是将功能测试用例交给代码去 目录 1. yaml介绍? 2.python中的yaml包 3.项目中使用yaml包 4 项目总结 执行 ,测试人员往往是在自动化框架添加对应的测试…

排查Javascript内存泄漏案例(一)

Chrome DevTools里的Performance面板和Memory面板可以用来定位内存问题。 如何判断应用发生内存泄漏? 为了证明螃蟹的听觉在腿上,一个专家捉了只螃蟹并冲它大吼,螃蟹很快就跑了。然后捉回来再冲它吼,螃蟹又跑了。最后专家把螃蟹的…

WPS 借助 ML Kit 无缝翻译 43 种语言,每年净省 6,500 万美元

△ 动画说明: 在笔记本电脑屏幕中,汉字 "文" 将变为字母 "A",代表文本的横线将逐一出现,就像有人在输入内容一样。 WPS 是一款办公套件软件,可让用户轻松查看和编辑其所有文档、演示文稿、电子表格等。作为一…

RK3568 AP6275S蓝牙驱动程序调度过程

1、前言 今年3月份调度了RK3568驱动程序&#xff0c;当时由于时间的问题&#xff0c;AP6275S蓝牙驱动程序没有调试成功。当时仔细检查的设备树的配置。 wireless_bluetooth: wireless-bluetooth {compatible "bluetooth-platdata";clocks <&rk809 1>;cl…

JavaCV - 图像暗通道去雾

一、效果图 二、实现原理 暗通道先验:首先说在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值,也就是说该区域光强是一个很小的值。所以给暗通道下了个数学定义,对于任何输入的图像J,其暗通道可以用下面的公式来表示:其中JC表示彩色图像每个…

【Vue2.0源码学习】虚拟DOM篇-Vue中的DOM-优化更新子节点

1. 前言 在上一篇文章中&#xff0c;我们介绍了当新的VNode与旧的oldVNode都是元素节点并且都包含子节点时&#xff0c;Vue对子节点是 先外层循环newChildren数组&#xff0c;再内层循环oldChildren数组&#xff0c;每循环外层newChildren数组里的一个子节点&#xff0c;就去…

超100篇! VAD论文梳理汇总!

GitHub的一位博主整理了上百篇语音活动检测&#xff08;VAD&#xff09;的论文&#xff0c;按照其中使用的特征方法以及适用的环境进行了分类整理&#xff0c;时间跨度为从198*年至2019年。此外&#xff0c;还提供了几个VAD代码&#xff0c;它们的性能表现较好。需要的同学可以…

基于深度学习的高精度牙齿健康检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度牙齿健康检测识别系统可用于日常生活中检测牙齿健康状况&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的牙齿目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数…

Niagara—— System和Emitter节点

目录 一&#xff0c;发射器节点 Properties Emitter Spawn Emitter Update Particle Spawn Particle Update Renderer 二&#xff0c;系统节点 Properties System Spawn System Update Niagara是按照从上到下按顺序&#xff0c;依次执行模块Module&#xff08;可编程…