0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為何物聯(lián)網(wǎng)傾向于MQTT?

lhl545545 ? 來(lái)源:樂創(chuàng)客 ? 作者:樂創(chuàng)客 ? 2020-09-27 16:01 ? 次閱讀

MQTT(Message Queuing Telemetry Transport),說(shuō)人話的意思就是消息隊(duì)列遙測(cè)傳輸。早些年的PC端盛行的時(shí)候,很多工程師壓根就沒有聽過(guò)個(gè)繞口的名詞,但是隨著物聯(lián)網(wǎng)IoT)技術(shù)的逐步發(fā)展,這個(gè)協(xié)議越來(lái)越頻繁的出現(xiàn)在各大工程師的眼前。這也就造成了很多工程師只知其名不知其意,甚至很多人都還以為這是一種隨著IoT發(fā)展而被開發(fā)出來(lái)的協(xié)議。其實(shí)不然,MQTT協(xié)議最早在二十幾年前就被發(fā)明出來(lái),到了1999年IBM公司的安迪·斯坦福-克拉克及Cirrus Link公司的阿蘭·尼普撰寫了該協(xié)議的第一個(gè)版本。后來(lái)這個(gè)協(xié)議也被國(guó)際標(biāo)準(zhǔn)化了,成為了ISO 標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱方式的消息協(xié)議。IBM公司在2013年就向結(jié)構(gòu)化資訊標(biāo)準(zhǔn)促進(jìn)組織提交了 MQTT 3.1 版規(guī)范,并附有相關(guān)章程,以確保只能對(duì)規(guī)范進(jìn)行少量更改,此后MQTT協(xié)議一直在一些小眾領(lǐng)域中使用。而到了物聯(lián)網(wǎng)技術(shù)基礎(chǔ)設(shè)施架構(gòu)完成之后,這種古老的協(xié)議開始煥發(fā)出它的第一個(gè)春天。

網(wǎng)絡(luò)的傳輸層和應(yīng)用層

眾所周知,物聯(lián)網(wǎng)至今的高速發(fā)展離開不了通訊網(wǎng)絡(luò)的基礎(chǔ)建設(shè),你現(xiàn)在可以在全世界的任何一個(gè)角落控制家里某個(gè)房間燈光的開關(guān),或者做工業(yè)控制的時(shí)候,你也可以遠(yuǎn)程操控某個(gè)機(jī)器人的運(yùn)動(dòng),這種技術(shù)的成熟都是基于網(wǎng)絡(luò)通訊為基礎(chǔ)的。而目前網(wǎng)絡(luò)技術(shù)的主要技術(shù)就是OSI七層模型,當(dāng)然實(shí)際應(yīng)用中其實(shí)使用的是TCP/IP四層網(wǎng)絡(luò)模型。

TCP/IP四層網(wǎng)絡(luò)模型的第三層傳輸層就是大名鼎鼎的TCP/IP協(xié)議了,這一層協(xié)議的主要目的是用來(lái)將網(wǎng)絡(luò)上一臺(tái)計(jì)算機(jī)發(fā)出的通信數(shù)據(jù)傳輸?shù)街付↖P地址的另一臺(tái)機(jī)器上面,比如一個(gè)IP地址為“192.168.137.19”的機(jī)器要發(fā)給IP地址為“192.168.137.10”的機(jī)器16字節(jié)的二進(jìn)制數(shù)據(jù)包,那么使用TCP/IP協(xié)議傳輸即可以。而是用TCP傳輸數(shù)據(jù)時(shí),我們常用的方式就是用socket。

但當(dāng)IP地址為“192.168.137.19”的機(jī)器發(fā)送數(shù)據(jù)給“192.168.137.10”的機(jī)器時(shí),這一包TCP數(shù)據(jù)包里面的數(shù)據(jù)究竟是代表什么意思,接收端的IP地址為“192.168.137.10”的機(jī)器該如何其解析這一個(gè)包的數(shù)據(jù),這個(gè)問題就是交由傳輸層上面一層的協(xié)議來(lái)解決了,這就是應(yīng)用層協(xié)議。當(dāng)然,如果你的協(xié)議不想給普通的網(wǎng)絡(luò)上的計(jì)算機(jī)解析時(shí),你也可以自己去制定一些應(yīng)用層的協(xié)議,這個(gè)無(wú)關(guān)緊要,傳輸層的目的只是把數(shù)據(jù)傳達(dá)到目標(biāo)機(jī)器上面就可以了。

