使用 Matter-SDK 快速搭建 Matter 环境 (Linux)

news2024/11/23 11:49:28

Matter 作为一个统一的智能家居互联协议,凭借其高兼容性的特点,正逐渐打破各个智能家居之间的壁垒。乐鑫作为在 Matter 项目发布之初的早期成员,提供了一套开源、完整、易用的 Matter-SDK。

乐鑫的 Matter-SDK 是建立在开源 Matter-SDK 之上的,它提供了简化的 API、常用的外设、安全、制造和生产工具以及详尽的文档支持。该 SDK 包括丰富的生产参考资料,旨在简化 Matter 产品的开发过程,使用户能够在最短的时间内投入生产。

您可以通过点击以下链接,进一步了解 Matter:

  • ESP-Matter 编程指南
  • ESP-Matter 示例代码
  • Connectedhomeip Github 项目
  • 乐鑫 Matter 系列文章

您可以观看下面的教程视频,也可以阅读本篇的图文教程。本文将详细介绍在 Linux 环境下,如何使用 Matter-SDK 完成 Matter 环境搭建。

【乐鑫教程】|使用 Matter-SDK 快速搭建 Matter 环境 (Linux)


搭建步骤:

1. 系统及设备环境

  • 操作系统:Ubuntu 22.04.3 LTS
  • 主机配置:具有蓝牙适配器
  • 网络:能流畅访问 Github 的网络环境
  • 测试芯片:ESP32-C3-MINI-1
  • 测试开发板:ESP32-C3-DevKitM-1 v1.0

ESP32-C3-DevKitM-1 v1.0

注:Ubuntu 版本应为 20.04 和 22.04,并且为主机开发。若使用虚拟机,在用 CHIP Tool 工具进行配网调试时会出现查找蓝牙设备失败或者无法进行调试的情况。

2. 安装准备

2.1 Matter 安装准备

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

安装过程具体请参考官方 Github 项目。

注:Windows 系统推荐使用 WSL 进行开发,详见官方 WSL 配置方法。

2.2 搭建 ESP-IDF 开发环境

Matter 的开发环境依赖于 ESP-IDF 开发环境,如果当前没有搭建 ESP-IDF 环境,请参考官方文档进行搭建,或者使用下面的指令进行快速搭建。

(1)安装 ESP-IDF 需要以下安装准备:

sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

(2)获取仓库,进行安装:

git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf; git checkout v5.1.1; git submodule update --init --recursive;
./install.sh
cd ..

3. 获取并安装 Matter

使用以下指令获取仓库,进行安装:

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

git clone --depth 1 https://github.com/espressif/esp-matter.git
cd esp-matter
git submodule update --init --depth 1
cd ./connectedhomeip/connectedhomeip
./scripts/checkout_submodules.py --platform esp32 linux --shallow
cd ../..
./install.sh
cd ..

4. 配置环境

当每一个新终端开启时,使用以下命令来配置 Matter 的开发环境:

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

您可以选择开启 Ccache 以提升编译速度:

export IDF_CCACHE_ENABLE=1

5. 编译 ESP-Matter 示例

进入 ESP-Matter Light 示例目录:

cd esp-matter/examples/light

开始编译示例,首先设置编译目标芯片平台(以 ESP32-C3 为例):

idf.py set-target esp32c3

在正式进行烧录之前,推荐先擦除整片 Flash,烧录并监控:

idf.py erase_flash

idf.py flash monitor

至此,如果编译没有报错,程序成功烧录进 ESP32-C3,并在终端界面显示正常的状态,则代表 Matter 环境已被成功搭建。

6. 对 Matter 设备进行配网与基本控制

首先,使用在交互模式下的 CHIP Tool 进行配网。先为配网开启一个新的终端,配置 Matter 的开发环境,并运行:

cd esp-idf; source ./export.sh; cd ..
cd esp-matter; source ./export.sh; cd ..
export IDF_CCACHE_ENABLE=1
chip-tool interactive start

对设备进行配网具有多种途径,这里我们使用 BLE Wi-Fi 的方式进行配网,复制如下指令:

pairing ble-wifi 0x7283 <ssid> <passphrase> 20202021 3840

