照明
此照明示例展示了如何使用Matter应用层构建照明设备以及如何进行单灯控制。用户可以将此示例作为创建自己应用程序的参考。
需求
该示例支持以下开发套件:
硬件平台 |
板卡名称 |
---|---|
RTL8777G HDK |
RTL8777G EVB |
准备Matter环境
要设置Matter环境,请按照 开发环境设置 中列出的步骤操作。
准备CHIP Tool
CHIP Tool(chip-tool)是Matter的控制器实现,允许将Matter设备加入网络并使用Matter消息与其通信,这些消息可能包含数据模型的相关操作,例如群集命令。该工具还提供其他特定于Matter的实用程序,如解析设置负载或执行发现操作。
接线
连接红框中两个LED的引脚。
配置
示例样本配置
我们的示例样本都有默认配置。
如果要修改示例配置,
可以更改 matter/connectedhomeip/examples/<app_name>/realtek_bee/main/include
路径下的 CHIPProjectConfig.h
,其中 app_name 指的是应用程序的名称,例如 lighting-app。
有关配置项的更多信息,请参见 Matter APP 配置。
工厂数据配置
对于evb板,工厂数据默认是禁用的。 要使用工厂数据,请参阅 工厂数据 中的 工厂数据生成 和 启用Matter应用程序构建的工厂数据 部分。
构建和下载
构建
导航到openthread目录并构建照明应用
$ cd beeSDK/subsys/openthread/
$ rm -r build/
$ OT_CMAKE_NINJA_TARGET="matter-cli-ftd" ./Realtek/build bee4 sdk 8777g lighting-app
下载
编译成功后,应用程序二进制文件 matter-cli-ftd_bank0_MP_dev_*.bin
将在 build/bin
目录中生成。
要将应用程序二进制文件下载到EVB板,按照 快速入门 中 固件下载 中列出的步骤操作。 如果工厂数据已启用,请参阅 工厂数据 中的 下载工厂数据文件到RTL8777G。
然后按下EVB板上的重置按钮,它将开始运行。
实验验证
将示例编程到EVB板后,完成以下部分的步骤。
准备阶段
使用USB线将套件连接到计算机。
使用串口调试工具(例如,Tera Term)打开与套件的串口连接。
如果在编程过程中未擦除flash,请按住SW 2,然后按下每台设备上的RST,直到进行出厂重置。
按下RST以启动蓝牙广播。
将设备加入到Matter网络。请参考 设备配网。在配网过程中,记下灯泡节点ID的值以备后用(<light_bulb_node_ID>)。
测试阶段
在准备工作完成后,可以使用chip-tool测试单灯控制。
运行以下命令:
在Toggle命令之前检查灯的开/关属性值。
$ ./chip-tool onoff read on-off <light_bulb_node_ID> <endpoint_id>
<light_bulb_node_ID>
: 从上一步中获得。<endpoint_id>
: 带有OnOff群集的端点ID。
例如:
$ ./chip-tool onoff read on-off 2 1
日志中将出现以下消息:
CHIP:TOO: OnOff: False
切换OnOff属性状态。
$ ./chip-tool onoff toggle <light_bulb_node_ID> <endpoint_id>
例如:
$ ./chip-tool onoff toggle 2 1
在Toggle命令后检查开/关属性值是否已更改。
$ ./chip-tool onoff read on-off <light_bulb_node_ID> <endpoint_id>
例如:
$ ./chip-tool onoff read on-off 2 1
日志中将出现以下消息:
CHIP:TOO: OnOff: True
设备配网
确保CHIP工具和OTBR在同一网络段中。有关设置OTBR的过程,请参见 在Raspberry Pi上设置OpenThread Border Router。
使用OTBR组建一个Thread网络。
$ sudo ot-ctl factoryreset $ sleep 1 $ sudo ot-ctl dataset init new $ sudo ot-ctl dataset channel 25 $ sudo ot-ctl dataset panid 0x5b35 $ sudo ot-ctl dataset extpanid 5b35dead5b35beef $ sudo ot-ctl dataset networkname 5b35 $ sudo ot-ctl dataset networkkey 00112233445566778899aabbccddeeff $ sudo ot-ctl dataset commit active $ sudo ot-ctl prefix add fd11:35::/64 pasor $ sudo ot-ctl dataset meshlocalprefix fb73:b7bd:20e5:053d:: $ sudo ot-ctl dataset commit active $ sudo ot-ctl ifconfig up $ sleep 1 $ sudo ot-ctl thread start $ sleep 1 $ sudo ot-ctl state $ sudo ot-ctl netdata register $ sleep 1 $ sudo ot-ctl netdata show $ sudo ot-ctl ipaddr
请确保OTBR是leader。
$ sudo ot-ctl state leader done
获取设备的PIN码和Discriminator。
PIN码:用来认证设备的27位值。 默认值:20202021
Discriminator:用来区分多个可配网设备广播的12位值。 默认值:3840
如果您使用工厂数据,可以扫描 工厂数据生成 部分生成的QR码来获取此信息。
可以通过chip-tool解析其内容,示例如下:
$ ./chip-tool payload parse-setup-payload "MT:Q5AA0CEK010O0648G00" CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /tmp/chip_tool_kvs CHIP:SPL: Parsing base38Representation: MT:Q5AA0CEK010O0648G00 CHIP:SPL: Version: 0 CHIP:SPL: VendorID: 4886 CHIP:SPL: ProductID: 32769 CHIP:SPL: Custom flow: 0 (STANDARD) CHIP:SPL: Discovery Bitmask: 0x02 (BLE) CHIP:SPL: Long discriminator: 3841 (0xf01) CHIP:SPL: Passcode: 20202022
将设备通过BLE加入到Thread网络。
$ ./chip-tool pairing ble-thread <node_id> hex:<operational_dataset> <pin_code> <discriminator> --bypass-attestation-verifier true
<node_id>
: 用户定义的正在配网的节点ID。<operational_dataset>
: 从Thread Border Router获取的当前的operational dataset。 获取方法是,在安装OTBR的Raspberry Pi终端中执行命令sudo ot-ctl dataset active -x
。<pin_code>
: 在步骤3中获得。<discriminator>
: 在步骤3中获得。--bypass-attestation-verifier
: 用于绕过验证。如果未提供此标志或其值为false,则不绕过验证。如果其值为true (--bypass-attestation-verifier true
),那么如果验证失败,配网仍将继续。验证失败可能由认证声明、PAA或PAI证书,或者设备认证证书中的错误导致。如果希望快速配网具有基于未知PAA的PAI和DAC证书的设备,并且使用的是未知密钥签名的认证声明,此选项将非常有用。
例如:
$ ./chip-tool pairing ble-thread 2 hex:0e08000000000001000035060004001fffe00410df7d53dd16ad16f407cd13efa93b285e0c0402a0f7f800030000190102123402081111111122222222030431323334051000112233445566778899aabbccddeeff0708fb73b7bd20e5053d 99739839 1098 --bypass-attestation-verifier true
配网可能需要一些时间。如果成功,日志中将出现以下消息:
Device commissioning completed with success