李茹平 合子琦 张林燕 黄文杰 谢珺
(太原理工大学信息与计算机学院 山西省晋中市 030600)
人流量数据成为一项非常有价值的衡量指标,人流量统计技术在现今社会生活领域也有广泛的应用。目前统计人流量的主流方法分两类:第一种是基于机器视觉的视频识别技术[2],同时借助于已有的算法,比如百度AI 平台[3],或利用计算机图像处理技术[4]。此类方法较精确,但成本高且技术复杂[5]。第二种是基于红外传感器的统计监测技术[6]。此外,还有一种方法是使用Wi-Fi 探针识别指定区域内开启Wi-Fi 的移动设备,因为电子设备具有唯一的MAC 地址,所以探针探测到的终端信息可以映射人流量数据[5]。此类方法使用场景限制性较大,且存在Wi-Fi 区域交叉的问题[7]。目前,人流量数据基本上在地点入口的液晶屏幕或者大屏幕上显示[8],比如景点、图书馆等公共场所的显示屏等,用户只有到该地点才能看到人数信息。目前鲜有能实现人流量数据在手机端的直接显示,使用户足不出户就可及时查询实时数据,尤其是高校范围内对具有上述类似功能的小程序,开发和使用都较为薄弱。
全国高校内,频繁出现餐厅、澡堂等公共区域高峰拥挤的现象[9],造成拥挤现象原因如下:首先,由于在校大学生作息表相似。其次因在校学生数量大、大规模扩招导致了部分高校基础设施不足,如餐厅小,澡堂浴位过少等问题[10]。
为解决澡堂拥堵问题,本设计以“红外计数器统计人流+微信小程序云开发”方式,调用云服务器进行数据分析处理,npm 网络请求库外包提供技术支撑,发起网络请求。对公共澡堂进出入人数进行实时统计,学生只需通过微信客户端就可快速便捷地查询数据,以此科学规划生活,错峰洗澡。同时,也减缓了后勤部管理压力。
本文所设计的人流量监测系统整体架构如图1 所示,通过统计进出入公告澡堂区域的人流量数据,利用小程序官方开发文档、git开源项目引入相关package,将数据信息在小程序端显示出来,学生可以根据数据规划自己的日常生活,合理地避开洗澡高峰期。此方法将以往的人流监测系统与微信小程序云开发技术结合,有效提高了系统的实效性。人流量数据的上传、传递、显示的设计是本系统架构的核心,由以下三部分构成:
(1)第一步搭建硬件设备,即红外计数器和基于gprs 技术的数据上传器,将进出入数据上传至中端服务器;
(2)第二步通过微信小程序云开发和基于requests-https 请求的开源外包,实现中端服务器与“掌上有数”微信小程序云服务器后端的接口对接,进而实现数据通信;
(3)第三步进行小程序后端与前端UI 界面,即用户手机端界面的连接,通过使用小程序高效的应用开发框架和丰富的组件及API,以此达到用户随时随地通过“掌上有数”小程序查看人流量数据的目的。
图1:系统整体架构
图2:红外传感装置检测示意图
图3:“掌上有数”小程序架构
人流量统计硬件部分包括红外发射装置以及基于gprs 的数据接收装置,红外发射和接收装置分别安装在门框两侧[11],高度保持在1.2~1.3m 左右,如图2 所示。根据人体经过阻挡红外线而产生的高低电平,统计红外信号中断的次数,处理通断信号并转换成人体经过次数,以此来统计进出入监测区域内的人数。
图4:“掌上有数”小程序云开发公网链路
图5:分时间段人数统计图
图6:用户获取数据流程图
图7:人体经过时测试示意图
数据接收装置内部装有物联卡,也就是俗称的流量卡。物联卡把任何物品与互联网连接起来[12],采用专业号段和独立网元,满足智能硬件和物联网行业对设备联网的需求,进行信息交换和通讯。同时,该装置数据通讯技术基于gprs 通用分组无线服务技术,属于第二代移动通信中的数据传输技术。以物联卡和gprs 技术为基础,保证了此装置和中端服务器之间的数据传递。
微信小程序(Mini Program)相对于APP,具备无需安装、无需注册、开发费用低等优点。基于微信平台超9 亿的用户流量入口以及小程序“用完即走“的理念,同时可以节省用户的手机空间,成为取代手机APP 的最佳选择[13]。
图8:云服务器监测数据
图9:“掌上有数”小程序端显示数据
小程序依靠微信平台,近三年内发展迅速,涉及生活娱乐、医疗交通、健身阅读等各个领域,但对于实现实时查询公共场所进出人流量需求的小程序较稀缺。对于高校学生,此类小程序新颖且便捷日常生活。对于开发者,小程序开发门槛相对较低,能够满足简单的基础需求,如查询、通知、统计、打卡等。因此,本研究将微信小程序作为开发平台。
除查询实时人流量外,“掌上有数”小程序同时会辅以其他模块,比如查看澡堂不同时间段人数统计图,查询餐厅对应窗口菜单种类及通知公告等,以提高实用性和功能的多样性。小程序架构如图3 所示。整体分三个层次:前端层、逻辑层、云服务层。
(1)前端层是小程序功能最直接的体现。前端基于小程序特有的应用开发框架MINA,该框架提供了基础组件和丰富的微信原生API,使“掌上有数”小程序页面简洁美观,编程语言主要是WXML、WXSS、JavaScript。
(2)逻辑层是小程序数据通信的核心部分,是开发者与小程序直接“交流”的空间。"掌上有数"小程序有澡堂人流量实时查询、餐厅菜品查看、通知公告和联系建议四大基础页面,MINA 框架在前端层与逻辑层间提供了数据传输系统,管理了页面间的路由、切换与每个页面的生命周期,保证了“掌上有数”小程序页面切换流畅和用户的良好体验感。四大基础功能采用模块化设计,利于小程序后期修改完善。逻辑层基于小程序API,与云服务层进行数据传输、方法函数调用,用户进入小程序点击屏幕按钮(选择功能)时,逻辑层触发函数发起云调用,获取云函数返回的实时人流量数据,并将数据反馈给用户。
(3)服务层是小程序的技术保障后台部分,云函数基于node[14],引入git 开源项目 request-promise 外包发起云调用,进行https 请求调取中端服务器的数据。
小程序云开发(CloudBase)集成于小程序控制台的原生 Serverless 云服务,为开发者提供完整的原生云端支持和微信服务支持,底层由腾讯云提供专业支持,以确保本研究数据安全,且服务稳定。传统开发小程序需要购买域名、物理机托管、专门的运维人力等,无疑是高花销且大工作量[15]。而云开发使用腾讯云服务取代第三方服务器,只需专注编写核心逻辑代码,借助云开发提供的丰富的云端 API ,就可以实现数据的存储传递、文件的上传、结果的计算等,确保本研究高效完成。
综上,借助于云开发云端一体化的全新研发和运维模式,在高效、安全开发的需求背景下,云开发无疑是最佳的技术选型方案。本设计遵从小程序界面——微信后台——云开发这一公网链路,如图4 所示。从”掌上有数“小程序端触发的云函数,发起云调用会经过微信自动鉴权,微信后台通过专线走内网,将请求传递给云开发后台服务。该专线是私有协议,不仅保障了“掌上有数”小程序的数据安全性[15],而且提高了传输性能。
本设计主要使用了小程序云开发的云函数、云存储和云数据库三大功能[16]。用户点击数据图展示页面,触发相应云函数中读写 JSON 云数据库中存储的不同时段人流量数据,该页面基于云数据库和开源可视化图表库Echarts,使统计数据直观的显示在移动端,增强用户体验感,如图5 所示。用户在手机端通过点击“澡堂人流查询”,该页面相应的触发函数发起云调用 wx.cloud.callFunction,定义的云函数代码会在云端 Node.js 环境中执行,使用axios 中post请求URL,根据中端服务器的请求条件发送异步请求,即可将数据返回微信后台,流程见图6 所示,最终通过小程序的前端显示在用户手机界面上。
系统测试针对红外计数器计数功能和移动端小程序的查询准确度,通过比较人工统计和系统监测的进出入人数,测试硬件检测功能。通过比较人工统计与小程序查询所得数据,测试云服务器后台的数据处理、和用户手机端小程序的信息通信功能。
将两个红外对射计数器安装在门框两侧,从8:00 至10:00,时长2 小时内两名测试人员分别多次经过,测试情况下单人进出入,如图7 所示。系统监测的数据,微信开发者工具调试器输出结果显示如图8 所示,“leftNum”对应进入人数,“rightNum”对应出去人数。手机端“掌上有数”小程序查询显示如图9 所示,该页面显示进60 出58,当前滞留人数为2,小程序页面显示与后台检测数据一致,表明云服务器与小程序数据通信正常。测试结果表明该系统可以达到人流量监测效果,如表1 所示,符合设计需求。
“掌上有数”微信小程序的系统维护基于小程序云开发控制台,控制台监控图表清晰统计了云函数读取写入及请求次数,云存储上传次数、CDN 流量,云函数调用次数、使用时间等,根据上述数据可以分析小程序的用户行为,对小程序进行及时更新、优化、整合。同时,”掌上有数“小程序将计划绑定学校后勤官方公众号,进一步与校园后勤管理系统融合,保证小程序服务持久高效。
表1:测试数据
本设计基于小程序的前端技术(WXML+WXSS+JavaScript)与云开发后端技术,实现了用户通过手机微信端,可以实时查看具体区域进出入人数的设想。本文所设计的人流量监测系统工作稳定,代码简洁,且系统在软硬件端相互独立,适用于不同的环境,只需做出少量变动,就可以在很多地方完成人流量监测,对于其它使用小程序云开发实现相似功能的设计有一定的借鉴意义。