国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ZigBee與MQTT的物聯(lián)網(wǎng)網(wǎng)關(guān)通信框架的設(shè)計(jì)與實(shí)現(xiàn)

2017-05-23 08:02譚方勇王昂劉子寧
軟件工程 2017年4期

譚方勇+王昂+劉子寧

摘 要:提出了一種基于ZigBee與MQTT的物聯(lián)網(wǎng)網(wǎng)關(guān)協(xié)議轉(zhuǎn)換的通信框架的設(shè)計(jì)方法,主要目的是解決多協(xié)議、多消息格式的兼容與擴(kuò)展的問(wèn)題。用C#語(yǔ)言定義了符合框架的傳感器設(shè)備類(lèi)和數(shù)據(jù)類(lèi),并利用“觀(guān)察者模式”和“簡(jiǎn)單工廠(chǎng)模式”的設(shè)計(jì)思想,解決了多協(xié)議擴(kuò)展和通信效率的問(wèn)題。

關(guān)鍵詞:ZigBee;MQTT;物聯(lián)網(wǎng)網(wǎng)關(guān);通信框架;JSON

中圖分類(lèi)號(hào):TP393.03 文獻(xiàn)標(biāo)識(shí)碼:A

Abstract:The paper proposes a design method of the communication framework for internet of things gateway protocol conversion based on ZigBee and MQTT.The main purpose is to solve the compatibility and expansion problems of multi-protocol and multi-message formats.It defines the framework of the sensor device class and data class with the C# language,and solves the low efficiency problem of multi-protocol extension and communication through the design philosophy of Observer Pattern and Simple Factory Pattern.

Keywords:ZigBee;MQTT;IOT Gateway;communication framework;JSON

1 引言(Introduction)

隨著“智慧地球”“感知中國(guó)”等一系列有關(guān)物聯(lián)網(wǎng)相關(guān)的口號(hào)的提出,物聯(lián)網(wǎng)的在各行各業(yè)應(yīng)用方案也在不斷地被提出并實(shí)施,這也使人們的生活變得更加便利和智能化[1]。此外,因?yàn)闊o(wú)線(xiàn)傳感器結(jié)構(gòu)簡(jiǎn)單、成本低廉的特點(diǎn),使得其在物聯(lián)網(wǎng)中成為一個(gè)部分,但因?yàn)槠涫褂玫腪igBee協(xié)議與現(xiàn)有的互聯(lián)網(wǎng)的TCP/IP協(xié)議是屬于兩種不同的異構(gòu)網(wǎng)絡(luò)的協(xié)議[2],兩者之間如有實(shí)時(shí)、可靠的傳輸數(shù)據(jù),也成了無(wú)線(xiàn)傳感網(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)、不同通信方式以及不同協(xié)議環(huán)境下的對(duì)接問(wèn)題。

2 相關(guān)研究背景(Related research background)

物聯(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)提出一種基于Zig Bee技術(shù)和GPRS技術(shù)的網(wǎng)關(guān)設(shè)計(jì)方案,實(shí)現(xiàn)監(jiān)控中心對(duì)現(xiàn)地水位的實(shí)時(shí)監(jiān)控[5]。以上的這類(lèi)文獻(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)關(guān)的效率,但對(duì)于異構(gòu)網(wǎng)絡(luò)的不同上層協(xié)議與底層ZigBee協(xié)議的對(duì)接的研究還比較少。本文將主要研究物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)中ZigBee與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é)議分析(Analysis of internet of

things gateway protocol)

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ù)傳輸,而不需要專(zhuān)門(mén)部署固定的基礎(chǔ)設(shè)施。相比于其他物聯(lián)網(wǎng)感知層的短距離無(wú)線(xiàn)通信協(xié)議,如Wi-Fi、藍(lán)牙等,雖然Wi-Fi組網(wǎng)方便,但傳輸快、流量大的特點(diǎn)會(huì)導(dǎo)致其具有太大的功耗與成本開(kāi)銷(xiāo)。對(duì)于物聯(lián)網(wǎng)感知層來(lái)說(shuō),對(duì)傳輸?shù)乃俣扰c流量并沒(méi)有很大要求,反而更需要低流量的緩解流量開(kāi)銷(xiāo)的問(wèn)題;藍(lán)牙協(xié)議雖然也是可以做到比較低的功耗,但其組網(wǎng)上要比ZigBee復(fù)雜麻煩得多,不適合物聯(lián)網(wǎng)下大量節(jié)點(diǎn)的組網(wǎng)與數(shù)據(jù)傳輸。

MQTT(Message Queueing Telemetry Transport Protocol,消息隊(duì)列遙測(cè)傳輸協(xié)議),它是IBM公司所推出的一種基于輕量級(jí)代理的發(fā)布/訂閱模式的消息傳輸協(xié)議,運(yùn)行在TCP協(xié)議棧之上,能夠提供有序、可靠、雙向連接的網(wǎng)絡(luò)連接保證[6]。它具有開(kāi)放、簡(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 基于ZigBee與MQTT協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān)總體設(shè)

