门锁
概述
此门锁示例演示了使用 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 ./subsys/matter/samples
$ rm -r build/
$ ./build.py rtl8777g lock
下载
编译成功后,应用程序 bin 文件 matter-cli-mtd_bank0_MP_dev_*.bin
将生成在目录 build/bank0/bin
中。
要将应用程序 bin 文件下载到 EVB 板,按照 快速入门 中 固件下载 中列出的步骤操作。如果工厂数据已启用,请参阅 工厂数据 中的 烧录工厂数据。
然后按下 EVB 板上的重置按钮,它将开始运行。
其他需要烧录的文件如下表所示。
文件类型 |
文件 |
文件路径 |
---|---|---|
System ConfigFile |
configFile_xxx.bin |
\subsys\openthread\vendor\bee4\rtl8777g\firmware\trustzone_disable |
Bank0 Boot PatchImage |
BANK0_boot_patch_MP_release_xxx.bin |
\subsys\openthread\vendor\bee4\rtl8777g\firmware |
Bank0 OTA HeaderFile |
OTAHeader_Bank0_xxx.bin |
\subsys\openthread\vendor\bee4\rtl8777g\firmware\trustzone_disable |
Bank0 SystemPatch Image |
sys_patch_MP_release_xxx.bin |
\subsys\openthread\vendor\bee4\rtl8777g\firmware |
Bank0 Bluetooth StackPatch Image |
bt_stack_patch_MP_master_xxx.bin |
\subsys\openthread\vendor\bee4\rtl8777g\firmware |
Bank0 Bluetooth HostImage |
bt_host_MP_xxx.bin |
\subsys\openthread\vendor\bee4\rtl8777g\firmware |
测试验证
在将示例工程烧录到您的 EVB 板后,完成以下各节中的步骤。
准备阶段
使用 USB 线将套件连接到计算机。
使用串口调试工具(例如,Tera Term)打开与套件的串口连接。
如果在编程过程中未擦除 flash,请按住 SW2 并保持 6.5s 以上,直到进行出厂重置。
按下 RST 以开启蓝牙广播。
将设备加入到 Matter 网络。请参考 设备配网。在配网过程中,记下门锁节点 ID 的值以备后用(<lock_node_ID>)。
测试阶段
手动控制
观察 LED 0 是否处于亮起状态,这意味着门锁在关闭状态。设备默认门锁为关闭状态。
按下 SW1 即可解锁门,锁打开时,LED 0 闪烁。大约两秒后,LED 0 熄灭,锁被打开。
再次按下 SW1 可锁门。LED 0 闪烁,然后保持常亮,锁被关上。
使用 PIN 码进行远程控制
门锁默认在关闭状态,LED 0 处于亮起状态。
添加一个新用户。
$ ./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
。向用户
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
。使用第 3 步中添加的 PIN 码开锁。
$ ./chip-tool doorlock unlock-door 1 1 --timedInteractionTimeoutMs 1000 --PINCode 123456
观察到 LED 0 闪烁,然后熄灭,锁被打开。