在上述指令中,0x7283 是随机选取的节点 ID,20202021 是配对码,3840 是鉴别码,粘贴命令到终端,确保电脑与所填 Wi-Fi 在同一网络环境内,在 SSID 填入 Wi-Fi 名称,passphrase 填入密码。填写完成后的示例如下:

pairing ble-wifi 0x7283 Espressif password 20202021 3840

开始运行,等待一段时间,当监控设备的终端中出现以下日志时,即代表配网成功:

I (347065) app_main: Commissioning complete 

I (347065) esp_matter_core: Commissioning Complete

在配网完成后,我们尝试使用一个命令来对 ESP32-C3 开发板上的 RGB 灯进行控制,复制以下开关翻转的命令到 CHIP Tool 终端中运行:

onoff toggle 0x7283 0x1

在监控设备的终端中我们可以看到 Received command 相关日志:

I (122717) esp_matter_command: Received command 0x00000002 for endpoint 0x0001's cluster 0x00000006 

I (122717) esp_matter_attribute: ********** R : Endpoint 0x0001's Cluster 0x00000006's Attribute 0x00000000 is 1 ********** 

I (122727) chip[ZCL]: Toggle ep1 on/off from state 1 to 0

即代表收到了指令的请求,同时,我们也可以看到开发板上的 RGB 灯关闭了,再次运行,RGB 灯被点亮。

7. 常见问题及其解决方法

(1)idf.py erase_flash 时出现:

/dev/ttyUSB0 failed to connect: Could not open /dev/ttyUSB0, the port doesn't exist
Serial port /dev/ttyS0
/dev/ttyS0 failed to connect: Could not open /dev/ttyS0, the port doesn't exist
No serial ports found. Connect a device, or use '-p PORT' option to set a specific port.

解决方法:需要确保该用户对 USB 口拥有正确的读写权限。

sudo adduser <username> dialout sudo chmod a+rw /dev/ttyACM0

(2)git clone 时出错或速度过慢:

dial tcp 108.160.167.174:443: connect: connection refused

解决方法:需要确保用户拥有一个能流畅访问 Github 的网络。

(3)编译 Light 示例时报错,显示:

ERROR: This script was called from a virtual environment, can not create a virtual environment again

解决方法:使用如下指令进行编译。

pip install -r $IDF_PATH/requirements.txt

(4)在配网过程中并未出现如下提示:

I (347065) app_main: Commissioning complete 

I (347065) esp_matter_core: Commissioning Complete

解决方法:尝试重复进行配网操作。

(5)运行 idf.py 相关指令时显示:

idf.py: command not found

原因:开启新终端时未配置 Matter 环境。

解决方法:使用如下指令配置 Matter 环境。

cd esp-idf; source ./export.sh; cd .. 

cd esp-matter; source ./export.sh; cd ..

(6)Matter 安装过程中出现:

/home/User/esp/esp-matter/connectedhomeip/connectedhomeip/.environment/activate.sh:190: command not found: pw Error during bootstrap--see messages above.

解决方法:

git clean -Xdf
rm -rf connectedhomeip/connectedhomeop/.environmemt
source ./scripts/bootstrap.sh

(7)Matter 安装过程中出现:

raise CalledProcessError(retcode, cmd) 

subprocess.CalledProcessError: Command '['/home/share/samba/app/esp-matter/connectedhomeip/connectedhomeip/.environment/pigweed-venv/bin/python', '-m', 'pip', 'install', '--log', '/home/share/samba/app/esp-matter/connectedhomeip/connectedhomeip/.environment/pigweed-venv/pip-requirements.log', '--requirement=/home/share/samba/app/esp-matter/connectedhomeip/connectedhomeip/scripts/setup/requirements.txt', '--constraint=/home/share/samba/app/esp-matter/connectedhomeip/connectedhomeip/scripts/setup/constraints.txt']' returned non-zero exit status 1.

原因:python 3.10 版本中 pip 安装器的 bug 对 Matter 在 python 环境设置过程中的 pip 安装步骤产生了影响。

解决办法:将 python 3.10 切换至更低的版本,例如 3.8,再对 ESP-IDF 和 ESP-Matter 进行安装。


