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