久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6349|回復(fù): 1
收起左側(cè)

Wifi Esp8266 MQTT協(xié)議

[復(fù)制鏈接]
ID:409908 發(fā)表于 2018-10-15 14:42 | 顯示全部樓層 |閱讀模式
                                                                                             物聯(lián)網(wǎng)核心之MQTT 簡(jiǎn)介
       MQTT,目前物聯(lián)網(wǎng)的最主要的協(xié)議,基本所有收費(fèi)的云平臺(tái)都是基于MQTT協(xié)議,比如機(jī)智云,和所有的開放云平臺(tái)比如中國(guó)移動(dòng)的oneNet、百度的云平臺(tái)也都支持MQTT的接入。雖然MQTT很火,但是目前對(duì)MQTT的很少,尤其是在如何移植到嵌入式上來(lái)。大部分的平臺(tái)商的做法都是跟模塊商合作把MQTT協(xié)議集成到WiFi模塊跟GPRS模塊里面,捆綁一銷售,不讓用戶過(guò)多的了解物聯(lián)網(wǎng)最核心的東西。
    在還沒(méi)有深入去了解MQTT協(xié)議之前,總以為是非常復(fù)雜的東西,畢竟之前一直想深入,但無(wú)奈在浩淼的網(wǎng)絡(luò)里居然找不到太多實(shí)質(zhì)的資料。隨時(shí)自己對(duì)物聯(lián)網(wǎng)的不斷探索,越來(lái)越了解整個(gè)物聯(lián)網(wǎng)的架構(gòu),對(duì)MQTT了解越來(lái)越深入。在這篇文章中將帶大家先了解MQTT的協(xié)議,在后面的文章,再帶大家怎么移植MQTT到STM32上,再到怎么搭建自己的MQTT服務(wù)器。
      MQTT的基礎(chǔ)知識(shí)這些大家通過(guò)百度知道都可以了解到,這里主要深入去剖析MQTT協(xié)議的整個(gè)通信流程。整個(gè)MQTT的知識(shí)大家可以去附件里的《MQTT OneNET實(shí)現(xiàn).docx》,這個(gè)文檔已經(jīng)寫的非常詳細(xì),但是如果只是看文字話,大家很難理解。因此我們借助Windows下的MQTT客戶端MQTT.fx跟網(wǎng)絡(luò)抓包工具Wireshark來(lái)一步步分析MQTT。
名字

