3. 基于ZAP工具生成Matter数据模型代码

基于ZAP工具生成Matter数据模型代码 学习卡片

任务说明

本案例目标是通过chip-tool工具将一台Matter设备(此处以Matter Light Bulb模拟设备为例)配对到Thread或Wi-Fi网络中,并验证chip-tool与设备之间的基本通信能力。完成配对后,能够通过chip-tool发送On/Off命令并读取设备状态,以此确认配对成功且应用层通信正常。

前置条件

  • 已编译生成chip-tool可执行文件(位于connectedhomeip/out/standalone/chip-tool)
  • 已运行Matter设备模拟器(如chip-all-clusters-app或chip-light-app),设备处于未配对状态
  • Thread边界路由器(如OpenThread Border Router)或Wi-Fi AP已就绪,且chip-tool所在主机与设备网络可达

实现步骤

配对过程使用chip-tool的pairing子命令。对于Thread网络,使用onnetwork配对方式;对于Wi-Fi设备,使用wifi配对方式。以下以Thread网络为例,演示完整配对及通信验证流程。

# 1. 查看chip-tool帮助,确认子命令
./chip-tool pairing --help

# 2. 执行Thread网络配对(假设设备discriminator=3840,setup-pin=20202021,节点ID=1)
./chip-tool pairing onnetwork 1 20202021 3840

# 3. 配对成功后,发送On命令(endpoint=1,cluster=On/Off)
./chip-tool onoff on 1 1

# 4. 读取On/Off属性,验证设备状态
./chip-tool onoff read on-off 1 1

# 5. 发送Off命令
./chip-tool onoff off 1 1

# 6. 再次读取属性,确认状态已切换
./chip-tool onoff read on-off 1 1

对于Wi-Fi设备,配对命令格式为:

./chip-tool pairing wifi <node-id> <setup-pin> <discriminator> <ssid> <passphrase>

代码实现说明

chip-tool本身是命令行工具,无需编写额外代码。但为了验证配对后的通信,可编写一个简单的Shell脚本自动化上述流程,便于重复执行和结果判定:

#!/bin/bash
# pair_and_verify.sh - 使用chip-tool配对Matter设备并验证通信
CHIP_TOOL="./chip-tool"
NODE_ID=1
SETUP_PIN=20202021
DISCRIMINATOR=3840
ENDPOINT=1

echo "=== 开始配对 ==="
$CHIP_TOOL pairing onnetwork $NODE_ID $SETUP_PIN $DISCRIMINATOR
if [ $? -ne 0 ]; then
    echo "配对失败"
    exit 1
fi
echo "配对成功"

echo "=== 发送On命令 ==="
$CHIP_TOOL onoff on $NODE_ID $ENDPOINT
sleep 2

echo "=== 读取On/Off属性 ==="
ON_STATE=$($CHIP_TOOL onoff read on-off $NODE_ID $ENDPOINT | grep -o 'on-off: [0-9]*' | awk '{print $2}')
echo "当前状态: $ON_STATE (1=On, 0=Off)"

if [ "$ON_STATE" -eq 1 ]; then
    echo "On命令验证通过"
else
    echo "On命令验证失败"
    exit 1
fi

echo "=== 发送Off命令 ==="
$CHIP_TOOL onoff off $NODE_ID $ENDPOINT
sleep 2

echo "=== 再次读取On/Off属性 ==="
OFF_STATE=$($CHIP_TOOL onoff read on-off $NODE_ID $ENDPOINT | grep -o 'on-off: [0-9]*' | awk '{print $2}')
echo "当前状态: $OFF_STATE (1=On, 0=Off)"

if [ "$OFF_STATE" -eq 0 ]; then
    echo "Off命令验证通过"
else
    echo "Off命令验证失败"
    exit 1
fi

echo "=== 配对与通信验证全部通过 ==="

验证方法

执行上述脚本后,观察输出。判定标准如下:

  • 配对阶段无错误返回,且chip-tool输出包含Device commissioning completed with success字样
  • On命令后读取属性值为1,Off命令后读取属性值为0
  • 脚本最终输出“配对与通信验证全部通过”
chip-tool 配对与通信验证时序 chip-tool Thread 网络 Matter 设备 pairing onnetwork (PIN, Discriminator) Thread 网络发现与加入 Commissioning 完成 onoff on (node=1, ep=1) read on-off on-off = 1 chip-tool 请求 设备响应 应用命令

判定标准

当脚本输出显示配对成功、On/Off命令均能正确改变设备状态且属性读取值与预期一致时,即可判定本案例目标达成。若配对失败,请检查设备是否处于未配对状态、discriminator与setup-pin是否正确、网络是否连通;若命令发送失败,请确认节点ID与endpoint是否正确,以及设备是否仍在网络中在线。