张国林,罗回彬,郑泽江,董晋源,刘永怡
(北京理工大学珠海学院计算机学院,珠海519000)
在公共场所,如大型商场和景区,各项指标如客流量的大小和人流分布等在商业数据分析中发挥着重要作用。传统的客流统计方式有人工统计、红外感应、视频检测等。其中,人工统计相对来说成本较低,但仅限于短时间内的客流量统计,随着时间的增加数据的误差将逐渐增大;红外感应则不能区分对象是否被重复计数,统计精度受红外感应装置安装位置影响较大;而视频检测相对来说需要的计算资源较大,而且易受光照强度、遮挡等影响。
而随着移动互联网的普及,智能手机用户已经越来越多,人们随时随地想上网的需求越来越大,因此很多公共场所开放了免费Wi-Fi 为大众带来便利,与此同时也为商户更加深入的了解消费者需求提供了全新渠道。例如,可以利用Wi-Fi 探针技术通过对手机MAC 地址的分析来进行对客流量的分析,同时还利用延伸的标杆管理才能,较好洞悉并提供有助于推动实际客流量和消费者习惯行为的一系列因素。例如,通过驻店时长可以快速掌握店招、产品或营销活动的吸引力,从而能够及时改变营销方案,对商业绩效能产生较好的促进作用。因此,基于Wi-Fi 探针客流统计分析的系统的开发意义非凡。
基于Wi-Fi 探针的客流统计分析系统主要通过Web 客户端和后台服务进行交互实现响应的功能,主要分为Wi-Fi 探针、数据库、后台服务器模块、Web 客户端,系统整体框架如图1 所示。
(1)Wi-Fi 探针主要作用是采集实时用户智能手机的Wi-Fi 信号的强弱程度、获取用户智能手机的MAC地址和当前获取人数等数据,发送到后台服务器进行处理并存储到数据库;
(2)数据库的数据包括:用户智能手机MAC 地址、RSSI 数值、设备ID、具体客户的访问时间、访问次数、访问时长、用户信息等数据;
(3)后台服务器模块主要进行处理分析从Wi-Fi探针收集到的零散数据,利用MAC 地址识别不同的用户,利用RSSI 数值的大小(Wi-Fi 信号的强弱)判断具体用户的大概所在范围从而判断此用户是属于客流量范畴还是人流量的范畴等理念,逐一分析,将零散看似无用的数字整理成有价值的数据;
(4)Web 客户端主要进行数据显示,可以查看当前门店客流量,也可以通过地图切换到其他门店,了解其他门店的客流情况。
图1 系统整体架构
基于以上整体设计和业务功能要求,系统进行详细设计,采用的Java+MySQL 作为主要的软件开发模式,Web 前端采用HTML+JS+CSS 的开发模式进行开发。
本系统数据处理的流程分为:数据采集、数据处理、数据储存、数据显示,具体如图2 所示。
图2 数据流程
本系统采集的数据为Wi-Fi 探针数据,Wi-Fi 探针数据是probe 帧,其以手机MAC 地址为重要组成,同时还包括了Wi-Fi 的信号强度RSSI,Wi-Fi 探针设备的设备ID,所接收到的手机信号的个数等基础数据。可以依据不同的设备ID 来识别是哪个Wi-Fi 探针获取的数据,从而可以依据不同的设备灵活处理数据。另外,由于智能手机数量较大,接收的探针数据量巨大,因此本系统采用基于UDP 的分布式集群,实现动态扩展,满足海量Wi-Fi 探针数据的接收及解析。
本该系统的后台服务器采用Java+SpringBoot 框架系统来实现。Spring Boot 是由Pivotal 团队提供的全新框架,其配置简单方便。此外,针对数据接收,本服务器采用Java 自带的Socket 包来实现UDP 的服务端。
当Wi-Fi 探针连接后台服务器时,会不停地向服务器发送与顾客智能手机相关的JSON 数据。数据样例,如下:
{
"Num":10,
"Id":3772638,
"Data":[{
"mac":"00:22:69:5a:d1:8f",
"rssi":-43
},{
"mac":"00:22:69:5a:d1:7f",
"rssi":-43
},{
"mac":"00:23:69:5a:d1:8f",
"rssi":-43
}]
}
针对JSON 数据解析,本系统采用了Java 库FastJSON 来解析Wi-Fi 探针发来的JSON 数据。利用FastJSON 库中的JSONObject 对象来逐一获取JSON 数据中的内容,以便后面的数据分析处理部分使用。
数据分析处理部分,首先依据RSSI 信号强度与距离的转换公式d = 10^((abs(rssi)- A)/ (10 * n)),式中d表示计算所得距离(单位:m);RSSI 为接收信号强度;A为发射终端和接收终端相隔1 米时的信号强度;n 为环境衰减因子。计算出该用户的大概所在位置后,在此基础上分析计算出人流量、客流量、每小时统计客流量和进店人数等数值,如表1 所示。
基于功能业务需求及规划,本系统采用的MySQL+MyBatis 的架构系统的存储模式。在Web 应用方面,MySQL 是RDBMS(关系型数据库管理系统)最好的应用软件。MyBatis 是一个优秀的持久性层框架,它支持自定义SQL、存储过程和高级映射。MyBatis 可以使用简单的XML 或注释来配置和映射本地信息、映射接口和Java POJO(通用Java 对象)到数据库中的记录。MySQL+MyBatis 的体系结构系统的存储模式可以提高系统的输入和输出性能。
表1 主要技术指标及描述
另外,在数据库的设计方面,本系统的数据库表结构主要以客户手机的MAC 地址为唯一标识存储数据,这样就可以很好地减低数据冗余情况并且可以大幅度地提升数据库的存储性能。其中关键数据表的表结构如图3 所示。
图3 关键数据表
在Web 客户端数据显示方面,本系统主要采用HTML+JS+CSS 的设计模式,此设计模式可以实现与后台服务器顺畅地进行数据交互和简洁地进行数据的展现。
在动态图表方面,本系统采用百度的ECharts 插件。ECharts 是一个纯JavaScript 图表库,与大多数浏览器的短格式图表兼容。底层依赖于轻质画布库ZRender,提供直观、生动、交互式的、高度可定制的数据可视化的图表。创新的拖放计算、数据查看和范围漫游功能,大大改善了用户体验,让用户更好地挖掘和整合数据。
此外,为了方便用户在Web 客户端清晰地查看店铺分布,系统还使用了百度map 的JavaScript API,其可以支持PC 和手机上的基于浏览器的地图应用程序开发,实现互动式地图应用。
图4 图表数据显示
图5 店面地图布局
为了验证提出的基于Wi-Fi 探针的客流统计分析系统的准确性及方便调试,本系统在实验室设置了两个Wi-Fi 探针,每隔3 秒嗅探一次MAC 地址并发送数据给后台数据服务器进行数据处理。本系统中,Wi-Fi探针发送的数据如2.3 小节所示的JSON 数据样例。本系统Web 显示效果如图6 所示,可以较好地显示当前店内各项指标数据。
图6 Web数据显示效果
本文设计并实现了一种基于Wi-Fi 探针的客流统计分析系统,可准确地计算出门店人员想要关注的客流数据,一改传统计算人流量客流量效率低和准确性低的缺点,实时性强,展现的数据拥有较高的参考价值,可以较好地提高门店或商场的管理效率,具有较大的市场价值和应用前景。