基于Wi-Fi的旅游團脫團預警系統(tǒng)的設計與實現(xiàn)
Wi-Fi是當今日常生活中使用十分廣泛的無線傳輸技術,隨處可見的Wi-Fi網(wǎng)絡大大促進了移動互聯(lián)網(wǎng)的發(fā)展。網(wǎng)絡覆蓋范圍小是智能路由的一個缺點,但是在某些特定情景下,利用其覆蓋面積小的特點,可以滿足特殊的需求。例如需要監(jiān)控某個終端是否處于一定范圍內(nèi)時,我們可以通過監(jiān)控該終端是否處于某個Wi-Fi覆蓋區(qū)域內(nèi)來實現(xiàn)。本文根據(jù)這一思路,設計并實現(xiàn)了一套旅游團脫團預警系統(tǒng),通過基于OpenWrt的智能路由器實現(xiàn)Wi-Fi探針,監(jiān)控路由器信號范圍內(nèi)的終端,并由基于Android系統(tǒng)實現(xiàn)的手機客戶端進行分析比對,最終達到脫團預警的目的。
Wi-Fi是一種短程無線傳輸技術,能夠在一定范圍內(nèi)支持互聯(lián)網(wǎng)接入的無線電信號。它的***優(yōu)點是傳輸速度較高,在信號較弱或有干擾的情況下,帶寬可調(diào)整,有效地保障了網(wǎng)絡的穩(wěn)定性和可靠性。另外它的傳輸有效距離也很長,在開放性區(qū)域通信距離可達305米,使用特殊的天線技術可以達到1000米左右,在封閉性區(qū)域通信距離為76米~122米,加入功率放大電路可以增加其傳輸距離。近年來,Wi-Fi技術在智能家居、工業(yè)控制、移動手持設備等嵌入式環(huán)境中需求日益增多。
如今隨著智能終端設備的普及、智能路由器的發(fā)展,市場上出現(xiàn)了一系列結(jié)合智能終端和智能路由器的應用系統(tǒng)。隨著旅游業(yè)的迅速發(fā)展、旅游人數(shù)的增多,經(jīng)常有“游客脫團”現(xiàn)象的發(fā)生,導游需要時刻關注旅行團中人員數(shù)量,這對于導游來說是種負擔。利用Wi-Fi的探測功能可以開發(fā)一套脫團預警系統(tǒng),在旅游團中,導游可根據(jù)該系統(tǒng)查看團員是否脫團。其優(yōu)勢在于搭建成本小、使用方便。但由于智能路由器是依據(jù)終端設備與人的映射來建立監(jiān)控,其準確性可能會差于傳感器的檢測。
本文以基于Android系統(tǒng)的智能手機和基于OpenWrt的智能路由為例,設計實現(xiàn)了一套監(jiān)控系統(tǒng),其使用場景為前文所述的旅游團導游監(jiān)控團員是否脫團。該套系統(tǒng)具有簡單易用、簡易部署的特點,十分符合上述使用場景。
系統(tǒng)模塊設計
該系統(tǒng)主要由3部分內(nèi)容構(gòu)成:搭載在Android系統(tǒng)上的脫團預警APP客戶端、智能路由器上的編程、服務器端。圖1展示了3個組件的不同職能和相互之間的聯(lián)系。
1.Android客戶端設計 Android客戶端供團隊中的導游或領隊使用,主要具有以下兩個方面功能。
***,導游可以方便地通過客戶端連接智能路由,連接完畢后可以通過認證系統(tǒng)獲取用戶身份,完善相應權(quán)限的鑒權(quán)操作。通過了鑒權(quán)的用戶可以查看所連接路由的信息,并且對路由進行操作。由于智能終端和智能路由的可交互操作,在該應用場景下,用戶無需連接互聯(lián)網(wǎng)即可獲得流量統(tǒng)計的相關數(shù)據(jù)。
第二,導游在連接互聯(lián)網(wǎng)之后,可以新建旅游團,完善旅游團信息,等待團員的簽到,流程如圖2所示。導游新建旅游團完畢后,團員可通過簽到網(wǎng)址進行簽到,此操作是為了獲取團員的手機MAC地址,為后續(xù)的脫團監(jiān)測所用。游客簽到的流程如圖3所示。游客簽到完畢后,導游可開啟脫團預警功能,脫團預警的流程如圖4所示。
2.智能路由器端功能設計智能路由器上需要進行以下兩個模塊的開發(fā)。
(1)需要開發(fā)數(shù)據(jù)采集模塊,采集連接到路由器上手機的MAC地址。該功能采用Wi-Fi探針技術實現(xiàn),原理是利用智能設備商Wi-Fi模塊發(fā)出的無線廣播信號進行設備的感知。
(2)保存采集到的MAC地址、連接時間等數(shù)據(jù),存儲在本地,以供客戶端進行分析和展現(xiàn)。
由于OpenWrt系統(tǒng)的長足發(fā)展,其支持的路由芯片越來越多,通過簡單易用的方式降低了嵌入式Linux開發(fā)的門檻。因此本課題中的智能路由器基于OpenWrt進行開發(fā)。
3.服務器端功能設計服務器端的主要職能是負責與客戶端的通信,在后臺備份旅游團數(shù)據(jù)。服務器提供了接口可供客戶端調(diào)用,客戶端通過提供的接口進行旅游團的創(chuàng)建。同時,服務器端維護了簽到的入口,游客通過簽到入口將個人信息上報至服務器,服務器將對應信息同步給客戶端,本文中的服務器端基于Play框架進行開發(fā)。
智能路由器端實現(xiàn)原理
1.數(shù)據(jù)采集模塊數(shù)據(jù)采集模塊是智能路由器端的核心,該模塊通過以下3個子模塊進行數(shù)據(jù)采集。
(1)數(shù)據(jù)搜集。數(shù)據(jù)搜集子模塊工作在路由器的驅(qū)動層。路由器硬件接收到當前信道上的數(shù)據(jù)幀之后上報硬件終端。終端處理函數(shù)通過幀頭信息判斷幀的類型,并將相關信息提取出來,然后調(diào)用數(shù)據(jù)廣播子模塊提供的數(shù)據(jù)發(fā)送接口,發(fā)送給用戶層的數(shù)據(jù)接收子模塊。
(2)數(shù)據(jù)廣播。數(shù)據(jù)廣播子模塊實時監(jiān)聽數(shù)據(jù)搜集子模塊發(fā)送來的數(shù)據(jù),將數(shù)據(jù)搜集子模塊發(fā)送的數(shù)據(jù)發(fā)送給數(shù)據(jù)接收子模塊,這些是主要的探針數(shù)據(jù)。數(shù)據(jù)廣播子模塊與其他子模塊之間的數(shù)據(jù)交互如圖5所示。
(3)數(shù)據(jù)接收。數(shù)據(jù)接收子模塊根據(jù)應用層發(fā)來的參數(shù),決定是否接收驅(qū)動層發(fā)送上來的數(shù)據(jù),以及接收數(shù)據(jù)后,將數(shù)據(jù)以怎樣的格式打印到控制臺。數(shù)據(jù)接收子模塊是連接驅(qū)動和應用層的一個核心模塊,需要實時監(jiān)聽驅(qū)動層送來的探針數(shù)據(jù),又可以接收用戶設定的參數(shù),將一些參數(shù)通過數(shù)據(jù)廣播子模塊設定進內(nèi)核并驅(qū)動。該模塊目前接收兩個主要的用戶設置參數(shù),一是監(jiān)聽探測數(shù)據(jù),二是設置RSSI的值。
2.數(shù)據(jù)處理模塊數(shù)據(jù)處理模塊調(diào)用數(shù)據(jù)偵聽模塊,獲取數(shù)據(jù)偵聽模塊打印到控制臺的數(shù)據(jù),通過腳本將需要的探測幀的數(shù)據(jù)過濾出來,為每條數(shù)據(jù)打上時間戳,并進行簡單的加密處理,***將處理好的數(shù)據(jù)寫入本地文件,保存在固定路徑中。
客戶端將每隔一定時間請求路由器端的數(shù)據(jù),通過FTP登錄路由器,下載指定路徑中的文件,對文件進行解析后獲得所需的數(shù)據(jù)。
關鍵技術
1.利用Wi-Fi探針監(jiān)測獲取原始數(shù)據(jù) 802.11協(xié)議可以支持利用Wi-Fi探針實現(xiàn)監(jiān)測周圍終端的功能。協(xié)議要求每個AP(Access Point)每隔一定時間(幾十毫秒到幾秒不等)向周圍的終端廣播beacon幀,告知周圍終端自己的信息,并通知終端可以連接。每個終端除了監(jiān)聽周邊AP發(fā)送的beacon幀以外,還會發(fā)送probe幀,告知AP自己的MAC地址,并請求連接。
一般的無線路由器信號強度在-30dbm~-120dbm,有效距離大概是50~100米。利用路由能夠搜索周圍終端的MAC地址。路由收到探測幀后,將MAC地址記錄下來,生成“MAC地址-信號強度-時間”格式的原始數(shù)據(jù),將其保存成文本文件,等待服務器定時下載,進行處理分析。
2.通過處理原始數(shù)據(jù)進行脫團預警在本文的監(jiān)控系統(tǒng)中,脫團預警是通過比對原始數(shù)據(jù)與白名單中的數(shù)據(jù)實現(xiàn)的。在智能路由器端,每隔一定時間刷新一次原始數(shù)據(jù)并寫入文件保存;在客戶端,每隔一定時間下載一次原始數(shù)據(jù)文件,并與白名單中的數(shù)據(jù)進行比對,如果發(fā)現(xiàn)白名單中的某個MAC地址沒有在原始數(shù)據(jù)文件中出現(xiàn),則發(fā)出警告。
由于原始數(shù)據(jù)量較為龐大,而白名單通常只有十幾個到幾十個,因此我們采取的比對算法如下:
- (1)將客戶端本地保存的白名單復制到哈希表中,以MAC地址為key;
- (2)遍歷原始數(shù)據(jù),每條MAC地址均在哈希表中查找,如果找到該條地址,則將該條地址從哈希表中移除;
- (3)如果哈希表長度變?yōu)?,說明所有白名單中的地址均在原始數(shù)據(jù)中出現(xiàn),比對結(jié)束;
- (4)如果原始數(shù)據(jù)遍歷完畢,則哈希表中剩余的地址為未出現(xiàn)的地址,發(fā)出脫團預警。
在白名單長度不太長的情況下,哈希表的性能不會有太大降低,可近似認為每次查找的時間復雜度為O(1),總的比對過程時間復雜度為O(n),較為高效。
結(jié)束語:本文基于旅游團的實際需求出發(fā),設計了一套完整的脫團預警監(jiān)控系統(tǒng),并基于Android系統(tǒng)、Play框架和OpenWrt平臺進行了實現(xiàn)。該套系統(tǒng)在測試和實際使用中均取得了良好的效果,同時也為Wi-Fi探針技術的應用做出了有益的探索,為基于Wi-Fi面向不同情景應用系統(tǒng)的開發(fā)提供了一些參考價值。