我們?nèi)粘5墓ぷ?,娛樂中常常?huì)碰到各種各樣的應(yīng)用層協(xié)議,比如當(dāng)你打開一個(gè)網(wǎng)頁(yè)時(shí),這個(gè)圖片顯示在那個(gè)位置,這個(gè)按鈕點(diǎn)下去是實(shí)現(xiàn)什么功能,這種都是由HTML超文本傳輸協(xié)議(英文:HyperTextTransferProtocol,縮寫:HTTP)所約定的。這就保證了你網(wǎng)站中某個(gè)網(wǎng)頁(yè)被任何一臺(tái)設(shè)備請(qǐng)求時(shí),這臺(tái)設(shè)備可以正常的顯示出來(lái)。除了HTTP,應(yīng)用層協(xié)議還有很多,如DNS,F(xiàn)TP等,而我們今天的主角MQTT協(xié)議也是其中的一員。

為何物聯(lián)網(wǎng)傾向于MQTT

既然我們既有的應(yīng)用中已經(jīng)有了那么多優(yōu)秀的應(yīng)用層協(xié)議,為何在物聯(lián)網(wǎng)領(lǐng)域中偏偏MQTT大放異彩。其實(shí)選擇MQTT協(xié)議也不是毫無(wú)根據(jù)的,MQTT 是一種輕量級(jí)的、靈活的網(wǎng)絡(luò)協(xié)議,致力于為 IoT 開發(fā)人員實(shí)現(xiàn)適當(dāng)?shù)钠胶猓?/p>

這個(gè)輕量級(jí)協(xié)議可在嚴(yán)重受限的設(shè)備硬件和高延遲/帶寬有限的網(wǎng)絡(luò)上實(shí)現(xiàn)。

它的靈活性使得為 IoT 設(shè)備和服務(wù)的多樣化應(yīng)用場(chǎng)景提供支持成為可能。

大多數(shù)開發(fā)人員已經(jīng)熟悉 HTTP Web 服務(wù)。那么為什么不讓 IoT 設(shè)備連接到 Web 服務(wù)?設(shè)備可采用 HTTP 請(qǐng)求的形式發(fā)送其數(shù)據(jù),并采用 HTTP 響應(yīng)的形式從系統(tǒng)接收更新。這種請(qǐng)求和響應(yīng)模式存在一些嚴(yán)重的局限性:

HTTP 是一種同步協(xié)議??蛻舳诵枰却?wù)器響應(yīng)。Web 瀏覽器具有這樣的要求,但它的代價(jià)是犧牲了可伸縮性。在 IoT 領(lǐng)域,大量設(shè)備以及很可能不可靠或高延遲的網(wǎng)絡(luò)使得同步通信成為問題。異步消息協(xié)議更適合 IoT 應(yīng)用程序。傳感器發(fā)送讀數(shù),讓網(wǎng)絡(luò)確定將其傳送到目標(biāo)設(shè)備和服務(wù)的最佳路線和時(shí)間。

HTTP 是單向的??蛻舳吮仨毎l(fā)起連接。在 IoT 應(yīng)用程序中,設(shè)備或傳感器通常是客戶端,這意味著它們無(wú)法被動(dòng)地接收來(lái)自網(wǎng)絡(luò)的命令。

HTTP 是一種一對(duì)一的協(xié)議??蛻舳税l(fā)出請(qǐng)求,服務(wù)器進(jìn)行響應(yīng)。將消息傳送到網(wǎng)絡(luò)上的所有設(shè)備上,不但很困難,而且成本很高,而這是 IoT 應(yīng)用程序中的一種常見使用情況。

HTTP 是一種有許多標(biāo)頭和規(guī)則的重量級(jí)協(xié)議。它不適合受限的網(wǎng)絡(luò)。

出于上述原因,大部分高性能、可擴(kuò)展的系統(tǒng)都使用異步消息總線來(lái)進(jìn)行內(nèi)部數(shù)據(jù)交換,而不使用 Web 服務(wù)。

訂閱/發(fā)布模型

有意思的是,這種MQTT協(xié)議的服務(wù)器,其實(shí)是比web服務(wù)器設(shè)計(jì)還要簡(jiǎn)單地多,因?yàn)樗非蟮氖且环N高效性的服務(wù)。MQTT主要進(jìn)行消息收發(fā)的機(jī)制有點(diǎn)類似于我們公眾號(hào)和各位讀者之間的關(guān)系。

