照明

此照明示例展示了如何使用Matter应用层构建照明设备以及如何进行单灯控制。用户可以将此示例作为创建自己应用程序的参考。

需求

该示例支持以下开发套件:

支持的开发套件

硬件平台

板卡名称

RTL8777G HDK

RTL8777G EVB

准备Matter环境

要设置Matter环境,请按照 开发环境设置 中列出的步骤操作。

准备CHIP Tool

CHIP Tool(chip-tool)是Matter的控制器实现,允许将Matter设备加入网络并使用Matter消息与其通信,这些消息可能包含数据模型的相关操作,例如群集命令。该工具还提供其他特定于Matter的实用程序,如解析设置负载或执行发现操作。

要构建CHIP Tool,请按照 Matter工具 中的 CHIP Tool 步骤操作。

接线

连接红框中两个LED的引脚。

../../../../../../_images/EVB_Dongle_blocks_distribution_Diagram1.png

硬件接线

配置

示例样本配置

我们的示例样本都有默认配置。 如果要修改示例配置, 可以更改 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板后,完成以下部分的步骤。

准备阶段

  1. 使用USB线将套件连接到计算机。

  2. 使用串口调试工具(例如,Tera Term)打开与套件的串口连接。

  3. 如果在编程过程中未擦除flash,请按住SW 2,然后按下每台设备上的RST,直到进行出厂重置。

  4. 按下RST以启动蓝牙广播。

  5. 将设备加入到Matter网络。请参考 设备配网。在配网过程中,记下灯泡节点ID的值以备后用(<light_bulb_node_ID>)。

测试阶段

在准备工作完成后,可以使用chip-tool测试单灯控制。

运行以下命令:

  1. 在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
    
  2. 切换OnOff属性状态。

    $ ./chip-tool onoff toggle <light_bulb_node_ID> <endpoint_id>
    

    例如:

    $ ./chip-tool onoff toggle 2 1
    
  3. 在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
    

设备配网

  1. 确保CHIP工具和OTBR在同一网络段中。有关设置OTBR的过程,请参见 在Raspberry Pi上设置OpenThread Border Router

  2. 使用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
    
  3. 获取设备的PIN码和Discriminator。

    • PIN码:用来认证设备的27位值。 默认值:20202021

    • Discriminator:用来区分多个可配网设备广播的12位值。 默认值:3840

    如果您使用工厂数据,可以扫描 工厂数据生成 部分生成的QR码来获取此信息。

    ../../../../../../_images/QR_code_and_Scan_results.jpg

    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
    
  4. 将设备通过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