計(jì)(Design of internet of things gateway based on

ZigBee and MQTT protocol)

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ù)據(jù),通過(guò)MQTT的發(fā)布者角色發(fā)布到MQTT代理服務(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)端的客戶(hù)端。而應(yīng)用層則是PC或移動(dòng)端的客戶(hù)端接收服務(wù)器推送的下位機(jī)發(fā)布的傳感器數(shù)據(jù)或發(fā)送控制傳感器的命令給代理服務(wù)器。

4.2 ZIGBEE與MQTT協(xié)議之間的通信框架設(shè)計(jì)

(1)定義傳感器設(shè)備類(lèi)

對(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)換。經(jīng)過(guò)對(duì)現(xiàn)有傳感器產(chǎn)品特性的歸納、總結(jié)定義了如下數(shù)據(jù)類(lèi)和傳感器設(shè)備類(lèi),描述如下:

上述傳感器設(shè)備類(lèi)描述了傳感器設(shè)備的類(lèi)型、所在的區(qū)域地址、區(qū)域號(hào)、設(shè)備號(hào),同時(shí)可以根據(jù)傳感器的不同,無(wú)限擴(kuò)充傳感器采集的數(shù)據(jù)的描述與數(shù)值。

(2)“簡(jiǎn)單工廠(chǎng)模式”在傳感器與協(xié)議中的應(yīng)用

對(duì)于不同傳感器或者協(xié)議,其實(shí)本質(zhì)傳輸?shù)膬?nèi)容并沒(méi)有太大的改變,都是傳感器相關(guān)的一系列屬性。這種情況下,如果在編程上一次編寫(xiě),然后根據(jù)不同的傳感器類(lèi)型進(jìn)行相應(yīng)不同的實(shí)例化,而使得系統(tǒng)具有更好的擴(kuò)展性與較小的代碼修改量,這是一個(gè)好的通信框架需要具備的。該模式能解決多種傳感器與多種協(xié)議的擴(kuò)展性問(wèn)題。在定義了一個(gè)統(tǒng)一的標(biāo)準(zhǔn)傳感器設(shè)備類(lèi)后,可以根據(jù)不同的設(shè)備類(lèi)型對(duì)其實(shí)例化。

(3)“觀(guān)察者模式”設(shè)計(jì)

當(dāng)前大多數(shù)物聯(lián)網(wǎng)網(wǎng)關(guān)的通信都是輪詢(xún)指令加同步通信的方式,但這種方式的通信會(huì)使數(shù)據(jù)傳輸有較大的延遲和阻塞,且隨著設(shè)備數(shù)量的增加會(huì)更加明顯。為了解決此問(wèn)題,本網(wǎng)關(guān)的通信處理主要采用異步通信方式與“觀(guān)察者模式”,這樣使得通信在接收時(shí)不用一直處在等待阻塞狀態(tài),可以更實(shí)時(shí)的獲取下位機(jī)傳感器數(shù)據(jù)。在.NET下,使用委托可以很好的實(shí)現(xiàn)。C#委托的使用,如圖2所示。

(4)數(shù)據(jù)傳送中消息格式的確定

在數(shù)據(jù)交換中,JSON數(shù)據(jù)格式是一種輕量級(jí)別的“key/value”數(shù)據(jù)交換格式。與XML相比,JSON在描述同一設(shè)備的情況下,具有更少的容量,使得在傳輸中能夠用較少的流量傳輸相同的數(shù)據(jù)。

(5)網(wǎng)關(guān)協(xié)議轉(zhuǎn)換的實(shí)現(xiàn)流程

首先是ZIGBEE無(wú)線(xiàn)網(wǎng)絡(luò)經(jīng)過(guò)ZIGBEE協(xié)調(diào)器的串口與程序進(jìn)行通信,程序的數(shù)據(jù)層在收到串口數(shù)據(jù)后,將數(shù)據(jù)傳遞給程序的邏輯層。邏輯層根據(jù)改寫(xiě)MODBUS協(xié)議的自定義協(xié)議解析成框架內(nèi)統(tǒng)一的傳感器設(shè)備對(duì)象實(shí)例,然后再經(jīng)過(guò)JSON格式處理類(lèi)將轉(zhuǎn)化來(lái)的傳感器設(shè)備實(shí)例打包成JSON格式字符串。再通過(guò)MQTT客戶(hù)端將數(shù)據(jù)發(fā)布到MQTT服務(wù)器,從而推送到訂閱者的客戶(hù)端上,最終實(shí)現(xiàn)不同通信方式、不同協(xié)議、不同數(shù)據(jù)格式的轉(zhuǎn)換與傳輸。