以上就是通过 Matter-SDK 完成 ESP-Matter 的环境搭建及测试的全过程。如果您有任何问题,可以进入乐鑫官网查看相关技术文档获取帮助,欢迎在评论区留言讨论,或随时联系我们。

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

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

相关文章

MySQL - order by排序查询 (查询操作 四)

功能介绍&#xff1a;order by&#xff1a;对查询结果进行排序&#xff0c;执行顺序在查询完结果执行&#xff08;比如where后&#xff09; 排序方式&#xff1a;ASC&#xff1a;升序&#xff08;默认&#xff0c;不用指定&#xff09; DESC&#xff1a;降序 语法&#x…

Android跨进程通信:Binder机制原理

目录 1. Binder到底是什么&#xff1f; 2. 知识储备 2.1 进程空间划分 2.2 进程隔离 & 跨进程通信&#xff08; IPC &#xff09; 2.3 内存映射 2.3.1 作用 2.3.2 实现过程 2.3.3 特点 2.3.4 应用场景 2.3.5 实例讲解 ① 文件读 / 写操作 ② 跨进程通信 3. Bi…

【Java 基础篇】Java 图书管理系统详解

介绍 图书管理系统是一种用于管理图书信息、借阅记录、用户信息等的软件系统。它可以帮助图书馆、书店或个人管理和组织图书资源&#xff0c;提供了方便的借阅和查询功能。在这篇博客中&#xff0c;我们将详细介绍如何使用Java编程语言创建一个简单的图书管理系统。 功能需求…

SpringMVC 学习(一)Servlet

1. Hello Servlet (1) 创建父工程 删除src文件夹 引入一些基本的依赖 <!--依赖--> <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test<…

大模型lora微调-chatglm2

通义千问大模型微调源码&#xff08;chatglm2 微调失败&#xff0c;训练通义千问成功&#xff09;&#xff1a;GitHub - hiyouga/LLaMA-Efficient-Tuning: Easy-to-use LLM fine-tuning framework (LLaMA-2, BLOOM, Falcon, Baichuan, Qwen, ChatGLM2)Easy-to-use LLM fine-tun…

STM32存储左右互搏 I2C总线读写FRAM MB85RC1M

STM32存储左右互搏 I2C总线读写FRAM MB85RC1M 在较低容量存储领域&#xff0c;除了EEPROM的使用&#xff0c;还有铁电存储器FRAM的使用&#xff0c;相对于EEPROM, 同样是非易失性存储单元&#xff0c;FRAM支持更高的访问速度&#xff0c; 其主要优点为没有EEPROM持续写操作跨页…

day06_循环

今日内容 零、 复习昨日 一、循环 二、流程控制关键词 零、 复习昨日 8个基本数据类型 变量的使用步骤 1)声明2)赋值3)使用 声明,数据类型 变量名 不一定非得是基本类型 int a; String s; Scanner scanner;赋值,只要符合类型(能默认转换)就能赋值 int a 1; double d 1; Scann…

uni-app问题记录

一、启动问题记录 1. 报错1 解决办法: 开启微信开发者工具服务端口 2. 报错2:调用getLocation获取位置信息时报错以下内容 {errMsg: “getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json”} 解决办法: manifest.json文…

到广阔的边缘市场去,浪潮信息首次发布全栈边缘计算软硬件新品

出品 | CSDN 云计算 智慧时代&#xff0c;一切皆计算&#xff0c;早已不再是一句口号。据国际研究机构 IDC 数据显示&#xff0c;2023 年超过 50%的企业新增 IT 基础设施会部署在边缘&#xff0c;而 Gartner 研究显示&#xff0c;到 2025 年&#xff0c;超过 75%的数据生成和数…

【ROS入门】使用 ROS 服务(Service)机制实现同步请求与答复

文章结构 任务要求话题模型实现步骤自定义srv定义srv文件编辑配置文件编译 自定义srv调用vscode配置编写服务端实现编写客户端实现 执行启动roscore编译启动客户端和服务端编译启动roscore启动节点 任务要求 编写代码实现 ROS 中的服务请求与答复: 创建服务端&#xff0c;注册…

