999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MQTT發(fā)布/訂閱消息機制在Arduino傳感節(jié)點的實現(xiàn)

2013-12-31 00:00:00張波楊國華
電子世界 2013年22期

【摘要】本文介紹一種全新的物聯(lián)網(wǎng)通信協(xié)議——基于發(fā)布/訂閱范式的消息隊列遙測傳輸協(xié)議的原理、組成和實現(xiàn)。研究在計算和通信能力受限的基于單片機的物聯(lián)網(wǎng)節(jié)點上,實現(xiàn)基于MQTT的數(shù)據(jù)傳遞。

【關(guān)鍵詞】消息隊列遙測傳輸協(xié)議;發(fā)布/訂閱傳遞機制;基于主題

在設(shè)計和部署物聯(lián)網(wǎng)應(yīng)用系統(tǒng)時,選擇高效、低資源占用的消息傳遞協(xié)議是系統(tǒng)架構(gòu)設(shè)計關(guān)鍵一步。設(shè)計人員看到太多的通信協(xié)議,它們存在一些差別,而傳感節(jié)點提供僅能夠提供非常有限的計算能力、低可靠的通信鏈路和有限的電池電量,消息服務(wù)器通常部署在云端。本文討論一種適應(yīng)物聯(lián)網(wǎng)通信需要的輕量級可靠消息傳遞協(xié)議——MQTT,并介紹以8位單片機為傳感節(jié)點的系統(tǒng)實現(xiàn)。

1.MQTT簡介

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸,以下簡稱MQTT)是IBM和Eurotech開發(fā)的一個發(fā)布/訂閱模式通信協(xié)議。MQTT建立在TCPIP上(圖1),為計算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠程傳感器和控制設(shè)備通訊而設(shè)計的協(xié)議,是物聯(lián)網(wǎng)的重要通信協(xié)議之一。

MQTT可以在支持TCPIP的不同類型設(shè)備上實現(xiàn),例如:計算機、移動設(shè)備(智能手機、平板、PDA)、計算機能力有限的傳感節(jié)點等;可以不用OS或者在不同OS環(huán)境下實現(xiàn),包括:Windows、Linux、Android等;MQTT組織提供不同語言的開發(fā)包,目前已有C、JAVA、Python等;MQTT可以在帶寬受限的不可靠通信網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)在數(shù)據(jù)生產(chǎn)者和使用者間有效傳輸。

本文研究MQTT在Arduino單片機開發(fā)板上的實現(xiàn),描述MQTT實現(xiàn)傳感數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)脑怼⒔M成和方法。MQTT建立在Arduino上。消息生產(chǎn)者與接收者之間保持低耦合性。

2.發(fā)布/訂閱消息傳遞機制

發(fā)布/訂閱(Publish/subscribe或pub/sub)是一種消息范式,在這種機制下,多個發(fā)布應(yīng)用(消息生產(chǎn)者)和多個訂閱應(yīng)用(消息消費者)通過建立在代理服務(wù)中的特定主題作為中介互相通信。生產(chǎn)者與消費者間不需要通過TCP建立直接的通信連接,發(fā)布的消息進入一個先入先出的隊列;訂閱者對一個或多個類別表達興趣,于是只接收感興趣的消息,而不需要知道什么樣的發(fā)布者發(fā)布的消息。這種發(fā)布者和訂閱者的解耦解耦可以允許更好的可擴放性和更為動態(tài)的網(wǎng)絡(luò)拓撲。

在發(fā)布/訂閱模型中,訂閱者通常接收所有發(fā)布的消息的一個子集。選擇接受和處理的消息的過程被稱作過濾。有兩種常用的過濾形式:基于主題(例如:MQTT)和基于內(nèi)容。在基于主題的系統(tǒng)中,發(fā)布者發(fā)布消息到一個中間的消息代理,命名一個主題或通道上(圖2)。然后,訂閱者向該消息代理注冊訂閱,由消息代理來進行過濾。訂閱者將收到其訂閱的主題上的所有消息,并且所有訂閱同一主題的訂閱者將接收到同樣的消息。發(fā)布者負責定義訂閱者所訂閱的消息類別。消息代理通常執(zhí)行存儲轉(zhuǎn)發(fā)的功能將消息從發(fā)布者發(fā)送到訂閱者。