5 ZIGBEE與MQTT協(xié)議轉(zhuǎn)換的實(shí)現(xiàn)(Implementation

of ZIGBEE and MQTT protocol conversion)

在.NET開(kāi)發(fā)中,M2Mqtt.Net是一個(gè)支持MQTT v3.1協(xié)議版本的MQTT客戶(hù)端開(kāi)源庫(kù)。在通信框架核心網(wǎng)關(guān)程序中,使用M2Mqtt.Net開(kāi)源庫(kù),并根據(jù)需求對(duì)源代碼進(jìn)行修改,來(lái)實(shí)現(xiàn)MQTT客戶(hù)端上數(shù)據(jù)的發(fā)布與訂閱。對(duì)于此類(lèi)庫(kù)的操作,如圖3所示。

通過(guò)對(duì)MqttClient實(shí)例化并操作,可以實(shí)現(xiàn)客戶(hù)端與MQTT代理服務(wù)器的連接、發(fā)布、訂閱主題消息。發(fā)布消息是推送感知層數(shù)據(jù),訂閱消息則是接收應(yīng)用層客戶(hù)端的控制指令。

C#中有相應(yīng)的JSON打包與解析開(kāi)源庫(kù),如Newtonsoft.Json開(kāi)源庫(kù)。使用Newtonsoft.Json可以對(duì)一個(gè)設(shè)備對(duì)象類(lèi)直接打包成JSON格式的字符串,也可以將JSON格式的字符串中解析為一個(gè)設(shè)備對(duì)象類(lèi),簡(jiǎn)化了開(kāi)發(fā)過(guò)程、提高了開(kāi)發(fā)效率。

這樣就基本實(shí)現(xiàn)了將感知層數(shù)據(jù)收集后轉(zhuǎn)換到JSON格式的MQTT協(xié)議中,進(jìn)行推送,如圖4所示。

6 結(jié)論 (Conclusion)

物聯(lián)網(wǎng)網(wǎng)關(guān)的通信框架中協(xié)議的數(shù)據(jù)傳輸與不同的協(xié)議轉(zhuǎn)換是其關(guān)鍵所在。基于ZigBee/MQTT的物聯(lián)網(wǎng)網(wǎng)關(guān)協(xié)議框架能很好的解決了多協(xié)議、多消息格式的兼容與擴(kuò)展的問(wèn)題。通信方式不同,根據(jù)不同的通信類(lèi)獲取數(shù)據(jù)后委托給邏輯處理層來(lái)處理,邏輯處理層把委托來(lái)的消息,通過(guò)不同的消息格式處理類(lèi)來(lái)解析或打包消息,最終統(tǒng)一轉(zhuǎn)化為框架內(nèi)標(biāo)準(zhǔn)的傳感器設(shè)備對(duì)象,用于后續(xù)的傳輸或界面顯示。

參考文獻(xiàn)(References)

[1] 張藝粟,等.物聯(lián)網(wǎng)ZigBee網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(6):34-38.

[2] 牛作領(lǐng).物聯(lián)網(wǎng)ZigBee網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)方法[J].電子技術(shù)與軟件工程,2016(24):19-19.

[3] 岑榮瀅,等.面向智能家居應(yīng)用的ZigBee-WiFi網(wǎng)關(guān)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,3:232-235.

[4] 程春潘,王可.基于Zigbee與TCP的物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)[J].電子信息與計(jì)算機(jī)科學(xué),2014,9:1.

[5] 杜崗,等.一種ZigBee-GPRS網(wǎng)關(guān)系統(tǒng)設(shè)計(jì)[J].自動(dòng)化應(yīng)用,2015,3:60-62.

[6] 林滸,張家銘,楊海波.基于MQTT協(xié)議的即時(shí)消息業(yè)務(wù)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,3:219-224.

作者簡(jiǎn)介:

譚方勇(1976-),男,碩士,副教授.研究領(lǐng)域:物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā).

王 昂(1993-),男,大專(zhuān),工程師.研究領(lǐng)域:物聯(lián)網(wǎng)網(wǎng)關(guān)技術(shù)傳感器.

劉子寧(1995-),男,大專(zhuān)生.研究領(lǐng)域:移動(dòng)應(yīng)用開(kāi)發(fā).

鄂州市| 合肥市| 南澳县| 邛崃市| 南丹县| 邵阳市| 福建省| 靖边县| 化州市| 威宁| 邵东县| 西乡县| 绥棱县| 新津县| 府谷县| 论坛| 固始县| 宜川县| 宕昌县| 怀柔区| 延边| 拜城县| 华坪县| 临朐县| 嘉荫县| 永和县| 达州市| 嘉定区| 石屏县| 六安市| 永寿县| 广丰县| 东城区| 三亚市| 葫芦岛市| 清苑县| 石狮市| 龙川县| 石阡县| 陕西省| 江孜县|