Matter for Linux 环境搭建

获取Matter仓库

拉取Matter Github:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 拉取仓库
mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/project-chip/connectedhomeip.git

# 切换分支
cd ~/workspace/connectedhomeip
git checkout -b v1.3-branch origin/v1/3-branch
# 更新仓库
git pull

# 更新子模块
cd ~/workspace/connectedhomeip
git submodule update --init

注意:更新子模块可能由于网络原因导致失败,可以重复执行更新子模块命令

获取先决条件

在基于 Debian 的 Linux 发行版(例如 Ubuntu)上,可以使用以下命令满足这些依赖关系:

1
2
3
4
5
sudo apt update
sudo apt 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 \
default-jre

注意:如果主机上已经具备依赖包,那么只做检查不会再下载

激活Matter环境

在运行任何其他构建命令之前,scripts/activate.sh应在顶层获取环境设置脚本。此脚本负责下载 GN、ninja 以及设置用于构建和测试的库的 Python 环境。

执行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
pi@pi-NMH-WCX9:~/workspace/connectedhomeip$ source scripts/activate.sh 

WELCOME TO...



▄ █ ▄ █ █
▀▀█████▀▀ ▄▀▀▀▄ ▄▀▀▀▄ ▄▀▀▀▀▄█ ▀▀█▀▀▀▀▀█▀▀ ▄▀▀▀▀▄ ▄▀▀
▀█▄ ▄█▀ █ █ █ █ █ █ █ █▄▄▄▄▄▄█ █
▀█▄ ▄█▀ █ █ █ █ █ █ █ █ █
▄██▀▀█ █▀▀██▄ █ █ █ ▀▄▄▄▄▀█ ▀▄▄ ▀▄▄ ▀▄▄▄▄▀ █
▀▀ █ █ ▀▀

BOOTSTRAP! Bootstrap may take a few minutes; please be patient.

Downloading and installing packages into local source directory:

Setting up CIPD package manager...done (10m31.9s)
Setting up Project actions........skipped (0.1s)
Setting up Python environment.....done (1m18.2s)
Setting up pw packages............skipped (0.1s)
Setting up Host tools.............done (0.1s)

Activating environment (setting environment variables):

Setting environment variables for CIPD package manager...done
Setting environment variables for Project actions........skipped
Setting environment variables for Python environment.....done
Setting environment variables for pw packages............skipped
Setting environment variables for Host tools.............done

Checking the environment:

20250113 21:56:41 INF Environment passes all checks!

Environment looks good, you are ready to go!

To reactivate this environment in the future, run this in your
terminal:

source ./activate.sh

To deactivate this environment, run this:

deactivate

Installing pip requirements for all...

[notice] A new release of pip is available: 23.2.1 -> 24.3.1
[notice] To update, run: pip install --upgrade pip


注意:Setting up CIPD package manager 过程可能会有点长

构建库

更新 Matter 子模块后,只拉取了源代码和构建脚本,还需要构建(编译)源代码获取库文件(*.o):

1
2
3
4
cd ~/workspace/connectedhomeip
source scripts/activate.sh
gn gen out/host
ninja -C out/host

注意:目录名称out/host可以是任何目录,但通常在out目录内构建。此示例使用host来强调为主机系统构建。不同的构建目录可用于不同的配置,也可以使用单个目录并根据需要通过 重新配置。

这里执行 ninja -C out/host 出错了,报错如下:

