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