门锁

概述

此门锁示例演示了使用 Matter 应用层来构建一个门锁设备。门锁设备是一种确保门安全的装置,可以通过手动或远程方式来操作门锁。

该设备作为一个 Matter 附件设备工作,这意味着它可以通过基于低功耗 802.15.4 Thread 网络的 Matter 网络进行配对和远程控制。

示例使用按键和控制器来改变门锁的状态,并通过 LED 显示这些变化的状态。

门锁凭证

门锁凭证可以用于控制对门锁的远程访问,此示例支持 PIN(Personal Identification Number)码凭证,此类凭证可以通过键盘输入或无线方式进行验证。门锁凭证会存储在 flash 中,设备重启后依然存在。

此示例支持多个门锁用户和凭证,可以通过 matter/connectedhomeip/examples/<app_name>/realtek_bee/main/include 下的 AppConfig.h 文件进行配置。

  • CONFIG_LOCK_NUM_USERS:门锁支持的最大用户数量

  • CONFIG_LOCK_NUM_CREDENTIALS:凭证总数的最大数量

  • CONFIG_LOCK_NUM_CREDENTIALS_PER_USER:可分配给一个用户的最大凭证数量

环境需求

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

支持的开发套件

硬件平台

板卡名称

RTL8777G HDK

RTL8777G EVB

准备 Matter 环境

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

准备 CHIP Tool

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

要构建 CHIP Tool,请按照 CHIP Tool 步骤操作。

配置选项

示例样本配置

我们的示例样本都有默认配置。 如果要修改示例配置, 可以更改 matter/connectedhomeip/examples/<app_name>/realtek_bee/main/include 路径下的 CHIPProjectConfig.h,其中 app_name 指的是应用程序的名称,例如 lighting-app。

有关配置项的更多信息,请参见 APP配置

工厂数据配置

对于 EVB 板,工厂数据默认是禁用的。要使用工厂数据,请参阅 工厂数据 中的 启用工厂数据支持工厂数据生成 部分。

编译和下载

编译

导航到指定目录并编译 door-lock 应用程序。

$ cd beeSDK/subsys/matter/samples
$ rm -r build/
$ ./build.py rtl8777g lock

下载

编译成功后,应用程序 bin 文件 matter-cli-mtd_bank0_MP_dev_*.bin 将生成在目录 build/bank0/bin 中。

要将应用程序 bin 文件下载到 EVB 板,按照 快速入门固件下载 中列出的步骤操作。如果工厂数据已启用,请参阅 工厂数据 中的 烧录工厂数据

然后按下 EVB 板上的重置按钮,它将开始运行。

测试验证

在将示例工程烧录到您的 EVB 板后,完成以下各节中的步骤。

准备阶段

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

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

  3. 如果在编程过程中未擦除 flash,请按住 SW2 并保持 6.5s 以上,直到进行出厂重置。

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

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

测试阶段

手动控制

  1. 观察 LED 0 是否处于亮起状态,这意味着门锁在关闭状态。设备默认门锁为关闭状态。

  2. 按下 SW1 即可解锁门,锁打开时,LED 0 闪烁。大约两秒后,LED 0 熄灭,锁被打开。

  3. 再次按下 SW1 可锁门。LED 0 闪烁,然后保持常亮,锁被关上。

使用 PIN 码进行远程控制

  1. 门锁默认在关闭状态,LED 0 处于亮起状态。

  2. 添加一个新用户。

    $ ./chip-tool doorlock set-user OperationType UserIndex UserName UserUniqueID UserStatus UserType CredentialRule <lock_node_ID> <endpoint_id>
    
    • <light_bulb_node_ID>:从上一步中获得

    • <endpoint_id>:带有 Door Lock 集群的端点 ID

    例如:

    $ ./chip-tool doorlock set-user 0 1 xxx 6452 1 0 0 1 1  --timedInteractionTimeoutMs 1000
    

    此命令添加了一个索引为 1 的用户,名为 xxx ,UniqueID 为 6452。新用户的 UserStatus 被设置为 1,UserType 和 CredentialRule 都被设置为 0

  3. 向用户 xxx 添加 PIN 码凭证。

    $ ./chip-tool doorlock set-credential OperationType Credential CredentialData UserIndex UserStatus UserType <lock_node_ID> <endpoint_id>
    

    例如:

    $ ./chip-tool doorlock set-credential 0 '{ "credentialType" : 1 , "credentialIndex" : 1 }' 123456 1 null null 1 1 --timedInteractionTimeoutMs 1000
    

    此命令添加了一个类型和索引均为 1 的凭证,凭证数据为 123456,关联的用户索引为 1,UserStatus 和 UserType 都被设置为 null

  4. 使用第 3 步中添加的 PIN 码开锁。

    $ ./chip-tool doorlock unlock-door 1 1 --timedInteractionTimeoutMs 1000 --PINCode 123456
    
  5. 观察到 LED 0 闪烁,然后熄灭,锁被打开。