1
2
3
4
pi@pi-NMH-WCX9:~/workspace/connectedhomeip$ ninja -C out/host
ninja: Entering directory `out/host'
ninja: error: '../../third_party/nlunit-test/repo/src/nlunit-test.c', needed by 'obj/third_party/nlunit-test/repo/src/libnlunit-test.nlunit-test.c.o', missing and no known rule to make it

在浏览器上找到解决方法,先不管上面的报错,接着编译 chip-tool

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
pi@pi-NMH-WCX9:~/workspace/connectedhomeip$ ./scripts/examples/gn_build_example.sh examples/chip-tool/ out/standalone

WELCOME TO...



▄ █ ▄ █ █
▀▀█████▀▀ ▄▀▀▀▄ ▄▀▀▀▄ ▄▀▀▀▀▄█ ▀▀█▀▀▀▀▀█▀▀ ▄▀▀▀▀▄ ▄▀▀
▀█▄ ▄█▀ █ █ █ █ █ █ █ █▄▄▄▄▄▄█ █
▀█▄ ▄█▀ █ █ █ █ █ █ █ █ █
▄██▀▀█ █▀▀██▄ █ █ █ ▀▄▄▄▄▀█ ▀▄▄ ▀▄▄ ▀▄▄▄▄▀ █
▀▀ █ █ ▀▀

ACTIVATOR! This sets your shell environment variables.

Activating environment (setting environment variables):

Setting environment variables for CIPD package manager...done
Setting environment variables for Project actions........skipped
Setting environment variables for Python environment.....done
Setting environment variables for pw packages............skipped
Setting environment variables for Host tools.............done

Checking the environment:

20250114 09:48:44 INF Environment passes all checks!

Environment looks good, you are ready to go!

+ env
SHELL=/bin/bash
SESSION_MANAGER=local/pi-NMH-WCX9:@/tmp/.ICE-unix/2273,unix/pi-NMH-WCX9:/tmp/.ICE-unix/2273
QT_ACCESSIBILITY=1
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
SSH_AGENT_LAUNCHER=gnome-keyring
XDG_MENU_PREFIX=gnome-
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GTK_IM_MODULE=fcitx
LC_ADDRESS=zh_CN.UTF-8
GNOME_SHELL_SESSION_MODE=ubuntu
LC_NAME=zh_CN.UTF-8
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
PW_PROJECT_ROOT=/home/pi/workspace/connectedhomeip
XMODIFIERS=@im=fcitx
DESKTOP_SESSION=ubuntu
LC_MONETARY=zh_CN.UTF-8
PW_ZAP_CIPD_INSTALL_DIR=/home/pi/workspace/connectedhomeip/.environment/cipd/packages/zap
GTK_MODULES=gail:atk-bridge
PWD=/home/pi/workspace/connectedhomeip
XDG_SESSION_DESKTOP=ubuntu
LOGNAME=pi
XDG_SESSION_TYPE=wayland
SYSTEMD_EXEC_PID=7931
XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.TRLA02
CIPD_CACHE_DIR=/home/pi/.cipd-cache-dir
PW_ROOT=/home/pi/workspace/connectedhomeip/third_party/pigweed/repo
HOME=/home/pi
USERNAME=pi
IM_CONFIG_PHASE=1
LANG=en_US.UTF-8
LC_PAPER=zh_CN.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
XDG_CURRENT_DESKTOP=ubuntu:GNOME
VIRTUAL_ENV=/home/pi/workspace/connectedhomeip/.environment/pigweed-venv
VTE_VERSION=6800
WAYLAND_DISPLAY=wayland-0
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/8306e5c5_9b0b_4d97_8ed7_7d8e3d900e7b
PW_PYTHON_CIPD_INSTALL_DIR=/home/pi/workspace/connectedhomeip/.environment/cipd/packages/python
CLUTTER_IM_MODULE=fcitx
_PW_ROSETTA=0
GNOME_SETUP_DISPLAY=:1
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_SESSION_CLASS=user
LC_IDENTIFICATION=zh_CN.UTF-8
TERM=xterm-256color
LESSOPEN=| /usr/bin/lesspipe %s
USER=pi
GNOME_TERMINAL_SERVICE=:1.157
DISPLAY=:0
SHLVL=2
LC_TELEPHONE=zh_CN.UTF-8
QT_IM_MODULE=fcitx
PW_PACKAGE_ROOT=/home/pi/workspace/connectedhomeip/.environment/packages
LC_MEASUREMENT=zh_CN.UTF-8
_PW_ENVIRONMENT_CONFIG_FILE=/home/pi/workspace/connectedhomeip/scripts/setup/environment.json
XDG_RUNTIME_DIR=/run/user/1000
PW_BRANDING_BANNER=/home/pi/workspace/connectedhomeip/scripts/setup/banner.txt
_PW_ACTUAL_ENVIRONMENT_ROOT=/home/pi/workspace/connectedhomeip/.environment
PW_ARM_CIPD_INSTALL_DIR=/home/pi/workspace/connectedhomeip/.environment/cipd/packages/arm
LC_TIME=zh_CN.UTF-8
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
PATH=/home/pi/workspace/connectedhomeip/third_party/pigweed/repo/out/host/host_tools:/home/pi/workspace/connectedhomeip/.environment/pigweed-venv/bin:/home/pi/workspace/connectedhomeip/.environment/cipd/packages/arm/bin:/home/pi/workspace/connectedhomeip/.environment/cipd/packages/arm:/home/pi/workspace/connectedhomeip/.environment/cipd/packages/zap:/home/pi/workspace/connectedhomeip/.environment/cipd/packages/pigweed/bin:/home/pi/workspace/connectedhomeip/.environment/cipd/packages/pigweed:/home/pi/workspace/connectedhomeip/.environment/cipd:/home/pi/.cargo/bin:/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
GDMSESSION=ubuntu
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
PW_PIGWEED_CIPD_INSTALL_DIR=/home/pi/workspace/connectedhomeip/.environment/cipd/packages/pigweed
LC_NUMERIC=zh_CN.UTF-8
OLDPWD=/home/pi/workspace/connectedhomeip/third_party
_=/usr/bin/env
+ gn gen --check --fail-on-unused-args --root=examples/chip-tool/ out/standalone --args=
ERROR at //third_party/connectedhomeip/third_party/nlassert/BUILD.gn:19:1: Source file not found.
source_set("nlassert") {
^-----------------------
The target:
//third_party/connectedhomeip/third_party/nlassert:nlassert
has a source file:
//third_party/connectedhomeip/third_party/nlassert/repo/include/nlassert.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlbyteorder-big.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlbyteorder.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlbyteorder-little.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlbyteorder.hpp
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-base.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-base.hpp
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-byteorder-big.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-byteorder-big.hpp
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-byteorder-little.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-byteorder-little.hpp
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-byteorder.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-byteorder.hpp
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio-private.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio.h
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlio/BUILD.gn:19:1: Source file not found.
source_set("nlio") {
^-------------------
The target:
//third_party/connectedhomeip/third_party/nlio:nlio
has a source file:
//third_party/connectedhomeip/third_party/nlio/repo/include/nlio.hpp
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlunit-test/BUILD.gn:30:1: Source file not found.
static_library("nlunit-test") {
^------------------------------
The target:
//third_party/connectedhomeip/third_party/nlunit-test:nlunit-test
has a source file:
//third_party/connectedhomeip/third_party/nlunit-test/repo/src/nlunit-test.c
which was not found.
___________________
ERROR at //third_party/connectedhomeip/third_party/nlunit-test/BUILD.gn:30:1: Source file not found.
static_library("nlunit-test") {
^------------------------------
The target:
//third_party/connectedhomeip/third_party/nlunit-test:nlunit-test
has a source file:
//third_party/connectedhomeip/third_party/nlunit-test/repo/src/nlunit-test.h
which was not found.

此时也出现了错误:部分子模块的源文件和库文件没有找到。

到对应子模块的文件下查看文件信息,结果一个文件都没有。那么只能是拉取子模块时出问题了,所以删除子模块,重新拉取:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
cd ~/workspace/connectedhomeip
rm -rf third_party/nlassert/repo

# 重新拉取
pi@pi-NMH-WCX9:~/workspace/connectedhomeip$ git submodule update
Submodule path 'third_party/nlassert/repo': checked out 'c5892c5ae43830f939ed660ff8ac5f1b91d336d3'

# 检查子模块文件夹
pi@pi-NMH-WCX9:~/workspace/connectedhomeip$ ll third_party/nlassert/repo/
total 856
drwxrwxr-x 6 pi pi 4096 1月 14 10:00 ./
drwxrwxr-x 3 pi pi 4096 1月 14 10:00 ../
-rw-rw-r-- 1 pi pi 44922 1月 14 10:00 aclocal.m4
-rwxrwxr-x 1 pi pi 1305 1月 14 10:00 bootstrap*
lrwxrwxrwx 1 pi pi 62 1月 14 10:00 bootstrap-configure -> third_party/nlbuild-autotools/repo/scripts/bootstrap-configure*
-rw-rw-r-- 1 pi pi 838 1月 14 10:00 CHANGES
-rwxrwxr-x 1 pi pi 686635 1月 14 10:00 configure*
-rw-rw-r-- 1 pi pi 13920 1月 14 10:00 configure.ac
-rw-rw-r-- 1 pi pi 1452 1月 14 10:00 CONTRIBUTING.md
-rw-rw-r-- 1 pi pi 6 1月 14 10:00 .default-version
drwxrwxr-x 2 pi pi 4096 1月 14 10:00 doc/
-rw-rw-r-- 1 pi pi 39 1月 14 10:00 .git
-rw-rw-r-- 1 pi pi 15 1月 14 10:00 .gitignore
drwxrwxr-x 3 pi pi 4096 1月 14 10:00 include/
-rw-rw-r-- 1 pi pi 11358 1月 14 10:00 LICENSE
-rw-rw-r-- 1 pi pi 5767 1月 14 10:00 Makefile.am
-rw-rw-r-- 1 pi pi 3891 1月 14 10:00 Makefile-bootstrap
-rw-rw-r-- 1 pi pi 36772 1月 14 10:00 Makefile.in
-rw-rw-r-- 1 pi pi 3265 1月 14 10:00 README.md
-rw-rw-r-- 1 pi pi 146 1月 14 10:00 repos.conf
drwxrwxr-x 2 pi pi 4096 1月 14 10:00 tests/
drwxrwxr-x 3 pi pi 4096 1月 14 10:00 third_party/
-rw-rw-r-- 1 pi pi 1013 1月 14 10:00 .travis.yml

另外子模块可以使用同样的方法解决,就不再额外赘述。

现在,可以重新构建库:

1
2
3
4
5
# 一共会构建2300个文件。由于已经构建过了,构建系统会缓存通过的测试,所以提示:no work to do.
pi@pi-NMH-WCX9:~/workspace/connectedhomeip$ ninja -C out/host/
ninja: Entering directory `out/host/'
ninja: no work to do.

