付蔚 楊鑫宇 李威 劉威 蔡信露
摘 要:針對采用各種不同協議的智能家居設備無法互聯互通的問題,文章依據中國智能家居產業聯盟(CSHIA)標準,采用JMS設計規范和UPnP協議設計了一款面向智能家居的消息中間件。分塊設計并實現設備管理、數據轉換、WEB管理、消息處理和客戶端接口五大功能模塊。測試結果表明,軟件設計可滿足CSHIA標準的智能家居設備與應用程序的數據交互。
關鍵詞:消息中間件;JMS;UPnP協議;互聯互通
中圖分類號:TP29 文獻標志碼:A 文章編號:2095-2945(2018)17-0039-02
Abstract: In view of the problem that smart home devices with different protocols can not interconnect with each other, this paper designs a message-oriented middleware for smart home based on JMS design specification and UPnP protocol according to China Smart Home Industry Alliance (CSHIA) standard, designing and implementing five function modules of equipment management, data conversion, WEB management, message processing and client interface. The test results show that the software design can meet the CSHIA standard of smart home devices and application data interaction.
Keywords: message-oriented middleware(MOM); JMS; UPnP; interconnection
引言
面向智能家居消息中間件的設計是將CSHIA中間件標準與消息中間件技術相結合,提出和劃分了中間件的五大功能,即設備管理、數據轉換、WEB管理、消息處理和客戶端接口,使得應用程序通過消息中間件擴展至不同的操作系統和不同的網絡環境,達成系統應用與智能家居之間的互通有無。
1 總體設計介紹
1.1 CSHIA中間件標準
CSHIA中間件標準是由中國智能家居產業聯盟(China Smart Home Industry Alliance)于2014年7月發布的智能家居互聯互通標準。CSHIA規范各設備生產廠商的子網關與主網關之間的數據交互模型。
1.2 總體架構
根據智能家居消息中間件的需求分析,設計的框架結構包含設備管理模塊、WEB管理模塊、數據轉換模塊、消息處理模塊和客戶端接口模塊五種。
設備管理模塊的中的UPnP協議通過設備尋址、設備發現、設備描述、事件觸發等功能,將采集的信息轉化為設備描述文檔和服務描述文檔,傳遞至數據轉換模塊[2]。數據轉換模塊將兩類XML描述文件生成對應的DOM樹,存入對應的兩張數據表中,方便WEB管理模塊從表中獲取數據。而WEB管理模塊分為前端后臺兩個方面,通過前臺提供管理交互功能,對后臺數據庫進行修改與調用。消息處理模塊則是將數據從數據庫中取出,封裝成規定的報文格式,將待處理的報文以消息隊列的方式通過第三方程序接口進行發送與接收。
2 智能家居消息中間件模塊設計
2.1 設備管理模塊
2.1.1 設備發現
設備發現采用SSDP協議定義的M-SEARCH方法進行搜索請求,在底層網絡不斷進行搜索。一旦發現符合CSHIA標準的設備加入家庭網絡,就會自動向DHCP申請規定的IP地址和端口號廣播它的設備和服務,并獲取該設備的描述信息。
2.1.2 設備描述
設備描述文檔是一個XML格式的文檔,由根節點及其子節點設備組成[3]。<基本屬性>標簽包含有設備類型deviceType、唯一識別號UDN和設備URL地址;
2.1.3 設備控制
設備控制采用SOAP協議,SOAP控制/反饋信息分為UPnP控制請求、UPnP控制響應和UPnP控制錯誤響應三種。SOAP通過HTTP協議傳輸,XML標記語言來編碼來進行遠程發送指令。
2.1.4 設備事件
設備管理模塊通過GENA協議監聽所有在線設備事件通知,同時使用NOTIFY方法發送事件通知[5]。
2.2 WEB管理模塊
WEB管理模塊為用戶提供可視化管理界面,包括設備控制,設備刪除,設備添加和設備狀態四個功能。同時包含服務端和WEB端兩個設計方面。
2.2.1 服務端設計
服務端負責將數據庫的數據轉發給前端頁面,同時也要接收前端頁面發過來的控制指令。通過WebSocket協議使用URI連接對前端的資源定位,使用onOpen()方法建立連接,在建立連接后調用onMessage()方法獲取數據庫的數據和接收前端頁面的控制指令。在頁面關閉后,會觸發onClose()方法關閉前端與服務之間的連接[6]。
2.2.2 WEB端設計
WEB端設計采用HTML+CSS+JS搭建,通過WebSocket協議與服務端進行雙向通信。前端設計與服務端的方法保持相應的映射關系,使用JS語言綁定四個事件,即onError事件、onOpen事件、onMessage事件和onClose事件。
2.3 數據轉換模塊
數據轉換模塊負責將采集回來的底層數據的DOM樹轉換為數據表的形式,然后傳遞給消息處理管理模塊生成消息。
2.4 消息處理模塊
消息處理模塊負責將數據庫中的數據封裝成固定的報文格式,放入消息隊列和消息主題中。模塊大致分為三個功能,即消息生成、消息隊列管理和消息訂閱[8]。
3 測試與驗證
根據智能家居中間件的功能設計,分別測試設備的發現、控制,消息的接收和發送功能,驗證是否可以滿足不同的設備連接,并可以在WEB界面進行觀測。
設備發現功能測試:
在搭建好系統之后,嵌入智能家居消息中間件,系統可以自動發現家庭網絡中的子網關1和其從屬設備。
將設備全部入網,搭建好的WEB服務器通過智能家居中間件接收來自訂閱主題的消息,消息訂閱機制分為點對點通信模式和發布/訂閱通信模式兩種。
4 結束語
將智能家居消息中間件引入基于B/S架構的智能家居遠程控制系統,通過智能家居消息中間件使得兩個不同的網關在WEB平臺上實現相互通信,驗證了對符合CSHIA中間件標準設備的接入與控制。目前存在的問題在于智能家居消息中間件只針對符合CSHIA標準的產品,難以真正解決市面上應用各種不同協議和不同標準的智能家居產品互聯互通的局面。對于其他標準產品,只有在后續工作中增加相應接口程序進行處理。
參考文獻:
[1]李強.基于S3C6410智能家居網關的技術研究與設計[D].西安:西安科技大學,2014.
[2]馬曉飛.VOD系統的UPnP控制點軟件設[D].浙江:浙江大學,2007.
[3]靳新,謝進軍.XML基礎教程[M].北京:清華大學出版社,2016.
[4]崔尚森,張白一.Web應用開發技術:JSP[M].西安:西安電子科技大學出版社,2007.
[5]劉路.基于TIDavinci平臺的高清網絡數字攝像機軟件設計與實現[D].武漢:華中科技大學,2015.
[6]彭燦華.J2EE項目開發與設計(第二版)[M].北京:中國鐵道出版社,2016.
[7]陳穎,陳碩.基于UPnP與ZigBee的智能辦公室研究[J].物聯網技術,2014(10):26-29.
[8]徐文聰,徐慧,羊帥,等.基于消息中間件的遠程醫療監護技術[J].指揮信息系統與技術,2014(1):52-57.
[9]侯剛.消息中間件TongLINK/Q的應用[J].電腦知識與技術,2014(14):3280-3282.