秦利紅 秦會斌 諸堅彬 曹曙光
1(杭州電子科技大學(xué)電子信息學(xué)院 浙江 杭州 310000)2(浙江和惠照明科技有限公司 浙江 余姚 315408)
?
基于Android平臺智能家居客戶端的設(shè)計與實現(xiàn)
秦利紅1秦會斌1諸堅彬1曹曙光2
1(杭州電子科技大學(xué)電子信息學(xué)院浙江 杭州 310000)2(浙江和惠照明科技有限公司浙江 余姚 315408)
為改善傳統(tǒng)智能家居客戶端功能單一、操作繁瑣、不易推廣等不足,設(shè)計并實現(xiàn)了基于Android系統(tǒng)平臺集內(nèi)外網(wǎng)對智能家居控制、智能配對、動態(tài)添加設(shè)備和房間、多用戶共享數(shù)據(jù)、消息推送等關(guān)鍵技術(shù)的智能家居客戶端。通過云服務(wù)器轉(zhuǎn)發(fā)消息,客戶端實現(xiàn)了外網(wǎng)與網(wǎng)關(guān)通信。網(wǎng)關(guān)保存所有智能家居信息,客戶端通過查詢網(wǎng)關(guān)獲取信息,實現(xiàn)多用戶數(shù)據(jù)共享。采用基于MQTT協(xié)議的消息推送機制,實現(xiàn)當(dāng)設(shè)備狀態(tài)改變時,設(shè)備信息能被及時推送給每一個用戶。經(jīng)測試,多用戶均可從網(wǎng)關(guān)獲取設(shè)備等信息,并對設(shè)備進行控制,是一款性能良好、界面友善的智能家居客戶端軟件。
智能家居Android云服務(wù)器數(shù)據(jù)共享消息推送
智能家居是以住宅為平臺,通過先進的自動控制技術(shù)、網(wǎng)絡(luò)通信技術(shù)、計算機技術(shù)將家居生活環(huán)境中的相關(guān)設(shè)備連接起來,實現(xiàn)家居生活環(huán)境的智能化控制,提供一個更加人性化的居住環(huán)境[1,2]。隨著人們對家居智能化的需求不斷增大,如何實現(xiàn)用戶隨時隨地控制家居,獲取智能家居信息,成為迫切需求[3,4]。傳統(tǒng)智能家居系統(tǒng)中設(shè)備信息存在客戶端本地,不支持數(shù)據(jù)共享;系統(tǒng)中控制的設(shè)備只能是指定設(shè)備,不能根據(jù)用戶的不同需求動態(tài)地添加設(shè)備和房間,使得系統(tǒng)適應(yīng)性不強、操作不靈活,也不能很好地實現(xiàn)遠程控制設(shè)備。
針對以上問題,本文設(shè)計基于Android平臺的智能家居控制客戶端實現(xiàn)了動態(tài)添加設(shè)備和房間,并將設(shè)備、房間等信息存在網(wǎng)關(guān)端,客戶端通過查詢獲取信息,實現(xiàn)了智能家居信息多用戶共享。在外網(wǎng),客戶端能通過云服務(wù)器轉(zhuǎn)發(fā)消息給網(wǎng)關(guān),真正實現(xiàn)用戶隨時隨地遠程控制智能家居。采用基于MQTT的消息推送機制,實現(xiàn)多用戶同時操作設(shè)備時,能及時獲取設(shè)備信息。
本文中,作為研究對象的智能家居系統(tǒng)總體可分為4部分:基于Android平臺的客戶端、云服務(wù)器、嵌入式網(wǎng)關(guān)、智能家居設(shè)備。系統(tǒng)總體框圖根據(jù)所處的網(wǎng)絡(luò)環(huán)境分為兩種情況,具體如圖1所示。
圖1 智能家居控制系統(tǒng)框圖
圖1中,(a)表示系統(tǒng)處于局域網(wǎng)內(nèi),控制終端直接與網(wǎng)關(guān)通信,進行數(shù)據(jù)的交互,實現(xiàn)對智能設(shè)備的控制;(b)表示系統(tǒng)處于外網(wǎng)環(huán)境,控制終端無法直接與網(wǎng)關(guān)通信,必須通過云服務(wù)器轉(zhuǎn)發(fā)消息給網(wǎng)關(guān),網(wǎng)關(guān)控制智能設(shè)備。
控制終端提供人機交互界面,與云服務(wù)器的交互是核心,為APP提供了外網(wǎng)接入功能[5]。網(wǎng)關(guān)存儲設(shè)備信息,接受客戶端命令并控制設(shè)備??蛻舳送ㄟ^與網(wǎng)關(guān)間接或直接通信,查詢房間設(shè)備信息,最終顯示這些信息。設(shè)備為雙向設(shè)備,及時返回設(shè)備信息給網(wǎng)關(guān),因此客戶端能實時查詢設(shè)備信息。
2.1客戶端實現(xiàn)框架和功能說明
客戶端各功能模塊劃分如圖2所示。
圖2 智能家居控制客戶端系統(tǒng)框圖
(1) 登錄模塊:用戶第一次使用時,需要注冊賬號,并保存到云服務(wù)器,使得用戶下次登錄時能進行安全驗證。
(2) 設(shè)置模塊:包括用戶管理、設(shè)備管理、預(yù)約管理、情景管理、主控設(shè)置等主要模塊。用戶管理主要是用戶賬戶切換與修改密碼。設(shè)備管理是核心模塊,主要涉及房間、設(shè)備的動態(tài)添加、刪除和修改,用戶可根據(jù)自己的需求自定義房間、設(shè)備名稱和圖片,圖片從默認圖片、拍照和相冊中獲取。預(yù)約管理,用戶可以添加定時操作,關(guān)聯(lián)設(shè)備和設(shè)備動作,設(shè)置一周重復(fù)的天數(shù)。情景設(shè)置,用戶可動態(tài)添加和刪除情景,自定義情景名稱和圖片,關(guān)聯(lián)設(shè)備和設(shè)備動作,這樣用戶可以一鍵操作想要控制的各種設(shè)備,而不是一個一個控制。主控設(shè)置,包括智能配對和時間校準(zhǔn)。智能配對指客戶端提供界面輸入指定WiFi的SSID和密碼,通過一定的協(xié)議的數(shù)據(jù)發(fā)送,網(wǎng)關(guān)端進行抓包處理,分析出WiFi的SSID和密碼,使得網(wǎng)關(guān)能在無輸入的情況下連上指定的WiFi;時間校準(zhǔn)是設(shè)置網(wǎng)關(guān)時間。
(3) 控制模塊:對卷簾、百葉、燈光、開關(guān)等設(shè)備進行單個設(shè)備控制,支持對同一房間內(nèi)所有設(shè)備同時控制開和關(guān),也支持對同一類型的所有設(shè)備同時控制開和關(guān),用戶不用一個一個地控制設(shè)備,使得智能家居的控制更加人性化,操作更加簡單。
2.2通信模塊的設(shè)計與實現(xiàn)
Android客戶端主要實現(xiàn)與云服務(wù)器和網(wǎng)關(guān)的通信。現(xiàn)在手機客戶端的通信網(wǎng)絡(luò)主要有移動網(wǎng)絡(luò)(2G/3G/4G)和WiFi[6]。因此需正確地判斷客戶端所處的網(wǎng)絡(luò)環(huán)境和選擇正確的通信方式,確保數(shù)據(jù)的發(fā)送和接收,實現(xiàn)用戶隨時隨地對智能設(shè)備的控制。
2.2.1客戶端通信模塊的設(shè)計與實現(xiàn)
客戶端通信模塊為本設(shè)計的核心模塊,當(dāng)客戶端需要發(fā)送數(shù)據(jù)時,首先判斷所處的網(wǎng)絡(luò)環(huán)境,如果與網(wǎng)關(guān)處于同一局域網(wǎng)內(nèi),則使用Socket與網(wǎng)關(guān)進行通信;若客戶端處于手機網(wǎng)絡(luò)或不是與網(wǎng)關(guān)在同一WiFi下,則通過HTTP與云服務(wù)器通信,云服務(wù)器轉(zhuǎn)發(fā)消息給網(wǎng)關(guān)。通信模塊流程如圖3所示。
圖3 客戶端通信模塊流程圖
主要流程解析如下:
(1) 發(fā)送廣播,查找網(wǎng)關(guān),判斷與網(wǎng)關(guān)是否處于同一局域網(wǎng)。通過UDP的Socket發(fā)送廣播的方式來查找網(wǎng)關(guān)。UDP通信不需要事先建立連接,只需要創(chuàng)建一個發(fā)送和接收的套接字便可以實現(xiàn)數(shù)據(jù)的處理和發(fā)送。廣播地址“255.255.255.255”是一種特殊的廣播地址,表示向全世界進行廣播,一般情況下不會被路由器路由。當(dāng)網(wǎng)關(guān)與客戶端處于同一局域網(wǎng)時,會接收到此廣播,并返回信息,包括網(wǎng)關(guān)ID和進行TCP通信的端口號,客戶端接收返回信息,獲得網(wǎng)關(guān)IP和端口號,為與網(wǎng)關(guān)進行TCP通信創(chuàng)造條件。
反之,當(dāng)網(wǎng)關(guān)與客戶端不處于同一網(wǎng)絡(luò)時,如客戶端處于3G/4G網(wǎng)絡(luò)時,網(wǎng)關(guān)接收不到廣播,也不會返回信息,客戶端設(shè)置接收超時時間,超過這段時間沒有接收到回復(fù)信息就退出,判斷與網(wǎng)關(guān)不處于同一網(wǎng)絡(luò)。具體核心代碼如下:
client = new DatagramSocket(10000);
//創(chuàng)建UDP套接字對
client.setBroadcast(true);
//設(shè)置對象可以進行廣播
sendPacket = new DatagramPacket(sendbuf, sendbuf.length, new InetSocketAddress(″255.255.255.255″, 8000));
//創(chuàng)建發(fā)送數(shù)據(jù)的數(shù)據(jù)包,并指定廣播地址與端口號
client.send(sendPacket);
//發(fā)送廣播
client.setSoTimeout(10000);
//設(shè)置接收超時時間
recvPacket = new DatagramPacket(recvbuf, recvbuf.length);
//創(chuàng)建接收數(shù)據(jù)數(shù)據(jù)包
client.receive(recvPacket);
//接收廣播
String ip = recvPacket.getAddress().toString().substring(1);
//提取網(wǎng)關(guān)IP
(2) 與網(wǎng)關(guān)通信。與網(wǎng)關(guān)端建立可靠的TCP連接,采用多線程機制進行數(shù)據(jù)的發(fā)送和接收。客戶端向網(wǎng)關(guān)發(fā)送查詢、添加等命令,接收和解析網(wǎng)關(guān)發(fā)送的相關(guān)信息,并在界面上顯示出來。
(3) 用戶注冊和登錄。當(dāng)用戶查找不到網(wǎng)關(guān)時,需要登錄云服務(wù)器,通過云服務(wù)器轉(zhuǎn)發(fā)消息給網(wǎng)關(guān)。采用Apache提供的HttpClient接口的post請求來實現(xiàn)與云服務(wù)器的通信,添加了連接超時等異常處理,并采用多線程機制接收云服務(wù)器端的返回數(shù)據(jù)。Http通信需對返回的數(shù)據(jù)先進行JSON格式解析,才能使用。當(dāng)用戶為新用戶時,需要先注冊賬號,用post請求提交參數(shù)為用戶名、密碼和郵箱,如果注冊成功,云服務(wù)器返回用戶ID和登錄成功標(biāo)志。用戶登錄時post請求參數(shù)為用戶名和密碼,登錄成功進入系統(tǒng)控制界面,反之,返回到系統(tǒng)首頁。
(4) 向云服務(wù)器發(fā)送查詢指令,判斷用戶是否綁定網(wǎng)關(guān),及判斷云服務(wù)器是否能找客戶端所綁定的網(wǎng)關(guān),能否進行消息的轉(zhuǎn)發(fā)。這里也是采用HttpClient接口的post請求與云服務(wù)器通信,請求參數(shù)為用戶名、密碼和網(wǎng)關(guān)識別碼。用JSON格式解析返回數(shù)據(jù),判斷云服務(wù)器中是否有記錄用戶綁定的網(wǎng)關(guān)。
(5) 綁定網(wǎng)關(guān)。本設(shè)計規(guī)定一個用戶只能綁定一個網(wǎng)關(guān),而一個網(wǎng)關(guān)可以綁定多個用戶,即實現(xiàn)多用戶操作??蛻舳擞肏ttpClient接口的post請求向云端提交想要綁定的網(wǎng)關(guān)ID,云端保存用戶ID和網(wǎng)關(guān)ID,以便查詢和轉(zhuǎn)發(fā)消息。
(6) 與云服務(wù)器通信。當(dāng)用戶成功綁定網(wǎng)關(guān)后,向云端發(fā)送消息有數(shù)據(jù)返回,即實現(xiàn)外網(wǎng)通信。采用Apache提供的HttpClient接口的post請求來實現(xiàn)與云服務(wù)器的通信,采用多線程機制進行數(shù)據(jù)的發(fā)送和接收。客戶端向云服務(wù)器發(fā)送查詢、添加等命令,接收和解析云服務(wù)器發(fā)送的相關(guān)信息,并在界面上顯示出來。
(7) 用戶處理。當(dāng)用戶已成功綁定網(wǎng)關(guān)時,向云端發(fā)送數(shù)據(jù)沒有返回。提示有兩種可能:網(wǎng)關(guān)未連上路由器;路由器未連上外網(wǎng)。用戶根據(jù)所處的環(huán)境進行相應(yīng)的處理。若是網(wǎng)關(guān)未連上路由器則進行智能配對,提示用戶開啟WiFi,進入智能配對界面,輸入指定WiFi的SSID和密碼,通過特定協(xié)議發(fā)送數(shù)據(jù)包,數(shù)據(jù)包包含WiFi信息,網(wǎng)關(guān)端進行抓包處理,獲取WiFi信息,并連上路由器。若是路由器未連外網(wǎng),用戶必須使路由器連上外網(wǎng),否則無法操作。
2.2.2客戶端通信協(xié)議的設(shè)計
自定義Android客戶端與網(wǎng)關(guān)的通信協(xié)議,并對發(fā)送的數(shù)據(jù)進行MD5加密處理和Base64編碼,提高了系統(tǒng)可擴展性和網(wǎng)絡(luò)傳輸?shù)目煽啃?。其中MD5是報文摘要算法的一種,是根據(jù)報文的內(nèi)容摘取一部分進行加密,可以檢查報文是否被篡改過。協(xié)議格式如圖4所示。
圖4通信協(xié)議格式
起始位、結(jié)束位——分別標(biāo)示一幀數(shù)據(jù)的開始與結(jié)束;
WID——網(wǎng)關(guān)ID,用于標(biāo)識網(wǎng)關(guān);
UID——用戶ID,用于標(biāo)識用戶,當(dāng)用戶注冊成功時,由云服務(wù)器分配用戶ID;
SEQ——請求序列,遞增;
LEN——一幀數(shù)據(jù)總長度;
CMD——標(biāo)示不同的命令;
MSG——消息內(nèi)容;
MD5——數(shù)據(jù)經(jīng)MD5加密值。
客戶端通過與網(wǎng)關(guān)和云服務(wù)器的交互,將房間、設(shè)備、定時器、情景等信息發(fā)送給網(wǎng)關(guān)端保存,通過查詢網(wǎng)關(guān)獲取信息并顯示在客戶端界面上。這樣只要用戶客戶端擁有此APP并登錄成功后,即可獲得網(wǎng)關(guān)內(nèi)保存的所有智能家居信息,實現(xiàn)多用戶數(shù)據(jù)共享。
消息類型主要包括:查找網(wǎng)關(guān)、綁定網(wǎng)關(guān)、添加、刪除、修改、查詢、設(shè)備控制命令。其中添加、刪除和修改命令實現(xiàn)對房間、設(shè)備、定時器、情景的動態(tài)添加和刪除。查詢命令獲取房間設(shè)備情景等信息。設(shè)備控制命令實現(xiàn)對設(shè)備的控制,如控制卷簾的開、關(guān)和上下停。以設(shè)備相關(guān)命令為例,交互過程如圖5所示。
圖5 客戶端、云端、網(wǎng)關(guān)(設(shè)備)命令交互圖
2.3基于MQTT協(xié)議的消息推送的設(shè)計與實現(xiàn)
2.3.1MQTT協(xié)議簡介和特性分析
IBM WebSphere MQ Telemetry Transport(MQTT)是一款基于TCP長連接的輕量級發(fā)布/訂閱協(xié)議,主要用于連接大量的遠程控制設(shè)備和傳感器[7]。MQTT的設(shè)計思想是開發(fā)、簡單、輕量、易于實現(xiàn),這些特點使它適用于如網(wǎng)絡(luò)代價比較昂貴、帶寬相對較低或者不可靠的環(huán)境。通常應(yīng)用于嵌入式設(shè)備或者內(nèi)存和處理器資源有限的場景[8,9]。常用于智能手機、手持智能設(shè)備等小型設(shè)備通信中。MQTT協(xié)議的主要特點有:
(1) 輕巧:傳輸格式最小化,沒有應(yīng)用消息頭,最小的數(shù)據(jù)包只有2 bit。
(2) 可靠:三種不同的服務(wù)質(zhì)量:“至多一次”,消息發(fā)布完全依賴底層TCP /IP網(wǎng)絡(luò),會發(fā)生消息丟失或重復(fù)?!爸辽僖淮巍?,確保消息到達,但消息重復(fù)可能發(fā)生?!爸挥幸淮巍?,確保消息到達一次。
(3) 簡單:簡單體積小的發(fā)布/訂閱消息模式,異步“推送”傳輸,簡單的使用方式——連接、發(fā)布、訂閱、斷開。
本設(shè)計支持多用戶操作,當(dāng)有一用戶控制設(shè)備,改變設(shè)備狀態(tài)時,其他用戶能否及時獲取設(shè)備信息并更新設(shè)備狀態(tài)是關(guān)鍵。為解決這個問題,基于以上特點,采用MQTT協(xié)議的推送機制??蛻舳讼騇QTT消息代理服務(wù)器端訂閱設(shè)備消息,當(dāng)用戶控制設(shè)備,改變設(shè)備狀態(tài)時,雙向設(shè)備向網(wǎng)關(guān)端發(fā)送新的設(shè)備信息,網(wǎng)關(guān)將消息傳遞給MQTT代理服務(wù)器,服務(wù)器將設(shè)備信息推送給其他客戶端,實現(xiàn)了多用戶同時操作設(shè)備時,客戶端能及時接收設(shè)備信息。
2.3.2消息推送的工作流程
IBM提供了實現(xiàn)MQTT協(xié)議的jar包——wmqtt.jar,首先將此jar包添加到Android工程中。
客戶端實現(xiàn)消息推送主要過程包括:連接MQTT代理服務(wù)器、發(fā)送請求、以回調(diào)函數(shù)的形式等待系統(tǒng)返回、接受服務(wù)器推送數(shù)據(jù)并解析,最后轉(zhuǎn)交給前臺UI線程顯示。
主要流程如下:
(1) 創(chuàng)建一個MqttClient對象 client 用于連接到遠程的 MQTT 服務(wù)器。 Client 在連接MQTT服務(wù)器時,要設(shè)定MQTT服務(wù)器IP和監(jiān)聽的端口號,并設(shè)置唯一的客戶端標(biāo)識。因為如果與前一個實例使用同一個客戶端標(biāo)識,那么表示目前的實例是同一個客戶機的實例。如果在兩個正在運行的客戶端中重復(fù)使用同一個客戶機標(biāo)識,那么這兩個客戶機中都會拋出異常,并且一個客戶端會終止。MQTT 服務(wù)器IP為“MQTT_SERVER_IP”,監(jiān)聽的端口號是1883,“UID”由云服務(wù)器分配,標(biāo)志唯一客戶端,用于標(biāo)識客戶端名稱。
MqttClient client =MqttClient(″tcp://MQTT_SERVER_IP :1883″,null);
//MqttClient對象,指定連接服務(wù)器IP和端口號
(2) 構(gòu)造一個CallBack對象接收消息,在構(gòu)建這個CallBack對象的時候傳入了一個 Handler 對象用于更新主界面 UI ——將消息內(nèi)容顯示在主界面上。
SimpleCallBack callback = new SimpleCallBack(mhandler);
client.registerSimpleHandler(callback);
(3) 調(diào)用client對象的subscribe()方法使其訂閱主題字符串為WBID的消息,WBID為網(wǎng)關(guān)ID, QOS設(shè)1。這里首先判斷客戶端是否成功連接:
if((client != null) || (client.isConnected()) != false)
{
client.subscribe(new String[]{WBID}, new int[]{1});
}
(4) SimpleCallBack繼承MqttSimpleCallback,實現(xiàn)了兩個響應(yīng)不同事件的方法connectionLost()和publishArrived()。publishArrived()方法負責(zé)響應(yīng)收到消息后的事件,構(gòu)建了一個 Message 對象,最后把這個包含了消息內(nèi)容的 Message 對象通過 Handler 發(fā)送給主線程。
public class SimpleCallBack implements MqttSimpleCallback {
private Handler handler;
public SimpleCallBack(Handler handler) {
this.handler = handler;
}
@Override
public void connectionLost() throws Exception {
// TODO Auto-generated method stub
}
@Override
public void publishArrived(String topicName, byte[] payload, int Qos,boolean retained) throws Exception {
// TODO Auto-generated method stub
Message msg = handler.obtainMessage();
msg.obj = payload;
msg.what = 10;
handler.sendMessage(msg);
}
}
(5) 主線程創(chuàng)建mHandler內(nèi)部類,通過它的handle Message()方法接收 Callback 類通過 mHandler 對象發(fā)來的消息,根據(jù)Json格式解析數(shù)據(jù),提取設(shè)備信息,根據(jù)設(shè)備狀態(tài)值,設(shè)置設(shè)備狀態(tài)。如根據(jù)消息中傳遞的卷簾位置,設(shè)置設(shè)備動畫中卷簾的位置。Json解析如下:
privateHashMap
HashMap
try{
JSONObject object = new JSONObject(JSONString);
resultMap.put(″wlinkid″, object.getString(″wlinkid″));
resultMap.put(″devid″, object.getInt(″devid″));
?
} catch (JSONException e) {
e.printStackTrace();
}
return resultMap;
}
通過使用MQTT消息推送,設(shè)備信息能得到及時推送,使得用戶們能及時獲取設(shè)備狀態(tài),更有利于對智能家居的控制。
2.4UI界面展示和測試分析
智能家居客戶端用于人機交互,界面友善、靈活、精簡是前提。本設(shè)計可根據(jù)用戶不同需求動態(tài)添加房間、設(shè)備、定時和情景,用戶可自定義房間名稱和設(shè)備圖片,圖片可從默認的圖片或是拍照、相冊中獲取,如圖6所示。
圖6 房間、設(shè)備相關(guān)界面
主設(shè)置界面包括設(shè)備管理、情景管理等設(shè)置,支持動態(tài)添加、刪除情景和定時,如圖7所示。
圖7 主設(shè)置相關(guān)界面
Android手機與網(wǎng)關(guān)通信,因為通信數(shù)據(jù)經(jīng)過MD5加密和base64編碼,通過Socket調(diào)試助手不能直接顯示發(fā)送和接收的指令。網(wǎng)關(guān)端將接收和發(fā)送的指令及下發(fā)給串口的指令通過UDP廣播,Socket調(diào)試助手接收廣播并以十六進制顯示,如圖8所示。
圖8 測試結(jié)果
其中包括房間添加、設(shè)備添加、設(shè)備控制等命令,表明客戶端能成功地發(fā)送和接收消息。網(wǎng)關(guān)也能接收消息和將消息下發(fā)給串口,實現(xiàn)對設(shè)備的控制。
本設(shè)計基于Android平臺的智能家居控制客戶端能正確地判斷客戶端所處的網(wǎng)絡(luò)并選擇正確的通信方式,實現(xiàn)用戶隨時隨地對智能家居的控制。Android客戶端與網(wǎng)關(guān)通信,網(wǎng)關(guān)保存設(shè)備等信息,客戶端通過查詢網(wǎng)關(guān)獲得信息并顯示。這樣避免傳統(tǒng)智能家居控制中信息均存在客戶端本地,不能實現(xiàn)多用戶共享??蛻舳藢崿F(xiàn)了動態(tài)添加房間和設(shè)備,更能適應(yīng)人們的需求,大大提高了智能家居控制系統(tǒng)的靈魂性。并添加定時器和情景模式,使得用戶對智能家居的控制更加人性化和方便。同時采用MQTT消息推送機制,及時地更新設(shè)備信息,是一款更加智能化、人性化、操作簡便、性能良好的智能家居客戶端軟件。
但客戶端還是存在有待改善的地方:如現(xiàn)在實現(xiàn)的是對卷簾、百葉、燈光和插座等設(shè)備的控制,可以添加更多類型的設(shè)備如空調(diào)等設(shè)備,使得智能家居系統(tǒng)更加完善;另一方面,系統(tǒng)和接受MQTT推送的消息時設(shè)備動畫設(shè)置的穩(wěn)定性有待加強;最后,UI界面可以做得更加人性化。
[1] 董立巖,隋鵬,辛?xí)匀A,等.基于Android的智能家居終端控制系統(tǒng)[J].吉林大學(xué)學(xué)報:信息科學(xué)版,2014,32(3):303-307.
[2] 李濤.基于Android的智能家居APP的設(shè)計與實現(xiàn)[D].蘇州大學(xué),2014.
[3] 郭健儐,蔡雪松.基于Android平臺的公交信息發(fā)布終端軟件的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2014,31(9):322-324,333.
[4] 周娟.基于Android的智能家居控制系統(tǒng)的研究與實現(xiàn)[D].西安科技大學(xué),2014.
[5] 李中平,邱健峰,李璐,等.Android手機遠程控制關(guān)鍵技術(shù)分析[J].計算機應(yīng)用與軟件,2013,30(4):113-115,127.
[6] 邵保新.云架構(gòu)下的聲控智能家居系統(tǒng)[D].鄭州大學(xué),2014.
[7] 關(guān)慶余.基于MQTT協(xié)議的移動社交網(wǎng)絡(luò)客戶端的設(shè)計與實現(xiàn)[D].中國科學(xué)院研究生院(沈陽計算技術(shù)研究所),2014.
[8] 許金喜,張新有.Android平臺基于MQTT協(xié)議的推送機制[J].計算機系統(tǒng)應(yīng)用,2015,24(1):185-190.
[9] 關(guān)慶余,李鴻彬,于波.MQTT協(xié)議在Android平臺上的研究與應(yīng)用[J].計算機系統(tǒng)應(yīng)用,2014,23(4):197-200.
DESIGN AND IMPLEMENTATION OF ANDROID PLATFORM-BASED SMART HOME CLIENT
Qin Lihong1Qin Huibin1Zhu Jianbin1Cao Shuguang2
1(School of Electronic Information,Hangzhou Dianzi University,Hangzhou 310000,Zhejiang,China)2(ZhejiangHowellIlluminateTechnologyCo.,Ltd.,Yuyao315408,Zhejiang,China)
To improve the deficiencies of traditional smart home client in signal function, complicated operation and difficult in promotion, we design and implement a smart home client, it is based on Android system platform and integrates the key technologies including the control of smart home from internal and external networks, smart pairing, dynamic rooms and devices adding, multi-user data sharing, and information push, etc. By forwarding messages through cloud server, the client realises the communication between external network and gateway. The gateway reserves all the information about smart home, the client obtaines the information by gateway query to achieve multiuser data sharing. It uses MQTT protocol-based message pushing mechanism, and realises to push devices information to every user when there is the change in devices status. It is tested that the multi-user can get the information of devices or so from the gateway, and can control the devices as well. It is a smart home client software with good performance and friendly UI.
Smart homeAndroidCloud serverData shareMessage push
2015-03-27。秦利紅,碩士生,主研領(lǐng)域:基于Android平臺應(yīng)用軟件開發(fā)。秦會斌,教授。諸堅彬,碩士生。曹曙光,助理研究員。
TP311
A
10.3969/j.issn.1000-386x.2016.09.021