基于SIP和ZigBee的物聯(lián)網(wǎng)家庭網(wǎng)關(guān)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
物聯(lián)網(wǎng)帶動(dòng)了繼互聯(lián)網(wǎng)之后全球信息產(chǎn)業(yè)的又一次科技與經(jīng)濟(jì)浪潮,智能家居及家庭網(wǎng)絡(luò)無(wú)疑是物聯(lián)網(wǎng)的熱點(diǎn)應(yīng)用領(lǐng)域。家庭網(wǎng)關(guān)是連接公網(wǎng)和家庭內(nèi)網(wǎng)的喉舌,負(fù)責(zé)家庭內(nèi)部設(shè)備對(duì)公網(wǎng)的訪問(wèn)、交互,用戶(hù)從公網(wǎng)上對(duì)家庭網(wǎng)絡(luò)訪問(wèn)、控制,以及家庭內(nèi)部設(shè)備的互聯(lián)等操作。物聯(lián)網(wǎng)家庭網(wǎng)關(guān)需要具備寬帶接入、業(yè)務(wù)識(shí)別和控制信息轉(zhuǎn)發(fā)等功能。
1SIP的概念
會(huì)話(huà)起始協(xié)議(SessionInitiationProtocol,SIP)是由互聯(lián)網(wǎng)工程任務(wù)組(InternetEngineeringTaskForce,IETF)于1999年提出的一個(gè)基于IP網(wǎng)絡(luò)實(shí)現(xiàn)復(fù)雜通信應(yīng)用的應(yīng)用層信令協(xié)議。
SIP是一個(gè)C/S協(xié)議,包含用戶(hù)代理(UserAgent,UA)和網(wǎng)絡(luò)服務(wù)器(Server)兩類(lèi)組件。SIP終端系統(tǒng)上運(yùn)行的與用戶(hù)交互的軟件稱(chēng)為用戶(hù)代理,網(wǎng)絡(luò)服務(wù)器為用戶(hù)代理提供注冊(cè)、認(rèn)證、鑒權(quán)、路由等服務(wù)。SIP呼叫建立和SIP會(huì)話(huà)功能依靠SIPUA及SIPServer實(shí)體完成。
SIP協(xié)議定義了兩種類(lèi)型的消息:請(qǐng)求和響應(yīng)。SIP請(qǐng)求包含INVITE、ACK、BYE、CANCEL、OPTIONS,REGISTER等六種基本方法,以及SUBSCRIBE、NOTIFY、PUBLISH等擴(kuò)展方法。SIP響應(yīng)包含1xx、2xx、3xx、4xx、5xx、6xx等六類(lèi)消息。
SIP消息的3個(gè)基本部分消息類(lèi)型、消息頭和消息體均可擴(kuò)充,并且SIP采用基于UTF-8字符集的文本編碼形式實(shí)現(xiàn),可十分簡(jiǎn)便地對(duì)消息進(jìn)行擴(kuò)展,使之適應(yīng)各種具體的應(yīng)用場(chǎng)景。
2ZigBee技術(shù)
ZigBee基于IEEE802.15.4標(biāo)準(zhǔn),在眾多短距離無(wú)線通信協(xié)議中,ZigBee技術(shù)有以下優(yōu)勢(shì):
⑴成本低,開(kāi)發(fā)相對(duì)容易,芯片CC2530的售價(jià)不到2美元,且免費(fèi)提供ZigBee通信協(xié)議和開(kāi)發(fā)工具;
能耗低,CC2530正常使用時(shí)功率不到1W;
可靠;
(4)組網(wǎng)方式靈活。
ZigBee技術(shù)的唯一缺點(diǎn)是傳輸速率不高,但也完全能滿(mǎn)足物聯(lián)網(wǎng)家庭網(wǎng)絡(luò)中的無(wú)線感知與監(jiān)控需要。
3系統(tǒng)總體架構(gòu)
圖1所示是物聯(lián)網(wǎng)家庭網(wǎng)絡(luò)架構(gòu)。釆用ZigBee協(xié)議構(gòu)建家庭網(wǎng)絡(luò)時(shí),可連接各種傳感器、繼電器(家電及控制設(shè)備)與家庭網(wǎng)關(guān)。在ZigBee無(wú)線家庭網(wǎng)絡(luò)中,傳感器、繼電器擔(dān)任終端的角色,家庭網(wǎng)關(guān)中的ZigBee主控模塊擔(dān)任協(xié)調(diào)器的角色。家庭網(wǎng)關(guān)上集成了ZigBee協(xié)調(diào)器與SIPServer的功能,能同時(shí)實(shí)現(xiàn)ZigBee網(wǎng)絡(luò)協(xié)調(diào)器功能、SIP與ZigBee協(xié)議數(shù)據(jù)格式的轉(zhuǎn)換功能以及經(jīng)SIP協(xié)議到Internet的訪問(wèn)權(quán)。SIP/ZigBee網(wǎng)關(guān)按SIP協(xié)議規(guī)范,代理ZigBee網(wǎng)絡(luò)內(nèi)的各種傳感節(jié)點(diǎn)及繼電器節(jié)點(diǎn)設(shè)備;家庭成員可通過(guò)SIP協(xié)議由SIPUA經(jīng)Internet訪問(wèn)家庭網(wǎng)關(guān),實(shí)現(xiàn)對(duì)家庭內(nèi)傳感器信息的獲取,以及對(duì)家庭設(shè)備的遠(yuǎn)程訪問(wèn)和控制。
家庭網(wǎng)關(guān)的一個(gè)重要作用就是實(shí)現(xiàn)公網(wǎng)中SIP協(xié)議與家庭網(wǎng)絡(luò)中ZigBee協(xié)議與數(shù)據(jù)格式的轉(zhuǎn)換。本文采用如圖2所示的協(xié)議模型,圖2中,左側(cè)為ZigBee網(wǎng)絡(luò)協(xié)議模型,右側(cè)為SIP協(xié)議模型,中部為物聯(lián)網(wǎng)家庭網(wǎng)關(guān)協(xié)議模型。
4家庭網(wǎng)關(guān)的硬件設(shè)計(jì)
硬件上采用DMATEK的DMA210XP整合平臺(tái),整合了ZigBee協(xié)調(diào)器ZB2530-03模塊,兩者間采用串口交換數(shù)據(jù)。圖3所示是本系統(tǒng)家庭網(wǎng)關(guān)的硬件設(shè)計(jì)圖。
圖3中的DMA210XP采用具有先進(jìn)ARMCortexA8核心的SamsungS5PV210處理器,該處理器采用先進(jìn)的ARMCortexA8核心,運(yùn)算速度可達(dá)1GHz,且自帶32/32KB指令一級(jí)緩存,512KB二級(jí)緩存。具備128M×8片共1GBDDR2SDRAM,
512MBSLCNANDFlash外部?jī)?nèi)存;另有SD卡接口、MicroSD(T-Flash)卡接口、USB接口、網(wǎng)口、串口、音頻接口、CMOSSensor攝像頭接口、CAN總線接口、HDMI接口、GSensor接口等,并有16.7M色800×4807.0inTFT電容式多點(diǎn)觸摸液晶屏,達(dá)到圖形監(jiān)控與收集資料的應(yīng)用。
ZigBee協(xié)調(diào)器ZB2530-03模塊由TI公司的核心芯片CC2530F256及其外圍電路組成。CC2530F256是用于2.4GHzIEEE802.15.4/ZigBee應(yīng)用的一個(gè)片上系統(tǒng)(SoC)解決方案。它以非常低的總的材料成本(約2美元)建立強(qiáng)大的網(wǎng)絡(luò)節(jié)點(diǎn)。CC2530F256結(jié)合了領(lǐng)先的RF收發(fā)器的優(yōu)良性能,具備業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8051CPU,256KB可編程閃存,8KBRAM,低功耗,高接收靈敏度和抗干擾性能,以及許多其他強(qiáng)大的功能,其電路圖如圖4所示。
5家庭網(wǎng)關(guān)的軟件設(shè)計(jì)
5.1協(xié)議棧的實(shí)現(xiàn)
本系統(tǒng)采用開(kāi)源的libosip2、eXosip2來(lái)實(shí)現(xiàn)SIPUA,并采用開(kāi)源的OPENSER實(shí)現(xiàn)SIPServer。家庭網(wǎng)關(guān)采用linux操作系統(tǒng),SIPServer在linux環(huán)境下編譯、調(diào)試。
采用TI提供的ZStack協(xié)議棧[4]實(shí)現(xiàn)IEEE802.15.4/ZigBee協(xié)議棧,而采用IAR嵌入式集成開(kāi)發(fā)環(huán)境具有在線下載、調(diào)試、仿真等功能。
5.2各操作的SIP協(xié)議實(shí)現(xiàn)
任何訪問(wèn)家庭網(wǎng)關(guān)及網(wǎng)絡(luò)的SIPUA均要向位于家庭網(wǎng)關(guān)的SIPServer注冊(cè),以獲得身份認(rèn)證及訪問(wèn)權(quán)限,注冊(cè)用RRGISTER方法實(shí)現(xiàn)。
為了能實(shí)時(shí)遠(yuǎn)程獲取家庭網(wǎng)絡(luò)內(nèi)各類(lèi)傳感器采集到的監(jiān)測(cè)信息,SIPUA需要向SIPServer訂閱家庭網(wǎng)絡(luò)中事件的變化。當(dāng)所訂閱的事件狀態(tài)發(fā)生變化時(shí),訂閱者會(huì)接收到來(lái)自通告者的通知。訂閱用SUBSCRIBE方法實(shí)現(xiàn),通知用NOTIFY方法實(shí)現(xiàn)[5]。
SIPUA通過(guò)Internet遠(yuǎn)程控制家電設(shè)備的開(kāi)啟或關(guān)閉,利用INVITE方法實(shí)現(xiàn)。
SIPUA向SIPServer注冊(cè)
圖5所示是SIPUA向家庭網(wǎng)關(guān)注冊(cè)的關(guān)系圖。其注冊(cè)步驟如下:
SIPUA發(fā)送REGISTER消息到SIPServer。
SIPServer返回40l響應(yīng)給SIPUA,要求認(rèn)證。
SIPUA加入認(rèn)證信息,重新向SIPServer進(jìn)行注冊(cè)。
SIPServer檢查REGISTER消息參數(shù)合法性。若參數(shù)合法且正確,貝峋SIPUA返回200OK,完成注冊(cè);若參數(shù)不合法或不正確,則返回403Forbidden,表明注冊(cè)失敗。
注冊(cè)成功后,SIPUA需要按指定超時(shí)時(shí)間進(jìn)行刷新注冊(cè),否則SIPServer令其注銷(xiāo)。
SIPUA訂閱家庭監(jiān)測(cè)信息
圖6所示是SIPUA訂閱家庭監(jiān)測(cè)信息示意圖。該過(guò)程可分為兩步:其一是SIPUA發(fā)送SUBSCRIBE消息給SIPServer訂閱遠(yuǎn)端家庭網(wǎng)絡(luò)傳感節(jié)點(diǎn)監(jiān)測(cè)信息;其二是SIPServer檢查SUBSCRIBE消息參數(shù)的合法性,同時(shí)查詢(xún)?cè)撚脩?hù)是否具有相應(yīng)的訂閱權(quán)限,并根據(jù)查詢(xún)結(jié)果對(duì)SIPUA做
200OK或403Forbidden回執(zhí)。
5.5家庭網(wǎng)絡(luò)信息發(fā)布和更新
圖7所示是家庭網(wǎng)絡(luò)信息發(fā)布和更新示意圖。SIPServer/ZigBee協(xié)調(diào)器實(shí)時(shí)匯聚ZigBee網(wǎng)絡(luò)內(nèi)各傳感節(jié)點(diǎn)的采集值,若監(jiān)測(cè)到某訂閱的ZigBee傳感器感測(cè)值有變化,及時(shí)構(gòu)造相應(yīng)的NOTIFY消息發(fā)送給成功訂閱該事件的SIPUA。
5.6SIPUA遠(yuǎn)程控制家庭設(shè)備
圖8所示是用SIPUA遠(yuǎn)程控制家庭設(shè)備的原理圖。SIPUA遠(yuǎn)程控制家庭設(shè)備時(shí),SIPUA首先發(fā)送INVITE消息給SIPServer,以請(qǐng)求遠(yuǎn)程控制家庭設(shè)備。之后,SIPServer解析INVTIE請(qǐng)求,并向?qū)?yīng)的家電設(shè)備(繼電器)發(fā)出控制命令(打開(kāi)或關(guān)閉)。若家電設(shè)備正常動(dòng)作且發(fā)回正確應(yīng)答,則按圖8(a)所示信令流程繼續(xù)本次SIP會(huì)話(huà);若家電設(shè)備未能正常動(dòng)作或未發(fā)回正確應(yīng)答,則按圖8(b)所示信令流程,由SIPServer向SIPUA回應(yīng)486Busy應(yīng)答,以結(jié)束本次SIP會(huì)話(huà)。
6SIPXML消息體的設(shè)計(jì)
在SIPSUBSCRIBE,NOTIFY及INVITE方法的XML消息體中攜帶與ZigBee家庭網(wǎng)絡(luò)通信的數(shù)據(jù)內(nèi)容。采用XML格式的消息體為管理ZigBee家庭網(wǎng)絡(luò)提供了高度的靈活性和高效率的實(shí)施方法。
6.1用SUBSCRIBE方法設(shè)計(jì)XML消息體實(shí)例
(1)示例一:訂閱溫濕度傳感器監(jiān)測(cè)信息。
<?XMLversion=v1.0vencodingsvutf-8”?><subscribe>
<temprature></temprature>
<humidity></humidity>
</subscribe>
(2)示例二:訂閱安防監(jiān)測(cè)信息。
<?XMLversion=”1.0”encoding^'utf-8”?>
<subscribe>
<body></body>
</subscribe>
6.2用NOTIFY方法設(shè)計(jì)XML消息體實(shí)例
(1)示例一:發(fā)布和更新溫濕度信息。
<?XMLversion='1.0'encodings'utf-8'?>
<notify>
<temprature>26.5</temprature><humidity>58.2</humidity>
</notify>
分別在<temprature>和<humidity>的XML字段中攜帶溫度與濕度值。
(2)示例二:發(fā)布和更新安防信息。
<?XMLversion='T.0"encoding="utf-8"?>
<notify>
<body>Y</body>
</notify>
Y表示有人闖入,N表示無(wú)人。
6.3用INVITE方法設(shè)計(jì)XML消息體
<?XMLversion="1.0"encoding="utf-8"?>
<command>
<open>Y</open>
<item>aircon</item>
</command>
在<open>字段中攜帶開(kāi)或關(guān)的指令,Y表示開(kāi),N表示關(guān);在<item>字段中攜帶要操控的設(shè)備,例如aircon表示空調(diào),curtain表示窗簾。
SIPServer需要完成SIP協(xié)議與串口數(shù)據(jù)格式的雙向轉(zhuǎn)換,從串口接收Z(yǔ)igBee主控匯聚的監(jiān)測(cè)信息供SIP上層應(yīng)用使用,從SIP方法的XML消息體中提取指令轉(zhuǎn)換為串口數(shù)據(jù)格式,發(fā)向ZigBee協(xié)調(diào)器模塊。
7ZigBee無(wú)線通信數(shù)據(jù)格式設(shè)計(jì)
在ZigBee家庭網(wǎng)絡(luò)中,位于家庭網(wǎng)關(guān)中的ZigBee協(xié)調(diào)器負(fù)責(zé)接收和匯聚各類(lèi)傳感器采集到的監(jiān)測(cè)信息,并將接收到的信息通過(guò)串口發(fā)往上層SIP應(yīng)用(ZigBee串口與ZigBee無(wú)線數(shù)據(jù)格式一致),同時(shí)將從串口接收到的控制指令發(fā)往各繼電器(家電)。
7.1協(xié)調(diào)器接收格式
發(fā)送端的傳感器格式(byte1~byte10)如圖9所示。
在圖9中,byte1byte2:傳感器端數(shù)據(jù)發(fā)送的固定頭,固定為0xFA0xFB;byte3:數(shù)據(jù)類(lèi)型的標(biāo)識(shí),0x00為溫濕度,0x01為安防,0x02為火焰,0x03為煙霧,0x04表示可燃?xì)怏w;byte4:傳感數(shù)據(jù)長(zhǎng)度(統(tǒng)一為0x04);byte5?byte8:傳感器采集到的具體數(shù)據(jù);byte9:保留;byte10:byte1?byte9校驗(yàn)值(相加取低8位)。
7.2協(xié)調(diào)器發(fā)送數(shù)據(jù)格式
接收端家電設(shè)備(繼電器)的格式(byte1?byte10)如圖10所示。
在圖10中,byte1byte2:協(xié)調(diào)器端數(shù)據(jù)發(fā)送控制繼電器命令的固定頭0xFA0xFB;byte3:協(xié)調(diào)器端數(shù)據(jù)發(fā)送對(duì)象和繼電器序號(hào)(0x01為發(fā)送命令給繼電器1端,表示空調(diào);0x02為發(fā)送命令給繼電器2端,表示電燈;0x03表示發(fā)送命令給繼電器3端,表示窗簾;0x04為發(fā)送命令給繼電器4端,表示電飯煲,依此類(lèi)推……);byte4:命令長(zhǎng)度,固定為0x04;byte5:發(fā)送給繼電器的命令內(nèi)容(0x02為關(guān)閉,0x01為開(kāi)啟);byte6?byte9:保留:byte10:byte1?byte9校驗(yàn)值(相加取低8位)。
7.3家電設(shè)備(繼電器)應(yīng)答數(shù)據(jù)格式
本系統(tǒng)的接收端協(xié)調(diào)器格或byte1?byte9)如圖11所示。
圖11中,byte1?byte4表示收到的數(shù)據(jù)原值返回;byte5?byte8為應(yīng)答碼,固定為0xAA0xBB0xCC0xDD;byte9為byte1?byte8校驗(yàn)值(相加取低8位)。
8結(jié)語(yǔ)
家庭網(wǎng)關(guān)在物聯(lián)網(wǎng)智能家居網(wǎng)絡(luò)中具有重要地位,本文從硬件和協(xié)議數(shù)據(jù)格式上對(duì)家庭網(wǎng)關(guān)進(jìn)行了設(shè)計(jì),通過(guò)SIPXML消息體和ZigBee無(wú)線通信數(shù)據(jù)格式的設(shè)計(jì),能很好實(shí)現(xiàn)家庭網(wǎng)關(guān)對(duì)協(xié)議及數(shù)據(jù)格式的轉(zhuǎn)換功能,實(shí)現(xiàn)基于SIP協(xié)議的公網(wǎng)訪問(wèn)基于ZigBee協(xié)議的家庭網(wǎng)絡(luò)。
20211024_61753711dd4c5__基于SIP和ZigBee的物聯(lián)網(wǎng)家庭網(wǎng)關(guān)設(shè)計(jì)