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ā)布者負責(zé)定義訂閱者所訂閱的消息類別。消息代理通常執(zhí)行存儲轉(zhuǎn)發(fā)的功能將消息從發(fā)布者發(fā)送到訂閱者。

與點對點模型不同,使用發(fā)布/訂閱模型發(fā)布到一個主題的消息,能夠由多個訂閱者所接收。有時候,也稱這項技術(shù)為廣播(broad-casting)消息。每個訂閱者都會接收到每條消息的一個副本??偟貋碚f,發(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編程語言??杉虞d庫文件所提供的類和函數(shù)提供對外圍器件和通信接口的支持,庫文件用C++編寫。借助這個平臺,物聯(lián)網(wǎng)技術(shù)開發(fā)者可以快速驗證和在實驗室部署連接傳感器和執(zhí)行器的應(yīng)用。Arduino代碼主要由二部分組成:setup( )和loop( ),前者在程序啟動后運行一次,后者在余下的時間循環(huán)運行,直至被復(fù)位。

本文中使用Arduino硬件由二部分組成:Arduino UNO單片機板和W5100 TCPIP以太網(wǎng)接口板(圖3)。Arduino UNO是一塊8位AVR單片機,負責(zé)驅(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工具軟件充當(dāng)代理服務(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ù)學(xué)校自動化系,研究方向:電子技術(shù)應(yīng)用、工業(yè)自動化。

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

主站蜘蛛池模板: 少妇精品在线| 亚洲无码一区在线观看| 欧美国产视频| 中文字幕永久在线看| 激情视频综合网| 国产极品美女在线| 亚洲乱伦视频| 国产精品综合久久久| 亚洲无码A视频在线| 国产1区2区在线观看| 亚洲黄色网站视频| 在线无码私拍| 国产黄在线观看| 四虎影视无码永久免费观看| 久久国产高清视频| 国产成人av一区二区三区| 精品无码人妻一区二区| 久久精品中文无码资源站| 91极品美女高潮叫床在线观看| 久久五月天综合| 国产精品久久久久无码网站| 国产成人精品一区二区| 国产亚洲美日韩AV中文字幕无码成人| 91毛片网| 国产精品久久久久久久久kt| av无码久久精品| 天天摸夜夜操| 在线中文字幕日韩| 538精品在线观看| 大乳丰满人妻中文字幕日本| 免费国产不卡午夜福在线观看| 日本伊人色综合网| 五月六月伊人狠狠丁香网| 欧美国产另类| 夜夜操狠狠操| 国产综合精品日本亚洲777| 中文字幕一区二区视频| 国产乱子伦视频在线播放 | 国产亚洲精品91| 亚洲成在线观看 | 无码久看视频| 成年人午夜免费视频| 色婷婷电影网| 国产精品九九视频| 在线播放真实国产乱子伦| 99国产精品一区二区| 五月婷婷综合网| 国产精品性| 午夜a视频| 久久天天躁夜夜躁狠狠| 无码中文字幕精品推荐| 国产理论最新国产精品视频| 色综合狠狠操| 天堂网亚洲综合在线| 色婷婷成人网| 中文字幕无线码一区| 114级毛片免费观看| 亚洲天堂精品在线观看| 日本在线国产| 婷婷99视频精品全部在线观看 | 久久天天躁狠狠躁夜夜躁| 五月婷婷丁香色| 欧美高清日韩| Jizz国产色系免费| 国产高颜值露脸在线观看| 国产视频一区二区在线观看| 免费一级无码在线网站 | 欧美97欧美综合色伦图| 欧美成人亚洲综合精品欧美激情| 欧美精品xx| AV熟女乱| 91精品视频播放| 69av免费视频| 国产区人妖精品人妖精品视频| 97久久免费视频| 97av视频在线观看| 青青青国产视频| 亚洲—日韩aV在线| 麻豆精品在线视频| 国产精品欧美日本韩免费一区二区三区不卡 | 亚洲精品动漫| 综合色在线|