vue中使用富文本编辑器,@tinymce/tinymce-vue

富文本就是在后台管理系统中常见的录入带格式的内容&#xff0c;如&#xff1a;表格&#xff0c;字体加粗&#xff0c;斜体&#xff0c;文字颜色等等&#xff0c;就像一个word一样。类似于这样的效果&#xff1a; 我们使用通用在线编辑器tinymce。支持vue和react。 1. 安装 np…

opencv形态学-腐蚀

opencv形态学-腐蚀 腐蚀就是取每一个位置结构元领域内最小值作为该位置的输出灰度值&#xff1b; 结构元有很多&#xff0c;一般采用矩形&#xff0c;圆 解析 下图左测是原始图片的灰阶&#xff0c;右边是经过3X3矩形腐蚀后的结果&#xff0c;我们拿19,44,99进行分析&#…

Flink CDC MySQL同步MySQL错误记录

1、启动 Flink SQL [appuserwhtpjfscpt01 flink-1.17.1]$ bin/sql-client.sh2、新建源表 问题1&#xff1a;Encountered “(” 处理方法&#xff1a;去掉int(11)&#xff0c;改为int Flink SQL> CREATE TABLE t_user ( > uid int(11) NOT NULL AUTO_INCREMENT COMME…

关于DDR协议的一些操作的理解4

address 1.DDR中的地址&#xff0c;下表中的*4/ *8/ *16表示的是颗粒位宽。不同位宽的颗粒的行列地址的分步是不一样的。图中的page size表示的就是一行所存储的内容&#xff0c;以64MB*16格式为例&#xff0c;一行一共有10列&#xff0c;每一列存储16bit&#xff0c;也就是2B…

每日一题 146. LRU 缓存

难度&#xff1a;中等 由于周日没做&#xff0c;今天又是困难题&#xff0c;所以假装今天是周日 思路&#xff1a; 在字典结构的基础之上完成三个要求显然题目要求构建一个有序字典&#xff08;当然不使用OrderedDict&#xff09;&#xff0c;由于 key 是唯一的&#xff0c;…

TLS/SSL(六) 非对称密码应用 PKI 证书体系

一 PKI 证书体系 概念&#xff1a; PKI、CA、数字证书、证书链、数字签名之前讲解的公钥不同于https站点所获取的证书,公钥只是数字证书的一部分信息说明&#xff1a; 以下内容仅作为个人笔记 华为云证书管理服务 CCM ① 基础 PKI目前有一系列标准规范定义,主要包括: ② …

lv5 嵌入式开发-6 线程的取消和互斥

目录 1 线程通信 – 互斥 2 互斥锁初始化 – pthread_mutex_init 3 互斥锁销毁 pthread_mutex_destroy 4 申请锁 – pthread_mutex_lock 5 释放锁 – pthread_mutex_unlock 6 读写锁 7 死锁的避免 8 条件变量&#xff08;信号量&#xff09; 9 线程池概念和实现 9.1 …

全栈工程师必须要掌握的前端JavaScript技能

作为一名全栈工程师&#xff0c;在日常的工作中&#xff0c;可能更侧重于后端开发&#xff0c;如&#xff1a;C#&#xff0c;Java&#xff0c;SQL &#xff0c;Python等&#xff0c;对前端的知识则不太精通。在一些比较完善的公司或者项目中&#xff0c;一般会搭配前端工程师&a…

暗月中秋靶场活动writeup

前言 暗月在中秋节搞了个靶场活动&#xff0c;一共有4个flag&#xff0c;本着增长经验的想法参加了本次活动&#xff0c;最终在活动结束的时候拿到了3个flag&#xff0c;后面看了其他人的wp也复现拿到第四个flag。过程比较曲折&#xff0c;所以记录一下。 靶场地址 103.108.…

【sgUploadTileImage】自定义组件:浏览器端生成瓦片图,并转换为File文件序列上传瓦片图

特性&#xff1a; 支持自定义瓦片图尺寸支持显示预览最小尺寸100x100像素大小&#xff0c;切换为实际切割尺寸支持获取切割后的文件Files数组 sgUploadTileImage源码 <template><div :class"$options.name"><div class"sg-ctrl"><di…