文章目录

  • 使用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

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

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

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

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

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                                                            |+-------------------------------------------------------------------------------------+

  • 有关具体其他命令和使用方法详见 : 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.shEPS_MATTER_PATH="/home/kurisaw/Desktop/esp/esp-gitee-tools/esp-matter"if [ $1 -eq 1 ]; thenexport IDF_PATH="/home/kurisaw/Desktop/esp/esp-gitee-tools/esp-idf" source /home/kurisaw/Desktop/esp/esp-gitee-tools/esp-idf/export.shsource $EPS_MATTER_PATH/export.shexport IDF_CCACHE_ENABLE=1echo "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+]关闭设备串口调试

注意:某些用户可能必须在设备出现在 /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

  • 调试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

如果未运行,请执行:

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

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

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

  • step6:BLE调试,回到终端2,执行如下命令
cd esp-matter/connectedhomeip/connectedhomeipout/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 密码,同样是字符串或十六进制数据

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

  • 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需要和前面保持一致

CHIP TOOL基于BLE调试完整过程

matter_record


参考

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

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

  1. Esp32 C3 Arduino 串口开发(1)

    网上合宙的esp32 C3 的测试版 9.9元,简洁小巧,用于学习测试非常方便.原来是装的Luatos,可以直接用Arduino开发.Arduino安装的为最新版 V2.00RC8,有点类似 vSco ...

  2. Arduino IDE ESP32 C3 “Some indexes could not be updated.”错误

    过程 最近用XIAO ESP32 C3的板子做个小项目,使用Arduino IDE进行开发,在按照文档步骤,在File\Perference\Additional Board Manager URLs ...

  3. 【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏

    实验使用的硬件,软件平台使用Arduino IDE(见<[花雕体验]15 尝试搭建Beetle ESP32 C3之Arduino开发环境>) WS2812B 是一个集控制电路与发光电路于一 ...

  4. Matter (CHIP) 从入门到入土 (一)

    文章目录 前言 架构 规范 网络拓扑结构 Single network Star network topology matter 设备发现 using BLE using WIFI Using Exi ...

  5. 【PBL项目实战】户外智慧农场项目实战系列之4——Mind+Mixly双平台ESP32数据上云及云端可视化实时展示

    [PBL项目实战]户外智慧农场项目实战系列之4--Mind+Mixly双平台ESP32数据上云及云端可视化实时展示 原文链接  https://mp.weixin.qq.com/s/r_NeJdPoi ...

  6. ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏

    ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏 材料 硬件连接 引脚连接表 引脚连接图 安装TFT_eS ...

  7. ubuntu16.04上搭建stm32f4开发环境

    ubuntu16.04上搭建stm32f4开发环境 工程源码的地址 https://github.com/txson/ubuntu-stm32 欢迎大家参与修改 搭建交叉编译环境 stm32 属于ar ...

  8. Matter 研讨会(第二期)|乐鑫 Matter SDK 赋能客户自主开发 Matter 产品

    8 月 25 日,乐鑫举办了以"乐鑫一站式 Matter 解决方案"为主题的首期 Matter 线上研讨会,分别介绍了乐鑫全功能 Matter 设备平台方案.乐鑫 Matter S ...

  9. 在CentOS 6.2上搭建vim开发环境

    在CentOS 6.2上搭建vim开发环境 最后更新日期:2013-07-05 1.首先使用Ubuntu(所在ip为192.168.16.230)翻墙登陆http://www.vim.org/,下载其 ...

  10. 如何在Windows上做Python开发?微软出了官方教程(附链接)

    来源:机器之心 本文附教程,建议阅读5分钟. 本文为你分享微软最近发布的关于在Windows上做Python开发的一系列官方教程. 在Windows上做Python开发太痛苦?微软最近发布了一系列官方 ...

最新文章

  1. 一文带你看懂Spring事务!
  2. DQL查询语句约束数据库设计备份和还原
  3. SEO之HTML代码优化
  4. CTFshow 命令执行 web75
  5. 初步估算轴直径2017-12-13
  6. python累积和_python – 如何维持累积总和?
  7. [网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含缺陷复现及防御措施(CVE-2018-12613)
  8. A4Desk 网站破解
  9. 11gR2 RAC时间同异常导致节点down掉问题处理
  10. 简洁大气带进度条的URL跳转页面HTML源码
  11. 思维革命:交换两个变量的值
  12. 台湾大学生来厦门参访交流
  13. 一些and知识 和ui
  14. CentOS 7.6 配置VNC远程访问服务器图形界面
  15. Java时间格式转换输出实现代码示例
  16. 论文笔记:针对盲化的 RSA算法的水平聚类侧信道攻击
  17. 5.1 Lilypond五线谱
  18. 架构整洁之道 (Clean Architecture )与领域模型与领域驱动设计(DDD)
  19. Mathtype部分符号打不上去或部分符号点击后停止工作
  20. 挂代理后git依然无法XXX

热门文章

  1. 中国传媒大学计算机课程表,中国传媒大学新闻学院课程表
  2. ss-1.curl (cloud-provider-payment8001)
  3. 微信支付统一下单与支付成功回调
  4. 镁铸件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. (附源码)计算机毕业设计JavaJava毕设项目自行车在线租赁管理系统2021
  6. 大学生计算机作业求职自荐书,计算机专业大学生求职自荐信500字.doc
  7. linux运行star,star命令_Linux star命令使用详解:与tar相关的命令
  8. Mybatis源码细节探究:二级缓存Cache对象是在什么时候创建的?
  9. 地铁订票系统(数据结构课设)
  10. 2019辽宁公务员考试:特值技巧在手,行测高分在望