與點對點模型不同,使用發(fā)布/訂閱模型發(fā)布到一個主題的消息,能夠由多個訂閱者所接收。有時候,也稱這項技術(shù)為廣播(broad-casting)消息。每個訂閱者都會接收到每條消息的一個副本。總地來說,發(fā)布/訂閱消息傳送模型基本上是一個基于推送(push)的模型,其中消息自動地向消費者廣播,它們無須請求或輪詢主題來獲得新消息。在發(fā)布/訂閱消息傳送模型內(nèi)部,有多種不同類型的訂閱者。非持久訂閱者是臨時訂閱類型,它們只是在主動偵聽主題時才接收消息。而另一方面,持久訂閱者將接收到發(fā)布的每條消息的一個副本,即便在發(fā)布消息,它們處于\"離線\"狀態(tài)時也是如此。

3.基于Arduino UNO的MQTT實現(xiàn)

3.1 支持TCPIP的Arduino開發(fā)板:Arduino UNO單片機板+TCPIP以太網(wǎng)接口板

Arduino是一個開源電子平臺,板載AVR、ARM等單片機,使用Arduino編程語言編程,類似于C編程語言。可加載庫文件所提供的類和函數(shù)提供對外圍器件和通信接口的支持,庫文件用C++編寫。借助這個平臺,物聯(lián)網(wǎng)技術(shù)開發(fā)者可以快速驗證和在實驗室部署連接傳感器和執(zhí)行器的應(yīng)用。Arduino代碼主要由二部分組成:setup( )和loop( ),前者在程序啟動后運行一次,后者在余下的時間循環(huán)運行,直至被復位。

本文中使用Arduino硬件由二部分組成:Arduino UNO單片機板和W5100 TCPIP以太網(wǎng)接口板(圖3)。Arduino UNO是一塊8位AVR單片機,負責驅(qū)動傳感器、執(zhí)行器,經(jīng)由SPI接口連接到內(nèi)置了TCPIP協(xié)議的W5100以太網(wǎng)接口板,連接互聯(lián)網(wǎng)和交互數(shù)據(jù)。MQTT服務(wù)器提供代理服務(wù),介于發(fā)布與訂閱者之間。

3.2 MQTT代理服務(wù)器(MQTT Broker Server)

如表1所示,MQTT代理是運行MQTT協(xié)議的服務(wù)器,是介于MQTT客戶端(例如:遠程傳感節(jié)點等裝置)和企業(yè)數(shù)據(jù)集層二者間的中介通信。IBM等公司開發(fā)了商用MQTT代理服務(wù),另有一些開源公共平臺供MQTT開發(fā)者研究和測試。Mosquitto是一個開放源代碼的MQTT代理服務(wù)器,支持C,C++,Python語言開發(fā)。

MQTT從低到高確定了三種服務(wù)質(zhì)量等級:QoS 0、QoS 1、QoS 2。等級越高,意味需要更多的系統(tǒng)開銷,通信效率受影響越多。

3.3 MQTT客戶端在Arduino上的實現(xiàn)

Arduino上的客戶端實現(xiàn)一個周期性的數(shù)據(jù)發(fā)布,通過一個庫提供MQTT客戶端的類與函數(shù)。這個庫包含Arduino下相應(yīng)代碼和功能——連接、發(fā)布、訂閱等。在下面這個簡單的示例中,首先依次初始化以太網(wǎng)、TCPIP協(xié)議和MQTT協(xié)議建立連接,然后,周期性地向代理服務(wù)器發(fā)布消息。這個案例支持QoS等級為0,可設(shè)置最大消息長度和心跳間隔時間,默認值分別為128字節(jié)和15秒。Arduino設(shè)備使用MQTT協(xié)議發(fā)布消息到代理的某一個主題。

修改如表2所示案例,讀取一個溫度傳感器DS18B20數(shù)值,并發(fā)布到環(huán)境溫度主題,可以通過一個WMQTT工具軟件充當代理服務(wù)器來實時監(jiān)測傳感器發(fā)布的數(shù)據(jù)。協(xié)議數(shù)據(jù)與關(guān)鍵代碼過程:

(1)創(chuàng)建MQTT客戶端對象,PubSubClient,例如:TempSensor_1;

(2)建立與MQTT代理服務(wù)器的連接,Temp Sensor_1.Connect,連接時需要客戶端ID;

(3)發(fā)布消息,TempSensor_1.Publish,帶上主題、內(nèi)容。

4.測試與分析

