闞港輝 王恩亮
【摘 要】為推動智能家居一體化的發展,本文基于Android系統研發了一款能夠不限產品類型,可對所有智能家居產品進行統一控制的移動客戶端APP。該系統基于TCP/IP和HTTP網絡通信協議,通過Socket和Web service、云數據庫技術和智能網關連接,實現了對有Wifi、ZigBee、Bluetooth等連接功能的智能家居硬件產品的遠程控制和狀態監控。
【關鍵詞】Android;智能家居;一體控制
中圖分類號: TU855 文獻標識碼: A 文章編號: 2095-2457(2019)04-0062-002
DOI:10.19694/j.cnki.issn2095-2457.2019.04.024
0 引言
從20世紀80年代智能家居概念的提出至今已有30多年,智能家居已經歷了4代的發展[1],發展技術較成熟,有著巨大的發展前景。反觀我國智能家居市場卻一直不慍不火,居民在智能家居的使用上并沒有得到普及,這正是由于傳統家電產業與新型電子產業之間的隔閡使“智能家居”行業尚未達成一個統一的標準。市場上繁多的智能家居品牌及其各自開發的移動客戶端給用戶帶來了選擇和使用困難。
為解決此問題,開發了一款基于Android系統,通過Socket和Web service(基于TCP/IP和HTTP網絡通信協議)、云數據庫技術、智能網關技術的手機移動客戶端APP。將智能家居硬件產品以不同的形式與智能網關連接,利用客戶端APP與智能網關的網絡通信實現對硬件產品的控制和監控,打破了智能家居產品在品牌、類型的局限,可根據不同廠商生產的智能家居產品的功能定制操作界面,并更新到云服務器。實現了用戶只需通過一款手機APP即可對家中所有智能家居產品進行遠程控制及狀態監控。
1 系統總體設計方案
1.1 系統架構設計
系統的整體架構是通過智能網關連接到軟件客戶端和智能家居硬件。系統架構圖如圖1所示。移動客戶端通過TCP/IP協議和HTTP協議與無線路由器連接,無線路由器同時與智能網關連接。硬件產品分別通過WiFi、ZigBee、GPRS及家庭現場總線技術[2]與智能網關相連接,且硬件均支持TCP/IP和HTTP通信協議。同時由云服務器提供云數據庫技術,為客戶端實時提供本地數據庫更新和通信控制數據支持。使用戶能夠遠程監控和控制連接到智能網關上的所有智能家居產品。
1.2 Android客戶端開發架構
Android客戶端的開發以Android Studio3.1.3為開發環境,以JAVA面相對象語言為開發語言,其中SDK版本為JDK10。開發過程中所選用的測試機型為HUAWEI TIT-TL00(Android5.1,API22)。采用Google公司在2017年提出的官方開發架構。官方的開發架構實現了UI與Data的真正分離、使異步調用和邏輯控制更加精細,通過Model驅動UI,使代碼簡潔、邏輯易于管理。
2 軟件的設計與實現
2.1 客戶端主流程設計
Android的客戶端系統設計主要包括用戶界面UI、Socket和Web Service通信、SQLite和SQL Azure數據庫的設計[3]這三個方面。
客戶端應用程序具有以下四個主要組件:Activity;Service;Content Provider;Broadcast Receiver。通過以上四種Android的基本組件和依據Android官方的開發架構分別進行UI界面、通信模塊、數據庫的設計。
2.2 Android客戶端UI界面設計
XML布局文件設計:利用了Bottom Navigation View實現底部導航欄視圖、Navigation View實現滑動菜單、CardView實現卡片式布局、RecyclerView實現內容滾動事件,以及優秀的開源UI組件設計出了簡潔美觀的布局界面。操作界面截圖如圖2所示。
2.3 通信模塊的設計與實現
采用Socket和Web Service兩種方式結合來實現客戶端的遠距離通信,使客戶端可以實時與家庭智能網關相連接,并進行遠程控制和監控。
2.3.1 Socket遠程通信
Socket遠程通信是JAVA面向對象開發語言中重要的一種遠程通訊方式,可以通過TCP/IP通訊協議實現遠程通訊,Socket網絡流程圖如圖3所示。
本設計僅實現客戶端編程,服務端用Socket Tool TCP/IP通信調試工具在PC端建立。使用Socket實現客戶端[4]的步驟如下:
(1)通過IP地址和端口實例化套接字,并請求連接到服務器。
(2)獲取Socket上的輸入流進行讀寫。
(3)把流包裝僅Buffered Reader的實例中。
(4)對Socket進行讀寫。
(5)關閉打開的流程。
2.3.2 Web Service遠程調用
程序多次使用Web Service實現天氣實時查詢、衛星地圖定位、網頁推送等功能。具體步驟如下:
(1)創建服務視圖對象。
(2)創建API接口。
(3)創建實現類、注冊監聽,并調用PortType方法(可實現遠程通信)。
(4)接收方法的返回值、并發布服務。
2.4 數據庫設計
建立兩種類型的數據庫:輕量級SQLite數據庫,用于儲存用戶個人使用信息的;Microsoft的SQL Azure數據庫,用于更新產品數據、商品信息及大量個人、公用信息的云數據庫。
2.4.1 SQLite數據庫
Android系統內置的輕量級數據庫。對于SQLite的操作,Android提供了SQLite Database和SQLite Open Helper兩個類。其中SQLite Open Helper類提供的兩個方法:onCreat()和onUpgrade()對SQLite數據庫進行可以更新表項等。
2.4.2 SQL Azure數據庫
基于SQL server構建的云關系數據庫,提供了Web服務集合,可使用TSQL來管理和創建以及操作云數據庫;它的數據類型、存儲過程和傳統的SQL 服務器十分相似,可以在本地開發應用程序,然后將其部署到云平臺[5]。
3 結論
系統將軟件客戶端與硬件通過智能網關作為橋梁連接,通過網絡傳輸協議傳輸到智能網關轉發無線傳輸協議到硬件產品,將多種無線通信方式與網絡通信結合。實現了對多種智能家居產品的遠程控制和狀態監控。打破智能家居產品品牌、類型的局限,真正實現了智能家居的去品牌限制。只需開發者在云數據庫上更新智能產品并實現更新控制命令功能,用戶就可以下載更新到本地客戶端使用。
用戶僅使用此一款手機應用即可對家中不同品牌、不同連接方式的物聯網智能家居產品實現控制。系統的開發對推動智能家居行業的一體化發展具有重要意義。
【參考文獻】
[1]朱敏玲,李寧.智能家居發展現狀及未來淺析[J].電視技術,2015,39(04):82-85+96.
[2]邵鵬飛,王喆,張寶儒.面向移動互聯網的智能家居系統研究[J].計算機測量與控制,2012,20(02):474-476+479.
[3]王朝華,陳德艷,黃國宏,童懷.基于Android的智能家居系統的研究與實現[J].計算機技術與發展12,22(06):225-228+233.
[4]喬雷,雷斌,杜劍英.基于Android平臺的物聯網網關方案設計[J].電子元器件應用,2012,14(Z1):5-9.
[5]林子雨,賴永炫,林琛,謝怡,鄒權.云數據庫研究[J].軟件學報,2012,23(05):1148-1166.