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

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面向不同情景应用系统的开发提供了一些参考价值。

作者:佚名

来源:51CTO

时间: 2024-08-22 15:49:14

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

基于安卓的坦克大战的地图该怎么设计

问题描述 基于安卓的坦克大战的地图该怎么设计 基于安卓的坦克大战的地图该怎么设计,其中应用到TileTileLayerLayerManagerSprit设计的思路是什么 解决方案 http://wenku.baidu.com/link?url=7SVCXIZvL4lMgmFu8LrOp5vEujkNZvSrSwy3cAXuR0LBD1-AD_2AMNPGChYGrlodc6mWuQMzhcEvDvZ8AKYis21ZYzkKShYsSJsFqgCI-Nehttp://www.educity.cn

基于ios的公路工程监理系统要怎么设计

问题描述 基于ios的公路工程监理系统要怎么设计 基于ios的公路工程监理系统要怎么设计,可以说一下大概嘛?基于ios的公路工程监理系统要怎么设计,可以说一下大概嘛?基于ios的公路工程监理系统要怎么设计,可以说一下大概嘛? 解决方案 不熟悉这个行业的,真的无法帮助到你. 解决方案二: 都差不多,估计工程管理类的可以参照github的思路

基于QT的自动投币贩卖机的设计与实现

问题描述 基于QT的自动投币贩卖机的设计与实现 我的毕设题目,但是木有头绪,求大神,求代码.,,谢谢!还有就是,我不清楚的代码,主要能把系统运行起来就OK 解决方案 这个是基于嵌入式Linux系统的还是基于Android系统的,有特定的需求么?自动投币,这是一个基于硬件基础实现的,必须需要有一个类似传感器的硬件识别投入的是否是money.以及是多大的value的.至于后面的销售系统部分还是比较容易实现的,数据保存部分可以考虑使用sqlite来做. 解决方案二: 没有特定的需求,只要求有界面,然后

PHP基于反射机制实现插件的可插拔设计详解_php技巧

本文实例讲述了PHP基于反射机制实现插件的可插拔设计.分享给大家供大家参考,具体如下: 说PHP和ASP等同的朋友们可以就此打住了,PHP支持反射,而且还是非常的强大.好了,我们开始今天的话题. 功能描述: 页面拥有一个主导航菜单,里头有默认连接若干. 插件统一存放在一个目录,插件载入后会自动在导航菜单中增加上自己所需的链接. 插件载入时可执行一定的操作. 动态增删插件无需改动代码. 最终效果: 首页,插件1,插件2 "首页"是系统自带的菜单项."插件1"和&quo

基于REST教育云互操作API的研究与设计

基于REST教育云互操作API的研究与设计 东北师范大学  高明 研究内容有以下几个方面:(1)教育云及其互操作的研究.学界讨论教育云的不多,多是对云计算技术的探讨.笔者借鉴云计算技术,利用云计算应用到教育中的特点与需求,概括出系统的教育云及其互操作的概念,明确了研究方向.(2)教育云服务互操作的需求分析.把握教育云互操作API的服务对象,即教育云到底要互操作哪些内容,内容之间的界限是什么,约束条件有哪些,确立教育云互操作API的研究对象,有的放矢.(3)教育云互操作框架的研究.构建教育云互操作

基于Hadoop的汽车后市场商品数据平台设计

基于Hadoop的汽车后市场商品数据平台设计 华南理工大学 李石清 首先对Hadoop及相关技术进行研究,分析了Hadoop与云计算的联系,并着重介绍了Hadoop的HDFS分布式系统和MapReduce编程架构.对HDFS的特性.数据块抽象技术.和HDFS的Master-Slave(管理者-工作者)模式进行深入研究,对MapReduce的特性和架构模式也进行了相应的研究.另外根据商品数据非结构化的特点,还着重分析了MongoDB非结构化数据库的特性和工作方式.随后根据项目的详细需求分析结果和H

基于云环境的联招报名系统研究与设计

基于云环境的联招报名系统研究与设计 广东工业大学  蔡永强 本文介绍了云计算的基本理论和服务模式,综合介绍了目前比较成熟的几种云计算平台,重点研究了Google的云平台Google App Engine的关键技术和难点,根据作者在广东省教育考试院实习工作的基础之上,研究集成SpringMVC框架的应用与Google云平台的结合的方式;采用Google Web Toolkit实现AJAX技术重新设计表示层,降低了Javascript脚本开发.调试.维护的难度,避免了应用系统的浏览器兼容问题;研究利

基于云计算的分布式校园视频监控系统的设计

基于云计算的分布式校园视频监控系统的设计 朱琳 针对传统校园视频监控系统存在的因数据传输量过大而造成的带宽资源不足 数据存储量有限 系统计算能力不足等问题提出基于云计算的分布式校园视频监控系统 通过分布式计算将海量视频数据拆分处理应用虚拟化资源替代有限的物理资源实现存储的的完全虚拟化提供更强的存储和共享功能 并将校园监控系统的有线网络与无线网络融合在一起最合理化的使用系统资源 实验证明应用云计算架构的校园视频监控系统视频图像清晰流畅信息处理能力大大提高拥有海量存储能力具有安全稳定高性能和高可扩展

云计算架构下的安全生产应急预测预警系统的设计和应用

云计算架构下的安全生产应急预测预警系统的设计和应用 任钢,王国栋 云计算是 IT 行业的前沿学科.本文介绍了云计算的概念.架构和特点,并论述了应急预测预警系统构建在云计算平台的可行性.接着详细描述了安全生产应急预测预警系统在云计算架构上的应用模式.技术架构.功能模块和应用流程. 关键词:云计算:安全生产管理:应急预测预警系统 temp_12110108255598.rar