|
|
|
|
移动端

基于Wi-Fi的旅游团脱团预警系统的设计与实现

Wi-Fi是当今日常生活中使用十分广泛的无线传输技术,随处可见的Wi-Fi网络大大促进了移动互联网的发展。网络覆盖范围小是智能路由的一个缺点,但是在某些特定情景下,利用其覆盖面积小的特点,可以满足特殊的需求。例如需要监控某个终端是否处于一定范围内时,我们可以通过监控该终端是否处于某个Wi-Fi覆盖区域内来实现。本文根据这一思路,设计并实现了一套旅游团脱团预警系统,通过基于OpenWrt的智能路由器实现Wi-Fi探针,监控路由器信号范围内的终端,并由基于Android系统实现的手机客户端进行分析比对,最终达到脱团预警的目的。

作者:佚名来源:通信世界网|2016-11-09 17:12

开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享

Wi-Fi是当今日常生活中使用十分广泛的无线传输技术,随处可见的Wi-Fi网络大大促进了移动互联网的发展。网络覆盖范围小是智能路由的一个缺点,但是在某些特定情景下,利用其覆盖面积小的特点,可以满足特殊的需求。例如需要监控某个终端是否处于一定范围内时,我们可以通过监控该终端是否处于某个Wi-Fi覆盖区域内来实现。本文根据这一思路,设计并实现了一套旅游团脱团预警系统,通过基于OpenWrt的智能路由器实现Wi-Fi探针,监控路由器信号范围内的终端,并由基于Android系统实现的手机客户端进行分析比对,最终达到脱团预警的目的。

Wi-Fi是一种短程无线传输技术,能够在一定范围内支持互联网接入的无线电信号。它的最大优点是传输速度较高,在信号较弱或有干扰的情况下,带宽可调整,有效地保障了网络的稳定性和可靠性。另外它的传输有效距离也很长,在开放性区域通信距离可达305米,使用特殊的天线技术可以达到1000米左右,在封闭性区域通信距离为76米~122米,加入功率放大电路可以增加其传输距离。近年来,Wi-Fi技术在智能家居、工业控制、移动手持设备等嵌入式环境中需求日益增多。

如今随着智能终端设备的普及、智能路由器的发展,市场上出现了一系列结合智能终端和智能路由器的应用系统。随着旅游业的迅速发展、旅游人数的增多,经常有“游客脱团”现象的发生,导游需要时刻关注旅行团中人员数量,这对于导游来说是种负担。利用Wi-Fi的探测功能可以开发一套脱团预警系统,在旅游团中,导游可根据该系统查看团员是否脱团。其优势在于搭建成本小、使用方便。但由于智能路由器是依据终端设备与人的映射来建立监控,其准确性可能会差于传感器的检测。

本文以基于Android系统的智能手机和基于OpenWrt的智能路由为例,设计实现了一套监控系统,其使用场景为前文所述的旅游团导游监控团员是否脱团。该套系统具有简单易用、简易部署的特点,十分符合上述使用场景。

系统模块设计

该系统主要由3部分内容构成:搭载在Android系统上的脱团预警APP客户端、智能路由器上的编程、服务器端。图1展示了3个组件的不同职能和相互之间的联系。


图1 系统示意图

1.Android客户端设计 Android客户端供团队中的导游或领队使用,主要具有以下两个方面功能。

第一,导游可以方便地通过客户端连接智能路由,连接完毕后可以通过认证系统获取用户身份,完善相应权限的鉴权操作。通过了鉴权的用户可以查看所连接路由的信息,并且对路由进行操作。由于智能终端和智能路由的可交互操作,在该应用场景下,用户无需连接互联网即可获得流量统计的相关数据。

第二,导游在连接互联网之后,可以新建旅游团,完善旅游团信息,等待团员的签到,流程如图2所示。导游新建旅游团完毕后,团员可通过签到网址进行签到,此操作是为了获取团员的手机MAC地址,为后续的脱团监测所用。游客签到的流程如图3所示。游客签到完毕后,导游可开启脱团预警功能,脱团预警的流程如图4所示。


图2 新建旅游团流程图


图3 游客签到流程图

2.智能路由器端功能设计智能路由器上需要进行以下两个模块的开发。

(1)需要开发数据采集模块,采集连接到路由器上手机的MAC地址。该功能采用Wi-Fi探针技术实现,原理是利用智能设备商Wi-Fi模块发出的无线广播信号进行设备的感知。

(2)保存采集到的MAC地址、连接时间等数据,存储在本地,以供客户端进行分析和展现。

由于OpenWrt系统的长足发展,其支持的路由芯片越来越多,通过简单易用的方式降低了嵌入式Linux开发的门槛。因此本课题中的智能路由器基于OpenWrt进行开发。


图4 脱团预警流程图

