請(qǐng)下載今天的附件,因?yàn)橛斜砀?,所以比論壇上的?nèi)容更詳細(xì)。
1、MQTT協(xié)議是IOT(Internet of Things)領(lǐng)域的一個(gè)主流協(xié)議
在物聯(lián)網(wǎng)的時(shí)代,每一個(gè)傳感器每一個(gè)設(shè)備都想接入互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)交換。MQTT協(xié)議非常適合這樣的場(chǎng)合。目前國(guó)內(nèi)的主流IOT服務(wù)器供應(yīng)商均提供對(duì)MQTT協(xié)議的解析比如百度云計(jì)算,阿里云計(jì)算等。MQTT協(xié)議的實(shí)現(xiàn)也非常簡(jiǎn)單,對(duì)帶寬的要求不高,對(duì)網(wǎng)絡(luò)鏈接的可靠性要求也不高,而且協(xié)議本身制定了一定的機(jī)制來(lái)處理突發(fā)事件。
MQTT協(xié)議不僅可以在物聯(lián)網(wǎng)領(lǐng)域發(fā)揮重要作用,同時(shí)也可以用于多臺(tái)機(jī)器之間的信息交換比如一個(gè)車間里面所有的傳感器之間數(shù)據(jù)的交換。
MQTT協(xié)議也不僅僅局限于運(yùn)行在互聯(lián)網(wǎng)通信上。它是一個(gè)通信規(guī)則,對(duì)通信方式的實(shí)現(xiàn)不關(guān)心。通常我們提到物聯(lián)網(wǎng)指的是通過(guò) TCP/IP 的方式實(shí)現(xiàn)了通信,也就是利用互聯(lián)網(wǎng)實(shí)現(xiàn),因?yàn)榛ヂ?lián)網(wǎng)可以提供一個(gè)非??煽康碾p向通信。
本學(xué)習(xí)手冊(cè)根據(jù) MQTT V3.1.1 版本編寫(xiě)
下面章節(jié)大部分內(nèi)容均參考此官方手冊(cè)。
2、MQTT 通信協(xié)議需要有三個(gè)角色參與
MQTT協(xié)議提到的一個(gè)名詞 “主題”,類似于文件夾的名字一樣。比如小王是電腦的主人,他的電腦上面有a,b兩個(gè)文件夾,小劉每次存儲(chǔ)的文件喜歡放到a文件夾,小宋每次存儲(chǔ)的文件喜歡放到b文件夾。那么當(dāng)小林想看小劉的文件時(shí),只需要看a文件夾就可以了。上述的“a”文件夾的名稱,在MQTT協(xié)議里面稱作 主題 。
左圖詮釋了MQTT協(xié)議里的三個(gè)角色:發(fā)布者客戶端(負(fù)責(zé)發(fā)送消息),代理服務(wù)器(負(fù)責(zé)接收和分發(fā)消息),訂閱者客戶端(負(fù)責(zé)接收消息)。
在MQTT協(xié)議里,“主題”就是一個(gè)文件夾,發(fā)布的消息可以送到一個(gè)“主題”里面,訂閱者也可以從“主題”里面讀取到消息。
代理服務(wù)器在國(guó)內(nèi)有百度的 IoT Hub ,也有阿里云的IoT Hub,還有很多其他品牌的服務(wù)器。
發(fā)布者客戶端和訂閱者客戶端既可以是同一臺(tái)設(shè)備,也可以是不同的設(shè)備,只要這臺(tái)設(shè)備可以通過(guò)服務(wù)器的認(rèn)證,并且遵循MQTT協(xié)議,就可以發(fā)布或者訂閱消息。本學(xué)習(xí)手冊(cè)的重要內(nèi)容就是兩個(gè)客戶端如何與服務(wù)器“交流”。
2、MQTT 通信協(xié)議和大數(shù)據(jù)
(1) 小劉采集的信號(hào)是溫度信息,他每間隔1分鐘就上傳一次溫度信息到服務(wù)器,同時(shí)他發(fā)送的主題是 a 。
(2) 服務(wù)器接收到小劉的溫度信息后,會(huì)查找當(dāng)前都有哪些訂閱者想看主題是 a 的信息。
(3) 小林訂閱了主題是 a 的內(nèi)容,只要小劉發(fā)送一次信息,小林就可以立馬接收到對(duì)應(yīng)的信息。
(4) 小劉和小林都需要事先通過(guò)賬號(hào)密碼的方式連接到服務(wù)器。小劉就像在野外工作的工作人員辛苦采集信號(hào),而小林就像在辦公室的老板千里之外洞察前線的一手信息。
(5) 如果有1000個(gè)小林這樣的角色不停地給服務(wù)器發(fā)送溫度數(shù)據(jù)。我們都知道服務(wù)器有數(shù)據(jù)保存和數(shù)據(jù)處理的能力,這時(shí)候就可以結(jié)合機(jī)器學(xué)習(xí)的相關(guān)知識(shí)去處理和分析這些數(shù)據(jù),從而為人類的決策提供參考。
3、在MQTT 通信協(xié)議里,字符串需要遵守 UTF-8 編碼規(guī)范
在MQTT通信協(xié)議里,數(shù)據(jù)傳送是以Bit(位)為單位的,和我們常見(jiàn)的TTL串口類似不過(guò)他們本質(zhì)上不是一個(gè)東西。MQTT協(xié)議約定:數(shù)據(jù)傳送時(shí),高字節(jié)在前,同時(shí),每個(gè)字節(jié)里面的最高位先傳輸。
4、MQTT 一幀消息包含的內(nèi)容
MQTT 的一幀典型的消息最多由三部分組成:
固定頭(所有的消息必須包含) + 可變頭(有些沒(méi)有) + 有效內(nèi)容(有些沒(méi)有)
MQTT協(xié)議約定,根據(jù)不同的功能實(shí)現(xiàn),固定頭是必須要的,其他兩部分內(nèi)容可有可無(wú)(比如心跳包的發(fā)送和接收只要固定頭即可,而從機(jī)發(fā)送的鏈接請(qǐng)求則包含了三個(gè)部分)。
5、后面還有內(nèi)容,我做成了PDF了,里面有表格啥的,論壇上編輯不方便,你下載查看吧。里面詳細(xì)講解了組合一幀報(bào)文的過(guò)程。附件中還有一個(gè)是MQTT協(xié)議的中文手冊(cè),更權(quán)威。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44743瀏覽量
374538 -
阿里云
+關(guān)注
關(guān)注
3文章
966瀏覽量
43117 -
IOT
+關(guān)注
關(guān)注
187文章
4215瀏覽量
197050
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論