在現(xiàn)實(shí)的世界中,我和大家一樣都類似于一個(gè)有一個(gè)的MQTT設(shè)備掛接在統(tǒng)一的一個(gè)服務(wù)器上面,大家出于對(duì)我們公眾號(hào)的興趣或者某種感情訂閱了我們,而當(dāng)每天我發(fā)文推送的時(shí)候,大家的手機(jī)里就會(huì)出現(xiàn)我推送的消息了,這個(gè)過(guò)程中,你獲取我信息的方式被稱為“訂閱”,而我向這個(gè)公眾號(hào)發(fā)布消息的行為就是“發(fā)布”。而大家可到我文章的時(shí)候,可以隨意地向我留言,這個(gè)行為就是大家地“發(fā)布”行為,而我無(wú)時(shí)無(wú)刻守在某一篇推送面前看大家的留言,這就是一種“訂閱”行為。在這個(gè)過(guò)程中,外部的所有信息都與我們無(wú)關(guān),我們只是簡(jiǎn)單地以兩個(gè)方向的信息流溝通著。MQTT中的消息傳遞機(jī)制也是基于“發(fā)布(Publish)”-“訂閱(Subscribe)”的模型的。

MQTT具體的操作步驟為:

第一步:使用先獲得一個(gè)MQTT服務(wù)器,然后新建一個(gè)MQTT通訊產(chǎn)品

第二步:接著去連接這個(gè)服務(wù)器,連接服務(wù)器的兩個(gè)重要的參數(shù)就是主機(jī)號(hào)(域名或者IP地址)和端口號(hào)。

第三步:如果使用的是第三方云服務(wù)器平臺(tái),它可能需要你使用產(chǎn)品ID和鑒權(quán)信息去登錄這個(gè)設(shè)備,這兩個(gè)在設(shè)備云的后臺(tái)都能找到。

這三個(gè)步驟做完之后,你就可以對(duì)對(duì)應(yīng)的主題訂閱或者發(fā)布消息了。

我后面會(huì)專門整理一個(gè)文檔來(lái)給大家演示一下如何來(lái)“白嫖”一個(gè)中國(guó)移動(dòng)的設(shè)備云開放接入平臺(tái)。

這三個(gè)步驟既適用于應(yīng)用軟件開發(fā),也適用于單片機(jī)開發(fā)。在單片機(jī)開發(fā)時(shí),如果你用AT指令和外部的WIFI模塊通訊,那么一般模塊都可以自帶AT+MQTT命令,這是最好的辦法,可以極大地減少單片機(jī)的壓力。或者你也可以直接獲取TCP/IP傳輸層的數(shù)據(jù),然后自己去解析這個(gè)MQTT,這就需要用戶對(duì)MQTT協(xié)議要有一個(gè)很深的理解還要自己去解析Json數(shù)據(jù),所以一般在做嵌入式設(shè)備時(shí),一般推薦大家直接用現(xiàn)成帶MQTT協(xié)議的模塊,直接解析AT指令是比較方便的。

案例分析:

遠(yuǎn)程控制燈和獲取當(dāng)前房間溫度。

關(guān)于這個(gè)案例,其實(shí)是MQTT最簡(jiǎn)單的一個(gè)應(yīng)用,首先房間的嵌入式控制板主要通過(guò)WIFI連接到服務(wù)器,它既可以控制燈的開關(guān),也可以采集溫度。遠(yuǎn)在天邊的終端設(shè)備是一臺(tái)手機(jī)。

要保持通信正常,首先它們需要接入同一個(gè)MQTT服務(wù)器。

設(shè)備端的溫度信息,是設(shè)備采集的,因此需要將采集來(lái)的數(shù)據(jù)發(fā)布到“溫度”主題,而手機(jī)是獲取這個(gè)溫度信息的,因此需要來(lái)訂閱這個(gè)“溫度”主題。一旦設(shè)備端發(fā)送溫度信息到“溫度主題”,這個(gè)主題就會(huì)被手機(jī)所接收。

