常赟杰+張位勇+李桂香
摘 要: 針對由PC機控制的智能家居系統造價高、不能移動、不方便操作的缺點,提出了一種采用Web Service技術的智能家居系統實現方案。服務器端通過移植gSOAP組建嵌入式Web Service服務器和ONVIF視頻服務器,客戶端采用KSOAP2開發包進行設計。用戶可以使用Android手機或者平板電腦對家居設備進行遠程控制和視頻監控。系統操作簡單、成本低、使用方便,具有較高的實用性和推廣價值。
關鍵詞: Android; Web Service; 智能家居; 嵌入式網關; 視頻監控
中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2017)03-44-04
Abstract: For the smart home system controlled by PC has disadvantages in price, mobility and operation, a new design and implantation scheme of smart home system based Web Service is proposed. The embedded Web Service server and ONVIF video monitoring server are built by transplanting gSOAP, the client end is realized by using KSOAP2 development kit. Users can control and monitor the remote smart home devices via Android phone and tablet. The system has advantage of simple, low cost, portable and practical, and it is worth to be promoted.
Key words: Android; Web Service; smart home; embedded gateway; video monitor
0 引言
智能家居(smart home)系統通過將家居設備進行組網,將計算機技術和自動化技術進行整合,實現居家環境監測、視頻監控、家電控制,以及危險預警系統等諸多服務,提高了人們的生活水平,現在正在慢慢走進人們的生活[1]。目前,大多數的智能家居系統采用PC機進行控制,這種控制系統造價高,不能移動,不方便操作。采用手機或者平板電腦遠程連接家庭網絡,可以方便快捷的實施監控[2-5]。但是,目前采用這種手機或平板控制的智能家居系統比較少,而且大部分的功能比較單一,界面設計簡單,無法提供良好的用戶體驗。
本文提出了一種采用Web Service技術的智能家居系統實現方案。用戶可以通過運行Android系統的智能手機或者平板,連接家庭網關,對家用電器進行遠程控制,對居家環境進行遠程視頻監控。
1 系統硬件平臺
智能家居網絡總體框架如圖1所示。家庭中各個網傳感節點和Zigbee協調器組成星型通信網絡。各個傳感器節點和家居設備以Zigbee方式和協調器通信,協調器通過串口連接網關。本系統的網關采用基于ARM1176JZF-S內核,主頻533MHz的高性能嵌入式芯片S3C6410。網關上組建嵌入式Web服務器和視頻服務器,提供Web Service服務。運行在手機或平板上的智能家居控制系統客戶端通過調用Web Service服務實現以下功能。
⑴ 通過獲取溫度傳感器、濕度傳感器、光照度傳感器、紅外傳感器的數據,實現對居室環境數據進行持續的采集。
⑵ 對智能家電、智能窗簾和智能燈具等設備的控制。
⑶ 調用攝像機實現遠程視頻監控。
2 軟件框架
2.1 程序架構
本系統采用目前流行的Web Service技術,實現安卓客戶端和網關服務器之間的通信。Web Service是一種跨平臺的分布式Web應用程序。Web Service服務由服務器提供,客戶端可以在網絡上的任何一個位置調用此服務。Web Service三個重要的組成部分是SOAP、WSDL(Web Services Description Language)和UDDI(Universal Description Discovery and Integration) [6]。SOAP是一個基于XML的輕量型分布式計算協議,定義了調用Web Service服務的標準方法;WSDL用于描述訪問具體的接口的方式;UDDI用來管理、分發和查詢Web Service。
軟件框架如圖2所示。客戶端和服務器之間通過HTTP協議進行SOAP消息的傳遞。網關服務器運行Linux操作系統,提供基于SOCKET的HTTP協議通信協議。然后再移植開源Web Service工具gSOAP來提供Web Service服務所需要的XML解析器和SOAP處理器。
2.2 服務器端程序設計
服務器端程序設計步驟:首先生成C/C++頭文件;然后使用SOAP編譯器編譯后生成RPC服務框架和序列化的數據類型代碼;最后將這些代碼鏈接到服務應用程序中,就成為可供客戶端調用的Web Service。gSOAP編譯器同時會生成一個WSDL文檔用于描述這些服務。
在本設計中,客戶端的請求分為POST和GET兩種方法。GET方法用來處理靜態網頁,進而為描述接口的WSDL文件提供支持。POST方法用來實現SOAP消息的傳輸,將接收到的HTTP數據包保存在內存緩沖區,然后再進行進一步的處理。網關服務器對SOAP消息的處理過程如圖3所示。服務器在接受到客戶端的HTTP請求以后,調用相關模塊解析SOAP消息,然后根據解析結果提供相應的服務。最后將執行結果封裝成SOAP響應信息返回給客戶端。
2.3 視頻服務器程序設計
采用建立在Web Service的SOAP通信框架基礎之上的ONVIF通信標準,進行視頻服務器設計。ONVIF通過定義網絡視頻設備之間信息交換的通用標準,以實現不同廠家的視頻產品之間的互通性。ONVIF也是使用WSDL定義服務,使用XML語言描述數據,采用SOAP通信協議傳輸信息。ONVIF標準包括設備發現和設備管理兩大功能模塊,前者通過基于IP組播技術實現,后者通過傳遞SOAP消息進行通信。SOAP通信框架按照以下步驟生成[7]。
⑴ 登錄ONVIF網下載WSDL文件,該文件描述了與媒體服務相關的Web服務消息格式、操作、數據類型、協議綁定和服務地址。
⑵ 從網上下載gSOAP 2.8.21工具,解壓后得到的wsdl2h和soapcpp2文件。
⑶ 使用wsdl2h工具將WSDL文件轉換成C/C++風格的頭文件。
⑷ 使用soapcpp2工具將上一步產生的頭文件生成服務器端提供SOAP服務的框架(Skeleton)代碼。
3 安卓客戶端程序設計
3.1 客戶端與服務器之間的通信
在Android客戶端平臺上,調用服務器端的Web Service必須使用開發包KSOAP2,以實現SOAP協議的處理。KSOAP2是一個用于資源受限制的Java環境如Applets或J2ME應用程序的第三方類庫。
安卓客戶端通過調用服務器端的Web Service服務,通過對遠程數據庫的查詢、控制和管理操作,從而實現對家居設備進行控制和監視。本設計采用的KSOAP2軟件工具可以封裝用戶請求,以SOAP格式來調用Web Service,然后將返回的SOAP格式的數據信息解析為SOAP Objecet對象。KSOAP2調用Web Service步驟如下。
⑴ 下載Ksoap2-Android工具,并導入工程。
⑵ 指定Web Service的命名空間和調用Web Service方法的名稱。
⑶ 借助Soap Object對象傳遞參數。
⑷ 生成調用Web Service方法的SOAP請求信息,并指定SOAP的版本。
⑸ 調用Web Service,根據返回的數據,解析出結果。
3.2 客戶端設計
客戶端連接服務器的第一步是登錄,進行身份驗證,其流程如圖4所示。首先輸入服務器的用戶名和密碼。如果服務器驗證通過,就可以建立客戶端與服務器之間的交互通道,在主界面中接收服務器響應數據幀,同時更新所有家居設備的狀態信息。用戶登錄成功后,可以執行如下相應的動作。
⑴ 如果要控制設備或者查詢設備狀態信息,則通過Get方法發送控制幀或者查詢幀。
⑵ 如果要執行視頻監控則通過POST方法發送視頻控制命令。
⑶ 如果用戶需要更改密碼,就要輸入舊、新兩種密碼,如果密碼匹配,則服務器返回響應碼“201”,表示密碼更改成功;否則可以向服務器發送控制或者查詢請求,服務器收到后,先返回一個響應,然后執行相應的動作。
3.3 視頻監控客戶端設計
3.3.1 設備發現和管理
設備發現的主要目的就是獲取ONVIF設備的服務功能和服務地址,為后面的視頻數據接收和播放提供基礎。ONVIF協議的設備發現模塊可以讓客戶端發現服務器的RPC的入口,本設計采用WS-Discovery發現協議實現該功能。WS-Discovery [8]協議采用SOAP和UDP組播協議,客戶端使用239.255.255.250:3702地址發送組播消息自動搜索ONVIF設備。服務器端的ONVIF設備收到組播消息后進行響應,客戶端根據收到響應數據包來獲取相應的設備信息,統計搜索到的設備個數。
3.3.2 流媒體數據接收及分片打包
網關服務器攝像頭自帶視頻采集、視頻壓縮編碼功能,輸H.264格式編碼的標準數據流。客戶端通過RTSP會話接收服務器端的流媒體數據,一次完整的會話過程如下。
⑴ 連接服務器,同時發送一個RTSP DESCRIBE命令。服務器返回一個描述媒體類型、流數量等信息SDP。
⑵ 分析收到的SDP,為會話中的流發送一個SETUP命令建立RTSP。客戶端通過此命令將自己的端口號告訴服務器。
⑶ 流媒體連接過程建立成功以后,客戶端發送PLAY命令和TERADOWN來開始和結束視頻的播放,還可以發送快進、快進和暫停命令。在播放過程中,服務器使用UDP發送流媒體RTP包給客戶端。
本系統需要多個ONVIF IPC設備通信,為了提高數據傳輸速率和數據處理的效率,課題組采用Select網絡模型完成標準的RTSP會話過程。
3.3.3 流媒體解碼及顯示
為了能顯示視頻,客戶端需要首先移植FFMPGE。使用FFMPGE對接收到的RTSP流媒體文件進行解碼,再將解碼后的信息轉換成為YUNV420P格式,然后再轉換為RGB24格式。最后再轉換成可在安卓設備上播放的ARGB_8888格式。轉換完畢之后,就可以將每一幀顯示在屏幕上。
4 結論
本文結合嵌入式系統和安卓平臺優勢, 采用目前流行的Web Service技術,設計和實現了智能家居系統的服務器端和安卓客戶端程序。服務器端通過移植gSOAP和ONVIF協議來組建嵌入式Web服務器,提供Web Service服務。安卓客戶端程序給予KSOAP2開發包進行設計,實現了服務器端的Web Service服務的調用。系統主要采用JAVA語言進行開發,具有結構簡單,開發難度低的優點。系統操作簡單、成本低、使用方便,可以實現家居設備的遠程控制和居家環境的遠程視頻監視,給人們生活帶來極大的便利,具有較高的使用價值和推廣價值。
參考文獻(References):
[1] Lin H T. Implementing smart homes with open sourcesolutions[J]. International Journal of Smart Home,2013.7.
[2] 周恩,李文軍,鄭永軍等.Android平臺的智能家居控制系統設計[J].中國計量學院學報,2013.24(3):261-265
[3] 賈陽靜,鄒念育,雷冬鳴等.基于Android和WIFI通信的智能家居系統設計[J].大連工業大學學報,2016.1:67-71
[4] 黃成云,盧選民,李戈.基于Android的智能家居控制軟件設計與實現[J].計算機與現代化,2014.11:102-105
[5] Kumar S. Ubiquitous Smart Home System Using AndroidApplication[J]. Computer Science,2014.6(1).
[6] 龔瑞琴,畢利.基于Web Service的Android技術應用研究[J].電子技術應用,2014.40(1):134-136
[7] 肖路歡,謝燦,何策.gSOAP在基于ONVIF協議的網絡視頻監控系統中的應用[J].數字技術與應用,2013.6:128-129
[8] Robert Van Engelen.gSOAP 2.8.1 User Guide[S],2011.