使用Wireshark數(shù)據(jù)包偵聽和獲取Arduion傳感節(jié)點發(fā)出的數(shù)據(jù)包,觀察和分析這些數(shù)據(jù)包,詳細了解MQTT消息傳遞協(xié)議實現(xiàn)過程。本例發(fā)布的溫度數(shù)據(jù),可以通過代理服務(wù)器,向多個訂閱者發(fā)放副本,為不同的數(shù)據(jù)集成應(yīng)用提供來自底層的數(shù)據(jù)信息。實驗驗證,這種輕量級的發(fā)布/訂閱機制實現(xiàn),將使物聯(lián)網(wǎng)系統(tǒng)的設(shè)計帶來極大的靈活性和可靠性。結(jié)合云端的數(shù)據(jù)庫和WEB服務(wù),可以建立功能強大的機到機通信和物聯(lián)網(wǎng)應(yīng)用。

參考文獻

[1]Oracle,Sun Java System Message Queue 3.7 UR1技術(shù)概述,2010.

[2]徐冉,薛江波.WebSphere MQ V7發(fā)布/訂閱技術(shù),IBM CHINA,2009.4.7.

[3]Boris Lublinsky,王麗娟(譯者).基于AWS技術(shù)實現(xiàn)發(fā)布/訂閱服務(wù),2013.8.20.

[4]Wiznet,W5100 datasheet,Version 1.2.4,2011.1.

[5]MQTT.org,MQTT specification V3.MQ Telemetry Transport(MQTT)V3.1 Protocol Specification,19 Aug 2010.

作者簡介:

張波(1968—),江蘇無錫人,副教授,現(xiàn)供職于無錫機電高等職業(yè)技術(shù)學校自動化系,研究方向:電子技術(shù)應(yīng)用、工業(yè)自動化。

楊國華(1970—),江蘇武進人,副教授,現(xiàn)供職于無錫商業(yè)職業(yè)技術(shù)學院物聯(lián)網(wǎng)技術(shù)學院,研究方向:通信技術(shù)、物聯(lián)網(wǎng)應(yīng)用。

主站蜘蛛池模板: 欧美一道本| 无码区日韩专区免费系列 | 中文字幕无码电影| 青草娱乐极品免费视频| 国产亚洲精品精品精品| 久久亚洲国产最新网站| 国产99视频精品免费视频7| 亚洲欧洲日韩综合| 亚洲日本韩在线观看| 五月婷婷综合网| 乱人伦99久久| 91视频99| 又大又硬又爽免费视频| 亚洲天堂视频网| 国产黄色片在线看| 国产精品专区第1页| 欧美三级视频网站| 天天摸夜夜操| 国产精品妖精视频| 天堂亚洲网| 中文字幕自拍偷拍| 精品午夜国产福利观看| 成年人视频一区二区| 激情无码字幕综合| 72种姿势欧美久久久大黄蕉| 潮喷在线无码白浆| 国模视频一区二区| 精品福利视频导航| 中文纯内无码H| 久久久久国色AV免费观看性色| 亚洲区第一页| 成人精品午夜福利在线播放| 国产清纯在线一区二区WWW| 亚洲视频免| 韩日无码在线不卡| 亚洲欧美自拍视频| 亚洲天堂777| 亚洲不卡影院| 久久青草视频| 国产三级毛片| 亚洲男人天堂久久| 日韩无码黄色网站| 欧美日本一区二区三区免费| 成人夜夜嗨| 人妻一本久道久久综合久久鬼色| 在线观看网站国产| 国产丝袜啪啪| 中文字幕第4页| 丝袜无码一区二区三区| 成人在线不卡| 黄色一及毛片| 国产成人亚洲日韩欧美电影| 国产高颜值露脸在线观看| 国产精品污污在线观看网站 | 手机看片1024久久精品你懂的| 91破解版在线亚洲| 欧美日韩一区二区在线免费观看| 乱人伦视频中文字幕在线| 亚洲精品国产综合99久久夜夜嗨| 色婷婷丁香| 久久不卡国产精品无码| 精品国产自| 看国产毛片| 国产最新无码专区在线| 伊大人香蕉久久网欧美| 青青国产视频| 狠狠色噜噜狠狠狠狠色综合久 | 色综合狠狠操| 99青青青精品视频在线| 国产亚洲欧美在线视频| 青青草国产精品久久久久| a级毛片在线免费观看| 日本一区高清| 美女无遮挡被啪啪到高潮免费| 午夜在线不卡| 伊人久久久久久久| 成人综合久久综合| 制服丝袜在线视频香蕉| 日日噜噜夜夜狠狠视频| 亚洲自偷自拍另类小说| 国产超碰一区二区三区| 亚洲熟女中文字幕男人总站|