3.服务器端功能设计服务器端的主要职能是负责与客户端的通信,在后台备份旅游团数据。服务器提供了接口可供客户端调用,客户端通过提供的接口进行旅游团的创建。同时,服务器端维护了签到的入口,游客通过签到入口将个人信息上报至服务器,服务器将对应信息同步给客户端,本文中的服务器端基于Play框架进行开发。

智能路由器端实现原理

1.数据采集模块数据采集模块是智能路由器端的核心,该模块通过以下3个子模块进行数据采集。

(1)数据搜集。数据搜集子模块工作在路由器的驱动层。路由器硬件接收到当前信道上的数据帧之后上报硬件终端。终端处理函数通过帧头信息判断帧的类型,并将相关信息提取出来,然后调用数据广播子模块提供的数据发送接口,发送给用户层的数据接收子模块。

(2)数据广播。数据广播子模块实时监听数据搜集子模块发送来的数据,将数据搜集子模块发送的数据发送给数据接收子模块,这些是主要的探针数据。数据广播子模块与其他子模块之间的数据交互如图5所示。


图5 数据广播子模块交互示意图

(3)数据接收。数据接收子模块根据应用层发来的参数,决定是否接收驱动层发送上来的数据,以及接收数据后,将数据以怎样的格式打印到控制台。数据接收子模块是连接驱动和应用层的一个核心模块,需要实时监听驱动层送来的探针数据,又可以接收用户设定的参数,将一些参数通过数据广播子模块设定进内核并驱动。该模块目前接收两个主要的用户设置参数,一是监听探测数据,二是设置RSSI的值。

2.数据处理模块数据处理模块调用数据侦听模块,获取数据侦听模块打印到控制台的数据,通过脚本将需要的探测帧的数据过滤出来,为每条数据打上时间戳,并进行简单的加密处理,最后将处理好的数据写入本地文件,保存在固定路径中。

客户端将每隔一定时间请求路由器端的数据,通过FTP登录路由器,下载指定路径中的文件,对文件进行解析后获得所需的数据。

关键技术

1.利用Wi-Fi探针监测获取原始数据 802.11协议可以支持利用Wi-Fi探针实现监测周围终端的功能。协议要求每个AP(Access Point)每隔一定时间(几十毫秒到几秒不等)向周围的终端广播beacon帧,告知周围终端自己的信息,并通知终端可以连接。每个终端除了监听周边AP发送的beacon帧以外,还会发送probe帧,告知AP自己的MAC地址,并请求连接。

一般的无线路由器信号强度在-30dbm~-120dbm,有效距离大概是50~100米。利用路由能够搜索周围终端的MAC地址。路由收到探测帧后,将MAC地址记录下来,生成“MAC地址-信号强度-时间”格式的原始数据,将其保存成文本文件,等待服务器定时下载,进行处理分析。

2.通过处理原始数据进行脱团预警在本文的监控系统中,脱团预警是通过比对原始数据与白名单中的数据实现的。在智能路由器端,每隔一定时间刷新一次原始数据并写入文件保存;在客户端,每隔一定时间下载一次原始数据文件,并与白名单中的数据进行比对,如果发现白名单中的某个MAC地址没有在原始数据文件中出现,则发出警告。

由于原始数据量较为庞大,而白名单通常只有十几个到几十个,因此我们采取的比对算法如下:

  • (1)将客户端本地保存的白名单复制到哈希表中,以MAC地址为key;
  • (2)遍历原始数据,每条MAC地址均在哈希表中查找,如果找到该条地址,则将该条地址从哈希表中移除;
  • (3)如果哈希表长度变为0,说明所有白名单中的地址均在原始数据中出现,比对结束;
  • (4)如果原始数据遍历完毕,则哈希表中剩余的地址为未出现的地址,发出脱团预警。

在白名单长度不太长的情况下,哈希表的性能不会有太大降低,可近似认为每次查找的时间复杂度为O(1),总的比对过程时间复杂度为O(n),较为高效。

结束语:本文基于旅游团的实际需求出发,设计了一套完整的脱团预警监控系统,并基于Android系统、Play框架和OpenWrt平台进行了实现。该套系统在测试和实际使用中均取得了良好的效果,同时也为Wi-Fi探针技术的应用做出了有益的探索,为基于Wi-Fi面向不同情景应用系统的开发提供了一些参考价值。

【编辑推荐】

  1. 上网体验今非昔比 北京五环内95%公交车开通免费16WiFi
  2. 轻松扩展家庭无线网络 WiFi更快更稳定
  3. 魔鬼WIFI名字密码“数字学家可以猜到”
  4. 公共WiFi需实名 连接WiFi要谨慎
  5. “16WiFi”频繁掉线及认证失败 公交移动WiFi或成伪命题?
【责任编辑:51CTO_OS TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多

读 书 +更多

Eclipse从入门到精通(第2版)

本书为《Eclipse从入门到精通》一书的全新改版。本书以最新的Eclipse 3.2作为写作版本。全书分为5篇:起步篇介绍了Eclipse及相关插件的安装...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