吳 戀,黃俊偉,黃一峰
(重慶郵電大學新一代寬帶移動通信終端研究所,重慶 400065)
MIFI這個名字代表“My WiFi”,即為用戶提供隨時隨地的隨身WiFi,是近年來市場上火熱的一種便攜式WiFi熱點終端。它具有小巧便于攜帶的特點,集調(diào)制解調(diào)器、路由器和接入點三者功能于一身,可利用SIM卡連接互聯(lián)網(wǎng),將SIM卡接收到的移動通信網(wǎng)絡信號(LTE/3G/2G)以IEEE802.11無線通信標準WiFi網(wǎng)絡的形式分享出來供上網(wǎng)設備連接上網(wǎng),實現(xiàn)隨身WiFi[1]。對MIFI設備的管理配置與路由器的管理相同,都是通過Web遠程管理設備。本文基于LuCI框架設計與實現(xiàn)一款MIFI的Web遠程管理系統(tǒng)。
本文實現(xiàn)的這款MIFI有兩個操作系統(tǒng),一個是基帶相關的實時操作系統(tǒng),決定了產(chǎn)品設備能支持什么樣的網(wǎng)絡(GSM,CDMA,WCDMA,TD-SCDMA,LTE);另一個是Linux內(nèi)核的路由操作系統(tǒng),是主控系統(tǒng),負責與基帶通信將網(wǎng)絡信號轉(zhuǎn)為WiFi信號,以及其他諸多功能。關于MIFI的設計與實現(xiàn)這里不展開說明,本文主要就基于Lu-CI框架來設計與實現(xiàn)這款MIFI的Web遠程管理系統(tǒng)作討論。
預實現(xiàn)的目標見表1。
表1 預期實現(xiàn)的目標
參照Openwrt的方式搭建LuCI環(huán)境,Openwrt中的Web系統(tǒng)主要由3部分組成——LuCI部分(主要的業(yè)務功能)、www部分(Web server啟動目錄,基本所有的js,css都在里面)、config部分(配置文件,Web界面上的很多操作就是對相應的配置文件進行讀取、修改)。
環(huán)境的搭建:
1)所需下載的軟件包:lua,luci。
2)組件luci文件夾:把luci運行所需要的庫放到luci文件夾根目錄。
3)建立動態(tài)連接庫:有一些.so需要C庫的支持,比如 uci.so 需要 libuci.so.0.8 等,需搬移安裝。
4)建立config文件夾:在/etc/config/下面建立配置文件。
5)移植Web服務器:把已經(jīng)編譯好的uhttpd拷貝到相應的bin下面。
6)組件www文件夾。
借助LuCI框架開發(fā)一套MIFI的Web遠程界面、建立物理邏輯連接,實現(xiàn)對MIFI系統(tǒng)的狀態(tài)顯示和遠程控制。根據(jù)其功能需求可知系統(tǒng)大致包括5個模塊,每個模塊下有各自對應需求的選項設置,如圖1所示。
圖1 LuCI app整體框架
為了看到代碼修改效果的實時性,這里是以鏡像燒寫到實驗板上,當然也可以在編譯前的LuCI源碼包中去修改代碼。
在controller下創(chuàng)建一個一級選單項及節(jié)點,controller下一個文件對應一個選單項,在controller的管理用戶目錄下新建一個lua文件,例如wifi.lua。
在model或view下編寫節(jié)點對應的顯示頁面,對應controller下lua文件中調(diào)用到的cbi,template等在model或view目錄下建立相應的調(diào)用文件。
若創(chuàng)建了model下的文件,還需根據(jù)該lua文件操作的配置文件名稱在config中添加同名的配置文件。配置文件是Web遠程控制的關鍵,用戶在瀏覽器上對MIFI的操作最終體現(xiàn)在改變MIFI配置文件中的參數(shù),并使其執(zhí)行當前的配置。
在LuCI已有的模塊中根據(jù)需要添加或刪除某節(jié)點的方法如下:
1)在LuCI代碼中找到對應的模塊文件,一般就是controller下面的lua文件;
2)在模塊的入口函數(shù)function index()中添加或刪除一個entry(path,target,title=nil,order=nil),根據(jù)entry函數(shù)中的target到對應的model或view下編寫或刪除同名的文件。
遠程控制的過程是瀏覽器端網(wǎng)頁界面通過http與MIFI中的httpd通信,httpd通過cgi接口與LuCI通信,然后通過UCI接口將數(shù)據(jù)傳送到相應的配置文件中保存并通知相應模塊執(zhí)行相關操作[5-6]。以實際WiFi設置為例,當用戶在Web頁面上修改了ssid后點擊頁面的“確定”按鈕,將執(zhí)行傳遞數(shù)據(jù)到config下的WiFi配置文件中option‘ssid’處,并執(zhí)行 set_wireless.sh 這個腳本,該腳本為筆者編寫的shell腳本,主要實現(xiàn)將WiFi芯片重啟并到WiFi配置文件中重讀參數(shù)的功能?!按_定”按鈕點擊后的所有操作均在cbi.lua中添加,部分代碼如下:
界面的風格主要是css和js類控制,相關文件在根目錄www/luci-static里面。現(xiàn)在的網(wǎng)頁設計都是將內(nèi)容與表現(xiàn)形式分離,css提供了對網(wǎng)頁布局和設計的創(chuàng)造性控制,不僅維護站點更加容易,而且還可以使HTML代碼更加簡練,縮短瀏覽器的加載時間。css與HTML共同起作用,但css不是HTML,它是一種完全不同的語言,瀏覽器不同,其引擎也不同,對css的解釋也不一樣,導致在有些瀏覽器上展現(xiàn)的效果并非預期,甚至更糟,所以瀏覽器間的兼容性問題值得思考。
各瀏覽器可以識別的特定代碼[7]情況見表2。
表2 主流瀏覽器特定代碼識別情況
測試驗證結(jié)果見表3。
表3 測試驗證
成果展示如圖2所示。
利用LuCI框架設計與實現(xiàn)了一款MIFI產(chǎn)品的Web遠程控制系統(tǒng),詳述了實現(xiàn)的方法及關鍵點,提供了一種快速構(gòu)建嵌入式設備的Web遠程管理系統(tǒng)的方案。經(jīng)驗證,本遠程Web管理系統(tǒng)成功實現(xiàn)了在Web上遠程查看MIFI系統(tǒng)狀態(tài)信息及對其的設置,且系統(tǒng)穩(wěn)定、響應迅速。經(jīng)實踐可知,LuCI雖然是為openwrt快速配置而生,但還可單獨將它應用于其他很多系統(tǒng)和場景中,并延伸出另一個靈活的lua Web框架。
圖2 最終實現(xiàn)的Web遠程控制系統(tǒng)部分展示圖(截圖)
:
[1]Wikipedia.MIFI[EB/OL].[2013-04-26].http://en.wikipedia.org/wiki/MIFI.
[2]Open Wrt.Open Wrt wireless freedom[EB/OL].[2013-04-26].https://Openwrt.org/.
[3]LuCI.LuCI[EB/OL].[2013-03-11].http://LuCI.subsignal.org/.
[4]張志賀.LuCI框架的簡介[EB/OL].[2013-04-20].http://blog.csdn.net/zzhjava2006/article/details/6315970.
[5]王海龍,徐曉輝.基于嵌入式 Web服務器的遠程控制系統(tǒng)的實現(xiàn)[J].電子設計工程,2010(5):101-103.
[6]南春輝.基于Web技術的嵌入式智能家居系統(tǒng)設計[J].電視技術,2013,37(3):86-89.
[7]蔣回生.淺談網(wǎng)頁制作中瀏覽器差異性——樣式兼容問題[J].電腦知識與技術,2010,06(27).