流向
描述
CONNECT
1
C->S
客戶端請(qǐng)求與服務(wù)端建立連接
CONNACK
2
S->C
服務(wù)端確認(rèn)連接建立
PUBLISH
3
CóS
發(fā)布消息
PUBACK
4
CóS
收到發(fā)布消息確認(rèn)
PUBREC
5
CóS
發(fā)布消息收到
PUBREL
6
CóS
發(fā)布消息釋放
PUBCOMP
7
CóS
發(fā)布消息完成
SUBSCRIBE
8
C->S
訂閱請(qǐng)求
SUBACK
9
S->C
訂閱確認(rèn)
UNSUBSCRIBE
10
C->S
取消訂閱
UNSUBACK
11
S->C
取消訂閱確認(rèn)
PING
12
C->S
客戶端發(fā)送PING(連接保活)命令
PINGRSP
13
S->C
PING命令回復(fù)
DISCONNECT
14
C->S
斷開連接
    上面是MQTT的主要的通信協(xié)議,MQTT是基于TCP長(zhǎng)連接,首先是先跟MQTT服務(wù)器建立TCP連接,然后發(fā)送登錄請(qǐng)求,要保持長(zhǎng)連接,還要定時(shí)發(fā)心跳包跟服務(wù)保持連接。我們先用MQTT.fx來(lái)登錄開源的MQTT服務(wù)看看。

    安裝好MQTT.fx(注意MQTT.fx是java開發(fā)的,電腦要安裝JDK才能安裝打開),一打開里面就默認(rèn)有一個(gè)開源的MQTT服務(wù)M2M Eclipse。點(diǎn)開旁邊的齒輪(設(shè)置按鈕)可以看服務(wù)器的域名m2m.eclipse.org,端口號(hào)1833(MQTT的默認(rèn)端口號(hào)),下面還有個(gè)Keep Alive Interval就是心跳的時(shí)間。再打開Wireshark,選擇要捕獲的網(wǎng)絡(luò)接口,然后再過(guò)濾器輸入tcp.port==1883后回車,只捕獲1883這個(gè)端口號(hào)的數(shù)據(jù)包。再點(diǎn)下MQTT.fx的Connect連接服務(wù)器,就可以看到Wireshark捕到的數(shù)據(jù)


    可以看到MQTT協(xié)議中本地給服務(wù)器發(fā)送了一個(gè)Connect登錄請(qǐng)求,然后,服務(wù)器回應(yīng)一個(gè)ACK,表示登錄成功。再雙擊Connect Command這條數(shù)據(jù)包,我們可以看到詳細(xì)的數(shù)據(jù)包數(shù)據(jù)

    上面的解析出來(lái)的MQTT協(xié)議包的內(nèi)部,下面是對(duì)應(yīng)的二進(jìn)制數(shù)據(jù),這里我們可以對(duì)照附件上資料去了解協(xié)議的內(nèi)容。看這里,大家想是不是如果自己用TCP,再封裝發(fā)送下面的二進(jìn)制數(shù)據(jù)就可以完成MQTT的登錄了呢?拿出網(wǎng)絡(luò)調(diào)試助手來(lái),ping下m2m.eclipse.org得到IP地址,用端口號(hào)1883連接,然后發(fā)送Wireshark捕到的MQTT登錄協(xié)議的二進(jìn)制數(shù)據(jù),可以看到到服務(wù)器回應(yīng)了 20 02 00 00 表示登錄成功。

    再往下Wireshark捕到的數(shù)據(jù)包,可以看到每隔一定的時(shí)間,本地向服務(wù)器發(fā)送Ping Request心跳包,相應(yīng)的服務(wù)器也會(huì)回應(yīng)Ping Response。

    接下來(lái)看MQTT最核心的傳輸協(xié)議 Subcribe(定閱)和Publish(推送)。簡(jiǎn)單來(lái)說(shuō)就是客戶端口(比如物聯(lián)網(wǎng)硬件)Subcribe一個(gè)topic(主題)后,其它的客戶端(比如手機(jī))向服務(wù)器往這個(gè)topic 推送 Payload(有效數(shù)據(jù)),服務(wù)器就會(huì)把Payload轉(zhuǎn)發(fā)給定閱這個(gè)topic的客戶端(硬件)。這樣就實(shí)現(xiàn)了客戶端(手機(jī))通過(guò)服務(wù)器(MQTT)遠(yuǎn)程發(fā)送數(shù)據(jù)給客戶端(物聯(lián)網(wǎng)硬件)。一樣用MQTT.fx來(lái)實(shí)驗(yàn)。先點(diǎn)Subscribe然后面下面輸入led再點(diǎn)旁邊的Subscribe按鈕來(lái)定閱led這個(gè)topic。然后回到Publish,一樣在輸入框輸入led這個(gè)topic,下面大框就是輸入要推送的數(shù)據(jù),輸入on,再點(diǎn)Publish按鈕,就把數(shù)據(jù)推送出去了。再回到Subcribe界面來(lái)可以看到右邊已經(jīng)收到有推送過(guò)來(lái)的數(shù)據(jù)。如果這是硬件收到這個(gè)指令,就可以去控制點(diǎn)亮LED,我們就實(shí)現(xiàn)遠(yuǎn)程控制LED燈。

   想深入了解MQTT這一個(gè)過(guò)程的話,我們?cè)倩氐絎ireshark,來(lái)看看捕獲到的數(shù)據(jù)

    具體的就不詳細(xì)的分析了,大家看附件的文檔來(lái)對(duì)照就可以很容易了解到。
    最后來(lái)了解下QoS(定閱等級(jí)),分0、1、2三個(gè)等級(jí),簡(jiǎn)單來(lái)說(shuō)是等級(jí)越高越可靠。QoS0,就是推送之后就完事了,至于對(duì)方有沒(méi)有收到,收到是什么,數(shù)據(jù)有沒(méi)有丟失,都不管。QoS1的話就
是你收到推送后,你還得返回一個(gè)puback給對(duì)方,告訴對(duì)方收到了,不然對(duì)方會(huì)以為你沒(méi)收到,隔一段時(shí)間后重新給你推送,直到你給對(duì)方返回一個(gè)Puback為止



回復(fù)

使用道具 舉報(bào)

ID:373684 發(fā)表于 2024-1-9 21:50 | 顯示全部樓層
看了大概明白MQTT的原理了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区精品在线 | 不卡视频一区二区 | 成人国产网站 | 69成人网| 成人久久视频 | 91福利在线视频 | 99精品视频免费观看 | 久久日av| 黄色欧美大片 | 午夜成人免费视频 | 午夜视频免费在线观看 | www.色综合| 91小视频在线观看 | 国产一区二区欧美 | 午夜a级片| 精品欧美日韩 | 午夜在线免费视频 | 伊人精品在线 | 日韩免费观看 | www久久| 丁香五香天堂网 | 欧美激情视频一区二区三区 | 黄色三级免费 | 久久国产欧美 | 91网站免费 | 欧洲精品一区二区 | 久久婷婷网 | 亚洲精品麻豆 | 国产一区高清 | a级片在线免费观看 | 免费中文字幕 | 午夜伦理视频 | 成人网av | 欧美一级视频 | 九九色综合 | 亚洲黄色小视频 | 日本免费黄色网址 | 欧美一区二区在线视频 | 午夜xxx| 日韩成人一区二区 | 日韩一区中文字幕 |