此时,在 out/host 下可以看到 chip-tool 可执行文件。

下载ZAP工具

ZAP 工具由 Silicon Labs 和 ZAP 开源社区的开发人员构建和维护。它的名称和功能继承自 Zigbee 集群库,这是 Matter 数据模型的起点。ZAP 用于根据 Zigbee 集群库和相关的 Matter 代码模板为 Matter 应用程序生成代码。

ZAP 工具不再作为 Matter 存储库中的子模块存在。ZAP 工具可以从 GitHub 下载为二进制文件,或者您也可以克隆整个 ZAP 存储库并从头开始构建 ZAP 二进制文件。

Matter SDK提供了下载和运行ZAP的脚本:

1
2
3
4
5
pi@pi-NMH-WCX9:~/workspace/connectedhomeip/scripts/tools/zap$ ls
BUILD.gn generate.py test_generate.py version_update.py zap_execution.py
check_file_existence.py __pycache__ tests zap_bootstrap.sh zapfile_formatter.py
convert.py run_zaptool.sh update_cluster_revisions.py zap_download.py

下载 ZAP:

1
2
3
4
5
6
7
pi@pi-NMH-WCX9:~/workspace/connectedhomeip/scripts/tools/zap$ python3 zap_download.py 
2025-01-14 11:13:33 root INFO Found required zap version to be: v2024.03.14-nightly
2025-01-14 11:13:33 root INFO Fetching: https://github.com/project-chip/zap/releases/download/v2024.03.14-nightly/zap-linux-x64.zip
2025-01-14 11:27:15 root INFO Data downloaded, extracting ...
2025-01-14 11:27:17 root INFO Done extracting.
export ZAP_INSTALL_PATH=/home/pi/workspace/connectedhomeip/.zap/zap-v2024.03.14-nightly

设置环境ZAP环境变量:

1
export ZAP_INSTALL_PATH=/home/pi/workspace/connectedhomeip/.zap/zap-v2024.03.14-nightly

运行 ZAP 工具:

1
2
3
# 先要设备ZAP环境变量
cd ~/workspace/connectedhomeip/scripts/tools/zap
./run_zaptool.sh

image-20250114113259081

参考来源