吳 戀,黃俊偉,黃一峰
(重慶郵電大學新一代寬帶移動通信終端研究所,重慶 400065)
MIFI這個名字代表“My WiFi”,即為用戶提供隨時隨地的隨身WiFi,是近年來市場上火熱的一種便攜式WiFi熱點終端。它具有小巧便于攜帶的特點,集調制解調器、路由器和接入點三者功能于一身,可利用SIM卡連接互聯網,將SIM卡接收到的移動通信網絡信號(LTE/3G/2G)以IEEE802.11無線通信標準WiFi網絡的形式分享出來供上網設備連接上網,實現隨身WiFi[1]。對MIFI設備的管理配置與路由器的管理相同,都是通過Web遠程管理設備。本文基于LuCI框架設計與實現一款MIFI的Web遠程管理系統。
本文實現的這款MIFI有兩個操作系統,一個是基帶相關的實時操作系統,決定了產品設備能支持什么樣的網絡(GSM,CDMA,WCDMA,TD-SCDMA,LTE);另一個是Linux內核的路由操作系統,是主控系統,負責與基帶通信將網絡信號轉為WiFi信號,以及其他諸多功能。關于MIFI的設計與實現這里不展開說明,本文主要就基于Lu-CI框架來設計與實現這款MIFI的Web遠程管理系統作討論。
預實現的目標見表1。

表1 預期實現的目標
參照Openwrt的方式搭建LuCI環境,Openwrt中的Web系統主要由3部分組成——LuCI部分(主要的業務功能)、www部分(Web server啟動目錄,基本所有的js,css都在里面)、config部分(配置文件,Web界面上的很多操作就是對相應的配置文件進行讀取、修改)。
環境的搭建:
1)所需下載的軟件包:lua,luci。
2)組件luci文件夾:把luci運行所需要的庫放到luci文件夾根目錄。
3)建立動態連接庫:有一些.so需要C庫的支持,比如 uci.so 需要 libuci.so.0.8 等,需搬移安裝。
4)建立config文件夾:在/etc/config/下面建立配置文件。
5)移植Web服務器:把已經編譯好的uhttpd拷貝到相應的bin下面。
6)組件www文件夾。
借助LuCI框架開發一套MIFI的Web遠程界面、建立物理邏輯連接,實現對MIFI系統的狀態顯示和遠程控制。根據其功能需求可知系統大致包括5個模塊,每個模塊下有各自對應需求的選項設置,如圖1所示。

圖1 LuCI app整體框架
為了看到代碼修改效果的實時性,這里是以鏡像燒寫到實驗板上,當然也可以在編譯前的LuCI源碼包中去修改代碼。
在controller下創建一個一級選單項及節點,controller下一個文件對應一個選單項,在controller的管理用戶目錄下新建一個lua文件,例如wifi.lua。
在model或view下編寫節點對應的顯示頁面,對應controller下lua文件中調用到的cbi,template等在model或view目錄下建立相應的調用文件。
若創建了model下的文件,還需根據該lua文件操作的配置文件名稱在config中添加同名的配置文件。配置文件是Web遠程控制的關鍵,用戶在瀏覽器上對MIFI的操作最終體現在改變MIFI配置文件中的參數,并使其執行當前的配置。
在LuCI已有的模塊中根據需要添加或刪除某節點的方法如下:
1)在LuCI代碼中找到對應的模塊文件,一般就是controller下面的lua文件;
2)在模塊的入口函數function index()中添加或刪除一個entry(path,target,title=nil,order=nil),根據entry函數中的target到對應的model或view下編寫或刪除同名的文件。
遠程控制的過程是瀏覽器端網頁界面通過http與MIFI中的httpd通信,httpd通過cgi接口與LuCI通信,然后通過UCI接口將數據傳送到相應的配置文件中保存并通知相應模塊執行相關操作[5-6]。以實際WiFi設置為例,當用戶在Web頁面上修改了ssid后點擊頁面的“確定”按鈕,將執行傳遞數據到config下的WiFi配置文件中option‘ssid’處,并執行 set_wireless.sh 這個腳本,該腳本為筆者編寫的shell腳本,主要實現將WiFi芯片重啟并到WiFi配置文件中重讀參數的功能。“確定”按鈕點擊后的所有操作均在cbi.lua中添加,部分代碼如下:

界面的風格主要是css和js類控制,相關文件在根目錄www/luci-static里面。現在的網頁設計都是將內容與表現形式分離,css提供了對網頁布局和設計的創造性控制,不僅維護站點更加容易,而且還可以使HTML代碼更加簡練,縮短瀏覽器的加載時間。css與HTML共同起作用,但css不是HTML,它是一種完全不同的語言,瀏覽器不同,其引擎也不同,對css的解釋也不一樣,導致在有些瀏覽器上展現的效果并非預期,甚至更糟,所以瀏覽器間的兼容性問題值得思考。
各瀏覽器可以識別的特定代碼[7]情況見表2。

表2 主流瀏覽器特定代碼識別情況
測試驗證結果見表3。

表3 測試驗證
成果展示如圖2所示。
利用LuCI框架設計與實現了一款MIFI產品的Web遠程控制系統,詳述了實現的方法及關鍵點,提供了一種快速構建嵌入式設備的Web遠程管理系統的方案。經驗證,本遠程Web管理系統成功實現了在Web上遠程查看MIFI系統狀態信息及對其的設置,且系統穩定、響應迅速。經實踐可知,LuCI雖然是為openwrt快速配置而生,但還可單獨將它應用于其他很多系統和場景中,并延伸出另一個靈活的lua Web框架。

圖2 最終實現的Web遠程控制系統部分展示圖(截圖)
:
[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服務器的遠程控制系統的實現[J].電子設計工程,2010(5):101-103.
[6]南春輝.基于Web技術的嵌入式智能家居系統設計[J].電視技術,2013,37(3):86-89.
[7]蔣回生.淺談網頁制作中瀏覽器差異性——樣式兼容問題[J].電腦知識與技術,2010,06(27).