資源描述:
《基于zigbee與mqtt的物聯(lián)網(wǎng)網(wǎng)關(guān)通信框架的設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、基于ZigBee與MQTT的物聯(lián)網(wǎng)網(wǎng)關(guān)通信框架的設(shè)計(jì)與實(shí)現(xiàn)隨著匍慧地球感知屮國(guó)”等一系列有關(guān)物聯(lián)網(wǎng)相關(guān)的口號(hào)的提出,物聯(lián)網(wǎng)的在各行各業(yè)應(yīng)用方案也在不斷地被提出并實(shí)施,這也使人們的生活變得更加便利和智能化[1]。此外,因?yàn)闊o(wú)線傳感器結(jié)構(gòu)簡(jiǎn)單、成本低廉的特點(diǎn),使得其在物聯(lián)網(wǎng)中成為一個(gè)部分,但因?yàn)槠涫褂玫囊襣Bee協(xié)議與現(xiàn)有的互聯(lián)網(wǎng)的TCP/IP協(xié)議是屬于兩種不同的異構(gòu)網(wǎng)絡(luò)的協(xié)議[2],兩者之間如有實(shí)時(shí)、可靠的傳輸數(shù)據(jù),也成了無(wú)線傳感網(wǎng),乃至物聯(lián)網(wǎng)能否快速發(fā)展的…個(gè)重要因素。本文將MQTT協(xié)議融合到物聯(lián)網(wǎng)網(wǎng)關(guān)協(xié)議轉(zhuǎn)換的設(shè)計(jì)中,通過(guò)ZigBee協(xié)議與MQTT協(xié)議的對(duì)接,解決物聯(lián)網(wǎng)在不同網(wǎng)絡(luò)結(jié)構(gòu)、不同
2、通信方式以及不同協(xié)議環(huán)境下的對(duì)接問(wèn)題。2相關(guān)研究背景(Relatedresearchbackground)物聯(lián)網(wǎng)網(wǎng)關(guān)技術(shù)是物聯(lián)網(wǎng)的關(guān)鍵技術(shù)之一,近年來(lái)國(guó)內(nèi)外的研究也較多,在感知層的ZigBee協(xié)議與上層協(xié)議的對(duì)接轉(zhuǎn)換上提出了很多網(wǎng)關(guān)的實(shí)現(xiàn)技術(shù)和方案,如將ZigBee與Wi-Fi進(jìn)行對(duì)接來(lái)實(shí)現(xiàn)智能家居網(wǎng)關(guān)的設(shè)計(jì)[3];將ZigBee與TCP協(xié)議之間進(jìn)行有效轉(zhuǎn)換來(lái)實(shí)現(xiàn)網(wǎng)關(guān)軟硬件設(shè)計(jì)[4];也有文獻(xiàn)提出一種基于ZigBee技術(shù)和GPRS技術(shù)的網(wǎng)關(guān)設(shè)計(jì)方案,實(shí)現(xiàn)監(jiān)控中心對(duì)現(xiàn)地水位的實(shí)時(shí)監(jiān)控[5]。以上的這類文獻(xiàn)主要研究的是針對(duì)某種具體物聯(lián)網(wǎng)的應(yīng)用場(chǎng)合下對(duì)物聯(lián)網(wǎng)網(wǎng)關(guān)的設(shè)計(jì),在一定程度上也提高了物聯(lián)網(wǎng)網(wǎng)
3、關(guān)的效率,但對(duì)于異構(gòu)網(wǎng)絡(luò)的不同上層協(xié)議與底層ZigBee協(xié)議的對(duì)接的研究還比較少。本文將主要研究物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)中乙gBee與MQTT協(xié)議的對(duì)接,從而實(shí)現(xiàn)物聯(lián)網(wǎng)感知層與不同應(yīng)用層協(xié)議之間的通信。3物聯(lián)網(wǎng)網(wǎng)關(guān)相關(guān)協(xié)議分析(Analysisofinternetofthingsgatewayprotocol)ZigBee是物聯(lián)網(wǎng)感知層的協(xié)議之一,它具有近距離、低功耗、低復(fù)雜度、低數(shù)據(jù)傳輸率以及自組織等特點(diǎn),其低功耗的特點(diǎn)可以使其在有限能源供應(yīng)的場(chǎng)合下能夠存活更長(zhǎng)的時(shí)間;自組織的特點(diǎn)在物聯(lián)網(wǎng)感知節(jié)點(diǎn)的部署中可以通過(guò)多跳的方式來(lái)進(jìn)行數(shù)據(jù)傳輸,而不需要專門部署固定的基礎(chǔ)設(shè)施。相比于其他物聯(lián)網(wǎng)感知層的短距離
4、無(wú)線通信協(xié)議,如Wi?Fi、藍(lán)牙等,雖然Wi?Fi組網(wǎng)方便,但傳輸快、流量大的特點(diǎn)會(huì)導(dǎo)致其具有太大的功耗與成本開(kāi)銷。對(duì)于物聯(lián)網(wǎng)感知層來(lái)說(shuō),對(duì)傳輸?shù)乃俣扰c流量并沒(méi)有很大要求,反而更需要低流量的緩解流量開(kāi)銷的問(wèn)題;藍(lán)牙協(xié)議雖然也是可以做到比較低的功耗,但其組網(wǎng)上要比乙gBee復(fù)雜麻煩得多,不適合物聯(lián)網(wǎng)下大量節(jié)點(diǎn)的組網(wǎng)與數(shù)據(jù)傳輸。MQTT(MessageQueueingTelemetryTransportprotocol,消息隊(duì)列遙測(cè)傳輸協(xié)議),它是IBM公司所推出的一種基于輕量級(jí)代理的發(fā)布/訂閱模式的消息傳輸協(xié)議,運(yùn)行在TCP協(xié)議棧之上,能夠提供有序、可靠、雙向連接的網(wǎng)絡(luò)連接保證[6]。它具有開(kāi)
5、放、簡(jiǎn)單和易于實(shí)現(xiàn)等特點(diǎn),因此更適合于嵌入式系統(tǒng)以及網(wǎng)絡(luò)帶寬低等資源受限的環(huán)境中應(yīng)用,此外,它也被廣泛用于遙感勘測(cè)、智能家居、能源監(jiān)測(cè)和醫(yī)療應(yīng)用程序等各個(gè)領(lǐng)域,對(duì)于M2M或物聯(lián)網(wǎng)網(wǎng)關(guān)通信來(lái)說(shuō)卻是一個(gè)不錯(cuò)的選擇。4基于乙gBee與MQTT協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān)總體設(shè)計(jì)(DesignofinternetofthingsgatewaybasedonZigBeeandMQTTprotocol)4.1網(wǎng)關(guān)系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)如圖1所示,基于ZigBee/MQTT物聯(lián)網(wǎng)網(wǎng)關(guān)位于網(wǎng)絡(luò)傳輸層,其嵌入式網(wǎng)關(guān)/PC網(wǎng)關(guān)應(yīng)用程序?qū)⒋趥鱽?lái)的傳感器數(shù)據(jù)轉(zhuǎn)換為符合JSON消息格式的數(shù)拯,通過(guò)MQTT的發(fā)布者角色發(fā)布到MQTT代
6、理服務(wù)器。MQTT代理服務(wù)器一方面對(duì)數(shù)據(jù)進(jìn)行持久化操作,將數(shù)據(jù)以文檔形式存入MongoDB數(shù)據(jù)庫(kù)。另一方面則將網(wǎng)關(guān)應(yīng)用程序發(fā)布的數(shù)據(jù)消息推送到已經(jīng)訂閱的PC或移動(dòng)端的客戶端。而應(yīng)用層則是PC或移動(dòng)端的客戶端接收服務(wù)器推送的下位機(jī)發(fā)布的傳感器數(shù)據(jù)或發(fā)送控制傳感器的命令給代理服務(wù)器。MTZigBee/MQTT物聯(lián)網(wǎng)網(wǎng)關(guān)$用啟1",峽入式/片初關(guān)斗用18序zicaaasb??□設(shè)物理爛zvsa圖1基于ZigBee/MQTT物聯(lián)網(wǎng)網(wǎng)關(guān)總體結(jié)扌Fig.1ThemainarchitectureofIOTgatewayonZigBee/MQTT4.2ZIGBEE與MQTT協(xié)議之間的通信框架設(shè)計(jì)(1)定義傳
7、感器設(shè)備類對(duì)于不同消息的格式,需要設(shè)計(jì)一個(gè)標(biāo)準(zhǔn)的格式,使得無(wú)論程序接收的是哪種消息格式,都可以統(tǒng)一轉(zhuǎn)換成這個(gè)標(biāo)準(zhǔn)的格式,從而實(shí)現(xiàn)不同消息格式的統(tǒng)一化,方便消息格式的互相轉(zhuǎn)換C經(jīng)過(guò)對(duì)現(xiàn)有傳感器產(chǎn)品特性的歸納、總結(jié)定義了如下數(shù)據(jù)類和傳感器設(shè)備類,描述如下:/*定義數(shù)擁類,ts述棄存液傳懇器設(shè)備狀態(tài)值3個(gè)尹用publicclassStateValue{9個(gè)引用publicstringDescribe{set:get