智能家居系統(tǒng)中網(wǎng)關(guān)與服務(wù)器的連接 2016年09月27日09:55 來源:|
在新型家居系統(tǒng)中,家庭網(wǎng)關(guān)將取代PC機(jī)作為家庭控制中心。傳統(tǒng)客戶端/服務(wù)器模式不能保持家庭網(wǎng)關(guān)與遠(yuǎn)程服務(wù)器實(shí)時(shí)連接?;诎偃f級的家庭網(wǎng)關(guān)與服務(wù)器保持長連接的目的,采用主從服務(wù)器框架進(jìn)行負(fù)載均衡,心跳機(jī)制保障網(wǎng)關(guān)與服務(wù)器實(shí)時(shí)連接的方案。
1、新型智能家居系統(tǒng)整體框架
基于傳統(tǒng)C/S架構(gòu)的智能家居系統(tǒng)需要保持一臺PC機(jī)運(yùn)行中間件才能達(dá)到隨時(shí)控制的目的,這與智能家居綠色的理念相違背。在光纖到戶的推動下,PON上行家庭網(wǎng)關(guān)在全國得到普及,并且有低功耗保持長時(shí)間工作的特點(diǎn),適合用于智能家居系統(tǒng)中。
本方案設(shè)計(jì)一種新型智能家居系統(tǒng),由家庭網(wǎng)關(guān)替代PC成為家庭網(wǎng)絡(luò)控制中心。圍繞家庭網(wǎng)關(guān)與遠(yuǎn)程服務(wù)器互聯(lián)問題展開,探討一種適合家庭網(wǎng)關(guān)與遠(yuǎn)程服務(wù)器的連接方案?;诩彝ゾW(wǎng)關(guān)的智能家居系統(tǒng)整體框架如圖1所示。智能家居系統(tǒng)由傳感器網(wǎng)絡(luò),家庭控制中心,遠(yuǎn)程服務(wù)器,手機(jī)終端組成。其中傳感器網(wǎng)絡(luò)通過ZigBee、Wi-Fi等無線技術(shù)組建。
傳統(tǒng)的智能家居系統(tǒng)中控制中心采用家用PC和協(xié)調(diào)器等設(shè)備,新型的智能家居系統(tǒng)如圖1所示,采用家庭網(wǎng)關(guān)充當(dāng)家庭控制中心的角色。
2、新型智能家居系統(tǒng)中家庭網(wǎng)關(guān)與服務(wù)器連接的設(shè)計(jì)與實(shí)現(xiàn)
2.1遠(yuǎn)程服務(wù)器方案設(shè)計(jì)
傳統(tǒng)的服務(wù)器方案往往使用單一服務(wù)器模式,傳統(tǒng)業(yè)務(wù)不需要客戶端與服務(wù)器保持長連接,客戶端獲取數(shù)據(jù)時(shí)發(fā)送一個(gè)連接即可。并且客戶端運(yùn)行在PC機(jī)上,客戶端對服務(wù)器發(fā)起連接后,服務(wù)器可暫存客戶端的IP地址和端口,當(dāng)服務(wù)器需要給客戶端發(fā)送數(shù)據(jù)時(shí)直接用客戶端的IP地址和端口號即可。所以用單一服務(wù)器即能滿足傳統(tǒng)業(yè)務(wù)的需求。
當(dāng)業(yè)務(wù)量大的時(shí)候,傳統(tǒng)服務(wù)器采用服務(wù)器集群技術(shù)來保證服務(wù)器不因業(yè)務(wù)量過大而癱瘓。隨著智能家居網(wǎng)關(guān)用戶逐步上升,用戶將達(dá)到百萬級。每個(gè)網(wǎng)關(guān)都要與服務(wù)器保持長連接,同時(shí)服務(wù)器還要與手機(jī)端通信。為了保證服務(wù)器的負(fù)載會達(dá)到百萬級時(shí),其仍能正常其正常工作,本方案采用主從服務(wù)器框架來實(shí)現(xiàn)負(fù)載均衡。主服務(wù)器負(fù)責(zé)網(wǎng)關(guān)與服務(wù)器首次建立連接,然后根據(jù)地理位置等因素為網(wǎng)關(guān)分配一個(gè)從服務(wù)器并告知其IP等信息,網(wǎng)關(guān)再根據(jù)從服務(wù)器信息對從服務(wù)器發(fā)起連接,建立連接后網(wǎng)關(guān)與從服務(wù)器保持長連接并斷開與主服務(wù)器的連接。
主服務(wù)器對手機(jī)終端也是如此,只負(fù)責(zé)首次建立連接,判斷該手機(jī)號控制的網(wǎng)關(guān)分配到哪個(gè)從服務(wù)器,然后讓其對從服務(wù)器進(jìn)行連接。
本方案設(shè)計(jì)的服務(wù)器框架如圖2所示,由主服務(wù)器和從服務(wù)器組成,網(wǎng)關(guān)第一次連接或者與服務(wù)器連接中斷后重連都是對主服務(wù)器發(fā)起,主服務(wù)器收到網(wǎng)關(guān)發(fā)起的連接信息后進(jìn)行,查看是否在服務(wù)網(wǎng)關(guān)列表,認(rèn)證成功后分配從服務(wù)器IP和服務(wù)號給網(wǎng)關(guān)。從服務(wù)器用于保持與網(wǎng)關(guān)的長連接,一方面可以對網(wǎng)關(guān)發(fā)送控制命令,一方面可接收網(wǎng)關(guān)上報(bào)的信息。備用主服務(wù)器用于主服務(wù)器故障時(shí)切換使用。
2.2家庭網(wǎng)關(guān)與遠(yuǎn)程服務(wù)器連接方案的設(shè)計(jì)
家庭網(wǎng)關(guān)所屬的網(wǎng)絡(luò)為電信運(yùn)營商的子網(wǎng)環(huán)境,IP動態(tài)更改,并且經(jīng)過了多層NAT轉(zhuǎn)換,服務(wù)器無法對網(wǎng)關(guān)發(fā)起主動連接。而用戶需要隨時(shí)對家庭設(shè)備進(jìn)行控制,服務(wù)器必須隨時(shí)能夠?qū)W(wǎng)關(guān)發(fā)起連接。為了實(shí)現(xiàn)家庭網(wǎng)關(guān)與遠(yuǎn)程服務(wù)器互相通信。
本方案采用socket長連接模式實(shí)現(xiàn),服務(wù)器配置固定IP,網(wǎng)關(guān)上電后發(fā)起對服務(wù)器的socket連接,連接成功后保持連接不中斷,服務(wù)器可通過此socket連接收發(fā)網(wǎng)關(guān)的信息。
2.2.1網(wǎng)關(guān)與服務(wù)器長連接及意外中斷恢復(fù)的設(shè)計(jì)實(shí)現(xiàn)
用戶需要隨時(shí)遠(yuǎn)程監(jiān)控家庭信息,例如回家路上打開空調(diào),離開的路上關(guān)掉電源等,網(wǎng)關(guān)也需要隨時(shí)向用戶反饋家庭異常,例如煙霧信息,所以家庭網(wǎng)關(guān)必須與服務(wù)器隨時(shí)保持連接。
本方案采用心跳包監(jiān)控網(wǎng)關(guān)與服務(wù)器之間的長連接,當(dāng)網(wǎng)關(guān)與服務(wù)器連接成功后,服務(wù)器每隔一段時(shí)間(暫時(shí)設(shè)置為15s)向網(wǎng)關(guān)發(fā)送心跳包,網(wǎng)關(guān)接收到心跳包后需立即回應(yīng)心跳包給服務(wù)器。若超過5次無回應(yīng),則判定為連接斷。
服務(wù)器會將次網(wǎng)關(guān)在線標(biāo)志位置為0,同樣家庭網(wǎng)關(guān)上線后會有監(jiān)控心跳線程,若連續(xù)75s內(nèi)無心跳信息,則會判定已與服務(wù)器斷開連接,網(wǎng)關(guān)會自動重啟連接服務(wù)器線程。
2.2.2家庭網(wǎng)關(guān)控制權(quán)安全性的設(shè)計(jì)
家庭網(wǎng)關(guān)的控制權(quán)必須是保證是家庭成員,不能讓陌生人取得控制權(quán),否則會帶來不可估量的后果。家庭網(wǎng)關(guān)存儲有一個(gè)可控手機(jī)號列表,必須通過本地web連接后才能更改,不能遠(yuǎn)程更改(防止等利用漏洞遠(yuǎn)程添加控制權(quán))。網(wǎng)關(guān)連接服務(wù)器后會上報(bào)可控手機(jī)號列表,只有在列表中的號碼才能遠(yuǎn)程登錄服務(wù)器,并且手機(jī)遠(yuǎn)程登錄服務(wù)器還要短信驗(yàn)證碼配合,防止他人偽裝登錄。手機(jī)登錄服務(wù)器后,發(fā)送控制家庭網(wǎng)關(guān)的命令時(shí)會在消息頭部增加手機(jī)號信息,網(wǎng)關(guān)收到信息后會核對該手機(jī)號是否在本地可控手機(jī)號列表中(防止服務(wù)器的手機(jī)號列表與網(wǎng)關(guān)本地手機(jī)號列表不一致)。
2.3家庭網(wǎng)關(guān)連接控制模塊工作流程
家庭網(wǎng)關(guān)的軟件流程如圖4所示,上電后初始化,然后向主服務(wù)器發(fā)送連接信息,若無法連接主服務(wù)器則向備用主服務(wù)器發(fā)送連接信息。連接上主服務(wù)器后會上報(bào)自身的一些信息,包括可控手機(jī)號列表,主服務(wù)器會根據(jù)地理位置等信息返回一個(gè)最近的從服務(wù)器序號和IP地址等信息,然后網(wǎng)關(guān)連接從服務(wù)器。
若連接從服務(wù)器連接不上,則會反饋給主服務(wù)器,主服務(wù)器會返回另一個(gè)從服務(wù)器的序號和IP地址信息用于連接。連接好從服務(wù)器后,家庭網(wǎng)關(guān)即可實(shí)現(xiàn)遠(yuǎn)程監(jiān)控,但必須與從服務(wù)器保持心跳連接,才能保證其是可控狀態(tài)。
2.4模擬測試的測試步驟和結(jié)果
本模擬測試方案中,為使數(shù)據(jù)庫訪問效率滿足性能要求,且PC遠(yuǎn)程控制可直接用瀏覽器實(shí)現(xiàn),主服務(wù)器采用PHP的YII框架搭建的web服務(wù)器,手機(jī)等終端和家庭網(wǎng)關(guān)連接主服務(wù)器則需要建立一個(gè)socket連接并把數(shù)據(jù)封裝為https協(xié)議。主服務(wù)器負(fù)責(zé)存儲網(wǎng)關(guān)信息,可控手機(jī)號列表等信息,并負(fù)責(zé)分發(fā)從服務(wù)器序號和IP給網(wǎng)關(guān),查找與手機(jī)號配對的網(wǎng)關(guān)所在的從服務(wù)器序號和IP并發(fā)送給認(rèn)證后的手機(jī)。
從服務(wù)器則采用PHP的Workerman框架來搭建,此框架是一個(gè)基于PHP的socket服務(wù)框架。網(wǎng)關(guān)與從服務(wù)器連接后保持心跳,手機(jī)獲取從服務(wù)器序號和IP后連接從服務(wù)器,根據(jù)網(wǎng)關(guān)服務(wù)號綁定與網(wǎng)關(guān)在同一個(gè)服務(wù)號里,在一個(gè)服務(wù)號里可包含多個(gè)手機(jī),但只能一個(gè)網(wǎng)關(guān),手機(jī)和網(wǎng)關(guān)之間可以互相通信。服務(wù)器端打開workerman的進(jìn)程,開啟服務(wù),如圖5所示。
網(wǎng)關(guān)遠(yuǎn)程登錄到服務(wù)器,id為67,服務(wù)號為1,與服務(wù)器保持心跳連接,如圖6所示。瀏覽器遠(yuǎn)程登錄,服務(wù)器認(rèn)證后分配其id為68,匹配到網(wǎng)關(guān)所在服務(wù)號為1,向網(wǎng)關(guān)(id為67)發(fā)出指令“l(fā)ight1turnon”,服務(wù)器將指令轉(zhuǎn)發(fā)給網(wǎng)關(guān)。
結(jié)語
模擬實(shí)現(xiàn)結(jié)果表明,通過心跳保持家庭網(wǎng)關(guān)與遠(yuǎn)程服務(wù)器長連接,分配服務(wù)號保證手機(jī)與家庭網(wǎng)關(guān)相關(guān)聯(lián)的方案可行。用家庭網(wǎng)關(guān)代替?zhèn)鹘y(tǒng)PC作為智能家居系統(tǒng)中家庭的控制中心,能充分利用現(xiàn)有家庭網(wǎng)關(guān)資源。
責(zé)任編輯:姚泓澤