設(shè)備端的燈控,是設(shè)備執(zhí)行的,因此需要訂閱“燈開關(guān)”主題,而手機(jī)是控制燈的開關(guān)的,因此需要來(lái)對(duì)這個(gè)“燈開關(guān)”主題發(fā)布控制信息。一旦手機(jī)發(fā)送開燈信息到“燈開”關(guān)主題,這個(gè)主題就會(huì)被終端所接收,再去執(zhí)行開燈命令。
責(zé)任編輯:pj

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2912

    文章

    44866

    瀏覽量

    375541
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7527

    瀏覽量

    88388
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3363

    瀏覽量

    66364
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MQTT調(diào)試助手中文版(物聯(lián)網(wǎng)開發(fā)必備)

    MQTT調(diào)試助手中文版(物聯(lián)網(wǎng)開發(fā)必備)。?支持模擬設(shè)備鏈接各種MQTT云服務(wù)器、 ?阿里云、騰訊云、華為云、原子云、onenet等等。
    發(fā)表于 10-12 14:23 ?7次下載

    MQTT聯(lián)網(wǎng)云平臺(tái)有什么功能

    隨著物聯(lián)網(wǎng)(IoT)技術(shù)的迅猛發(fā)展,MQTT(Message Queuing Telemetry Transport)物聯(lián)網(wǎng)云平臺(tái)作為一種重要的基礎(chǔ)設(shè)施,正在智能制造、智能家居、車聯(lián)網(wǎng)
    的頭像 發(fā)表于 10-09 14:15 ?311次閱讀

    MQTT智能網(wǎng)關(guān)接入物聯(lián)網(wǎng)平臺(tái):實(shí)現(xiàn)高效連接與數(shù)據(jù)交互

    隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,MQTT(Message Queuing Telemetry Transport)協(xié)議因其輕量級(jí)、高可靠性和易于擴(kuò)展的特點(diǎn),在物聯(lián)網(wǎng)領(lǐng)域得到了廣泛應(yīng)用。MQTT
    的頭像 發(fā)表于 09-27 17:04 ?358次閱讀

    MQTT聯(lián)網(wǎng)平臺(tái)和網(wǎng)關(guān)有什么功能

    在物聯(lián)網(wǎng)(IoT)迅速發(fā)展的今天,MQTT(Message Queuing Telemetry Transport)作為一種輕量級(jí)的通信協(xié)議,以其高效、可靠的特點(diǎn),在物聯(lián)網(wǎng)領(lǐng)域發(fā)揮著越來(lái)越重要的作用
    的頭像 發(fā)表于 08-22 14:19 ?318次閱讀

    MQTT網(wǎng)關(guān):物聯(lián)網(wǎng)中的關(guān)鍵橋梁

    MQTT網(wǎng)關(guān):物聯(lián)網(wǎng)中的關(guān)鍵橋梁 在物聯(lián)網(wǎng)(IoT)的廣闊世界中,MQTT網(wǎng)關(guān)扮演著至關(guān)重要的角色。MQTT,全稱為Message Queu
    的頭像 發(fā)表于 08-22 14:15 ?446次閱讀
    <b class='flag-5'>MQTT</b>網(wǎng)關(guān):物<b class='flag-5'>聯(lián)網(wǎng)</b>中的關(guān)鍵橋梁

    利用鋇錸Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)數(shù)據(jù)高效上傳至華為云平臺(tái)

    西門子PLC通常通過(guò)Modbus協(xié)議進(jìn)行數(shù)據(jù)傳輸,但云平臺(tái)更傾向于使用MQTT等輕量級(jí)、高效的數(shù)據(jù)傳輸協(xié)議。為此,鋇錸技術(shù)推出了 Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)西門子PLC數(shù)據(jù)的高效采集與上傳至華為
    的頭像 發(fā)表于 07-30 13:53 ?386次閱讀
    利用鋇錸Modbus轉(zhuǎn)<b class='flag-5'>MQTT</b>網(wǎng)關(guān)實(shí)現(xiàn)數(shù)據(jù)高效上傳至華為云平臺(tái)

    MQTT聯(lián)網(wǎng)平臺(tái)是什么

    MQTT聯(lián)網(wǎng)平臺(tái)是一種軟件平臺(tái),它基于MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸)協(xié)議,為物聯(lián)網(wǎng)(IoT)設(shè)備提供連接、管理和
    的頭像 發(fā)表于 07-18 14:22 ?655次閱讀

    MQTT聯(lián)網(wǎng)網(wǎng)關(guān)是什么

    MQTT聯(lián)網(wǎng)網(wǎng)關(guān)是一種特殊的網(wǎng)關(guān)設(shè)備或軟件組件,主要在物聯(lián)網(wǎng)(IoT)系統(tǒng)中使用,用于實(shí)現(xiàn)不同協(xié)議之間的通信轉(zhuǎn)換,以便各種設(shè)備和系統(tǒng)能夠相互連接和交換數(shù)據(jù)。在這一場(chǎng)景中,MQTT(M
    的頭像 發(fā)表于 07-18 14:17 ?571次閱讀
    <b class='flag-5'>MQTT</b>物<b class='flag-5'>聯(lián)網(wǎng)</b>網(wǎng)關(guān)是什么

    MQTT聯(lián)網(wǎng)云平臺(tái)是什么

    及可視化等功能,為連接到互聯(lián)網(wǎng)的物理設(shè)備提供支持和服務(wù)。 結(jié)合這兩個(gè)概念,MQTT聯(lián)網(wǎng)云平臺(tái)是指一個(gè)利用MQTT協(xié)
    的頭像 發(fā)表于 06-25 15:32 ?689次閱讀

    為什么使用MQTT而不是HTTP?

    為什么使用MQTT而不是HTTP? 在探討為何在某些場(chǎng)景下選擇MQTT(Message Queuing Telemetry Transport)而非HTTP(Hypertext Transfer
    的頭像 發(fā)表于 06-19 14:26 ?513次閱讀
    為什么使用<b class='flag-5'>MQTT</b>而不是HTTP?

    [天拓四方]4G MQTT網(wǎng)關(guān)在物聯(lián)網(wǎng)應(yīng)用中的優(yōu)勢(shì)探討

    隨著物聯(lián)網(wǎng)(IoT)技術(shù)的飛速發(fā)展,各種設(shè)備和系統(tǒng)之間的互聯(lián)互通變得日益重要。MQTT(Message Queuing Telemetry Transport)作為一種輕量級(jí)的發(fā)布/訂閱消息傳輸協(xié)議
    的頭像 發(fā)表于 05-28 17:22 ?519次閱讀

    MQTT聯(lián)網(wǎng)平臺(tái)是什么?MQTT聯(lián)網(wǎng)平臺(tái)的功能

    ,易于實(shí)現(xiàn),因此廣泛應(yīng)用于受限的環(huán)境,如機(jī)器與機(jī)器的通信(M2M)以及物聯(lián)網(wǎng)環(huán)境(IoT)。 MQTT聯(lián)網(wǎng)平臺(tái)通過(guò)提供一種標(biāo)準(zhǔn)化的協(xié)議和平臺(tái),實(shí)現(xiàn)了消息的可靠傳輸、設(shè)備連接管理、數(shù)據(jù)存儲(chǔ)和分析等功能,方便開發(fā)人員構(gòu)建、連接和管
    的頭像 發(fā)表于 04-01 10:20 ?766次閱讀

    MQTT聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)設(shè)備連接與安全加密

    隨著工業(yè)物聯(lián)網(wǎng)(IIoT)的不斷發(fā)展,越來(lái)越多的應(yīng)用場(chǎng)景采用MQTT作為工業(yè)物聯(lián)網(wǎng)通信的輕量級(jí)消息傳輸協(xié)議。由于其簡(jiǎn)潔、高效和靈活的特性,MQTT 成為物
    的頭像 發(fā)表于 03-19 10:25 ?659次閱讀
    <b class='flag-5'>MQTT</b>物<b class='flag-5'>聯(lián)網(wǎng)</b>平臺(tái)實(shí)現(xiàn)設(shè)備連接與安全加密

    MQTT和Modbus的物聯(lián)網(wǎng)網(wǎng)關(guān)協(xié)議的區(qū)別分析

    MQTT和Modbus的物聯(lián)網(wǎng)網(wǎng)關(guān)協(xié)議區(qū)別分析 MQTT(Message Queuing Telemetry Transport)與Modbus是兩種廣泛應(yīng)用在物聯(lián)網(wǎng)環(huán)境中的通信協(xié)議,
    的頭像 發(fā)表于 03-18 16:50 ?869次閱讀
    <b class='flag-5'>MQTT</b>和Modbus的物<b class='flag-5'>聯(lián)網(wǎng)</b>網(wǎng)關(guān)協(xié)議的區(qū)別分析

    MQTT聯(lián)網(wǎng)平臺(tái)是什么?MQTT聯(lián)網(wǎng)平臺(tái)的功能有哪些

    ,易于實(shí)現(xiàn),因此廣泛應(yīng)用于受限的環(huán)境,如機(jī)器與機(jī)器的通信(M2M)以及物聯(lián)網(wǎng)環(huán)境(IoT)。 MQTT聯(lián)網(wǎng)平臺(tái)通過(guò)提供一種標(biāo)準(zhǔn)化的協(xié)議和平臺(tái),實(shí)現(xiàn)了消息的可靠傳輸、設(shè)備連接管理、數(shù)據(jù)存儲(chǔ)和分析等功能,方便開發(fā)人員構(gòu)建、連接和管
    的頭像 發(fā)表于 01-24 09:23 ?1199次閱讀