# test **Repository Path**: longfei_ma/test ## Basic Information - **Project Name**: test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-06 - **Last Updated**: 2025-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 门禁控制器MCU功能开发阶段性演示 > #### 演示环境说明 >由于目前开发环境限制,暂未对门禁控制器除MCU外其它外设(刷卡器、电磁锁、外部RAM和Flash等)进行功能开发,故演示功能主要局限于“基础网络通信”、“MQTT消息接收”、“HTTP API实现”及“WEB参数配置”等与上层业务交互部分的实现。 为了方便直观的展示以上所述的演示操作,本次演示主要通过以下两个工具软件进行: >* **["Xshell”](https://www.xshell.com/zh/xshell):** 终端交互软件,通过调试接口与门禁控制器MCU进行信息交互,用于展示门禁控制器正在进行的程序操作; >* **[“MQTT.fx”](https://cloud.tencent.com/document/product/1081/46507):** MQTT客户端工具,向MQTT Broker发布指定测试主题的消息,用于测试门禁控制器的MQTT消息接收与处理。 --- ## 1. 基础网络通信 门禁控制器基础网络通信功能主要包括 **“网络初始化”** 、 **“HTTP服务器连接”** 和 **“MQTT服务器连接”** 三部分。 以下通过Xshell终端打印的调试信息演示并说明门禁控制器上电运行并与服务器建立连接过程,即 **“基础网络通信”** 的实现。 ![alt text](基础网络通信.gif) ### 1.1 网络初始化 门禁控制器网络部分初始化,主要包括物理层、链路层、网络层和传输层的配置。 ![](2025-01-06-21-46-58.png) 以上展示的Xshell调试信息,主要演示了门禁设备的网络初始化由以门禁控制器BSP初始化为开始,到成功通过DHCP分配到IP结束。 >***说明:*** >- *目前主要通过DHCP方式获取IP,后续会同时支持动态IP和静态IP配置;* >- *目前门禁设备的MAC地址由MCU的硬件ID生成,暂不可更改。* ### 1.2 HTTP服务器连接 HTTP服务器连接功能主要实现与服务器进行连接建立、保持和设备运行信息获取等操作。 ![](2025-01-06-22-05-36.png) ![](2025-01-06-22-06-11.png) ![](2025-01-06-22-07-02.png) 以上展示的Xshell调试信息,主要演示了 **“TOKEN获取”** 、 **“MQTT信息获取”** 和 **“设备类型获取”** 三个API操作的执行情况,分别为成功获取到TOKEN、MQTT服务器连接信息和设备类型信息。 >***说明:*** >- *TOKEN获取成功后,会定时不超过1小时(当前设定为58分钟)重新获取;* >- *正常运行时,门禁控制器每隔1分钟(当前设定为59秒)发送一次心跳;* >- *目前门禁控制器只在首次连接服务器时获取MQTT服务器信息和设备类型,后续会根据实际应用做相应调整;* ### 1.3 MQTT服务器连接 MQTT服务器连接功能主要实现与服务器进行连接建立、账号登录及主题订阅等操作。 ![](2025-01-06-22-22-42.png) 以上展示的Xshell调试信息,主要演示了门禁控制器进行 **“MQTT服务器连接”**、 **“账号登录”** 及 **“消息订阅”** 的过程。 >***说明:*** *MQTT服务器连接操作在HTTP获取MQTT服务器参数成功后进行,并会在MQTT服务器连接参数发生变化后进行重连。* --- ## 2. MQTT消息接收 以下演示门禁控制器的MQTT消息接收及执行功能,主要通过“MQTT.fx”客户端工具向订阅主题发布消息实现。 ### 2.1 远程开门 ![alt text](MQTT消息接收-OpenDoor.gif) 如以上演示操作所示,通过MQTT.fx向门禁控制器发送远程开门消息后,门禁控制器接收处理并执行(门禁控制器向Xshell输出 **“MQTT>>Open Door!”** 信息即为模拟执行开门操作)。 ### 2.2 远程时间设置 ![alt text](MQTT消息接收-SetDateInfo.gif) 如以上演示操作所示,通过MQTT.fx向门禁控制器发送远程时间设置消息,设置时间为 **“2025-01-06 17:05:20”** ,门禁控制器成功按此将RTC时间由 **“201-01-01 1:20:7”** 更改为 **“2025-01-06 17:05:20”** ,并随后通过向门禁控制器重新获取RTC时间得到验证。 ### 2.3 远程重启 ![alt text](MQTT消息接收-Reboot.gif) 如以上演示操作所示,通过MQTT.fx向门禁控制器发送远程重启消息,门禁控制器接收并执行重启操作。 --- ## 3. HTTP API实现 HTTP API实现部分主要演示以下操作: >* **通过MQTT消息执行人员信息同步;** >* **模拟人员刷卡并根据已存储的人员信息对权限进行判断;** >* **上报人员通行记录。** ### 3.1 人员信息同步-重新同步 ![alt text](MQTT消息接收-push-immediatesync.gif) 以上演示了门禁控制器接收到MQTT的 **“重新同步人员消息”** 后,通过HTTP的 **“人员信息下载”** API获取到人员信息的操作。 如Xshell调试信息所示,一共获取到三个人员信息,三人都无进出时间限制,其ID卡号分别是: >* **0009364934** >* **0002902044** >* **0012454422** ### 3.2 人员信息同步-立即同步 ![alt text](MQTT消息接收-push-resync.gif) 以上演示了门禁控制器进行 **“重新同步人员消息”** 又进行 **“立即同步人员信息”** 后的执行情况,由于服务器端暂无新的人员信息添加,因此 **“立即同步”** 后未获取到新的人员信息。 ### 3.3 人员通行模拟 为演示人员通行权限判断,基于已从服务器获取到的三个有权限出入的人员信息,新增两个未登记的无权限的人员ID卡信息。 5个人员刷卡操作分别通过Xshell的“SendVirtualPassLog 1-5”虚拟操作进行,其分别对应的虚拟刷卡的ID为: >* **SendVirtualPassLog 1 >>ID: 000009364934** >* **SendVirtualPassLog 2 >>ID: 000002902044** >* **SendVirtualPassLog 3 >>ID: 000012454422** >* **SendVirtualPassLog 4 >>ID: 000004444444** >* **SendVirtualPassLog 5 >>ID: 000005555555** ![alt text](模拟人员通信权限判断及记录上报.gif) 如以上演示操作执行情况所展示,以编号为2的有权限人员刷卡(**card_id:000002902044**)后执行操作解析说明如下: ![alt text](image.png) 如以上演示操作执行情况所展示,以编号为5的无权限人员刷卡(**card_id:000005555555**)后执行操作解析说明如下: ![alt text](image-1.png) --- ## 4. WEB参数配置 为方便对门禁控制器进行远程参数配置,基于已有的网络通信功能,提供了 **“WEB页面参数配置”** 功能。演示如下: ### 4.1 WEB页面访问 ![alt text](image-2.png) 如上图展示,访问门禁控制器的参数配置页面只需在电脑浏览器中输入其IP地址(本例为:**“192.168.1.103”**)即可。 ### 4.2 WEB页面的参数显示及修改 以下演示了通过WEB页面查看门禁控制器的运行参数,并通过WEB页面配置其运行参数。 ![alt text]() 如上演示操作,通过“HTTP参数配置”页面,将测试参数值由“test”修改为“hello”并提交,随后观察运行信息页面中相应参数值也发生同样变化。 >***说明:*** *为方便后续演示,以上使用不影响门禁控制器运行的“HTTP测试参数”修改举例,其它运行参数修改同理。* ### 4.3 MQTT修改运行参数并通过WEB页面更新显示 以下演示了使用MQTT.fx通过MQTT修改门禁控制器的运行参数,并通过WEB页面查看其修改结果。 ![alt text]() 如上演示操作,通过MQTT客户端工具“MQTT.fx”向门禁控制器发布“设置NTP服务器地址”信息,门禁控制器接收消息并执行,随后在WEB配置页面的运行信息中显示其NTP SERVER值已更改为设置值。 >***说明:*** *目前门禁控制器可正常通过“阿里云”NTP服务器授时,暂未挂接本次开放的“pc.rtots.top”服务器测试,后续会继续进行挂接测试。* ## 5. 后续开发重点 门禁控制器后续开发的重点主要有以下三个方面,其中 **“新硬件功能开发方面”** 是重点,需要硬件支持且需要开发新的功能代码,可能会耗时较长,接下来会重点进行。 > **业务功能完善方面** >> * 丰富WEB参数配置功能,精简页面; >> * 挂接测试实际使用的NTP服务器; >> * 调整“人员通行记录上报”“MQTT服务器信息获取”及“设备类型获取”等HTTP API的执行周期和方式,与已有系统实现保持一致; >> * 增加动态IP和静态IP切换功能。 > **系统稳定性提升方面** >> * 增加测试人员信息数量,测试并提升人员信息管理功能的稳定性; >> * 重构网络连接管理代码,重点提升设备断网重连功能稳定性; >> * 提升MQTT和HTTP服务器连接长时间运行稳定性。 > **新硬件功能开发方面** >> * 现有代码移植调试; >> * 开发新硬件BSP,支持USB HID、外部RAM和外部Flash; >> * 开发程序升级功能; >> * 开发人员信息、通行记录及设备信息存储管理功能。 --- --- 时间:2025-01-07 By:malongfei