亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁(yè) > IT技術(shù) > 其他 > 正文

              MQTT 協(xié)議筆記
              2022-05-31 17:14:42

              教程看的零基礎(chǔ)入門學(xué)用物聯(lián)網(wǎng) – MQTT基礎(chǔ)篇教程制作非常精良,強(qiáng)烈推薦!

              • MQTT是一個(gè)客戶端服務(wù)端架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議。

              • 用MQTT 3.1.1版本 5的版本還沒有流行


              • MQTT 客戶端: 數(shù)據(jù)產(chǎn)生和數(shù)據(jù)接收的角色都稱為客戶端.(傳感器和APP都需要接收和發(fā)送數(shù)據(jù)所以他們都是客戶端.)
              • MQTT服務(wù)端: 接收和分發(fā)數(shù)據(jù)的服務(wù)器.可以解決網(wǎng)絡(luò)不穩(wěn)定,以及多設(shè)備分發(fā)的問題.
              • MQTT 主題: 發(fā)布與訂閱 都需要主題. 服務(wù)器也是根據(jù)主題來管理數(shù)據(jù)的(接收和分發(fā))發(fā)布者發(fā)布數(shù)據(jù)到相應(yīng)的主題,訂閱者得到服務(wù)器推送已經(jīng)訂閱主題的數(shù)據(jù).
              • MQTT通訊的三個(gè)特點(diǎn),彼此可獨(dú)立,空間可分離、時(shí)間可異步。

              MQTT與服務(wù)器的連接

              MQTT連接服務(wù)器一共有兩部

              1. 客戶端向服務(wù)端發(fā)送請(qǐng)求連接.也就是發(fā)送一個(gè)請(qǐng)求數(shù)據(jù)包叫做:CONNECT
              • CONNECT 所包含的內(nèi)容(示例):
                image.png
              • clientId: 客戶端名字,不同的客戶端不能有相同的名字
              • cleanSession:干凈會(huì)話,服務(wù)端不保存數(shù)據(jù),設(shè)置為flase會(huì)要求客戶端對(duì)接收信息進(jìn)行確認(rèn),如果沒有得到確認(rèn)會(huì)認(rèn)為數(shù)據(jù)沒發(fā)送到,會(huì)保留數(shù)據(jù),反復(fù)重新發(fā)送.確保數(shù)據(jù)準(zhǔn)確到達(dá).這個(gè)字段就是告訴服務(wù)端我是不是一個(gè)重要的客戶端用的. 重要的會(huì)話要設(shè)置為flase.光設(shè)置這個(gè)是不夠的還需要QoS>0 以后在講.
              • keepAlive :心跳時(shí)間間隔.給設(shè)備連接狀態(tài)可知用的.每個(gè)客戶端給服務(wù)器發(fā)送心跳包的間隔.如果超過時(shí)間就是掉線了.
              1. 服務(wù)端接收到客戶端請(qǐng)求后向客戶端發(fā)送連接確認(rèn),也是發(fā)送一個(gè)數(shù)據(jù)包叫做:CONNACK
              • CONNACK 所包含的內(nèi)容:
                image.png
              • returnCode: 連接返回碼 成功連接返回0,1-5是連接錯(cuò)誤.具體表達(dá)什么意思網(wǎng)上查.
              • sessionPresent: 當(dāng)前會(huì)話.值為true,表示上個(gè)會(huì)話有內(nèi)容沒有確認(rèn)還存有上次未發(fā)送的信息.和干凈會(huì)話相關(guān).
              1. Publish 界面有QoS 0 1 2可選
              2. Reained 就是 retainFlag后面講解 選中后,后訂閱的會(huì)立即發(fā)送此條信息 只會(huì)保留最后一條.

              MQTT.fx連接MQTT服務(wù)端

              1. MQTT公用服務(wù)端:然也物聯(lián) www.ranye-iot.net ,MQTT服務(wù)器地址:test.ranye-iot.net,TCP端口:1883,TCP/TLS端口:8883
              2. clientId:英文字符,不重復(fù)即可
              3. keepalive
              4. clean session
              5. 訂閱主題 Subscribe:輸入主題 點(diǎn)擊訂閱,多了一條右上角0 表示接收數(shù)據(jù)數(shù)量
              6. 發(fā)布信息 Publish : 右側(cè)輸入主題名稱 ,然后輸入信息內(nèi)容 點(diǎn)Publish

              ESP8266連接MQTT服務(wù)端

              1. PubSubClient庫(kù)最流行 用這個(gè).
                暫時(shí)略過 需要編程時(shí)回來看看思路

              MQTT客戶端發(fā)布/訂閱/取消 主題

              1. PUBLISH 發(fā)布信息
              • 客戶端給服務(wù)器發(fā)送PUBLISH報(bào)文.
              • 內(nèi)容如下
                image.png
                • topicName 主題名字: 發(fā)布的主題.
                • payload 發(fā)布的具體內(nèi)容
                • retainFlag 保留標(biāo)志,當(dāng)客戶端訂閱時(shí)正常不會(huì)給客戶端發(fā)送信息,只有在新的數(shù)據(jù)產(chǎn)生時(shí)才會(huì)發(fā)送.如果時(shí)間很久新來的客戶端獲取不到數(shù)據(jù).如果retainFlag為True,客戶端在訂閱后馬上會(huì)收到為True的這些內(nèi)容.(貌似只保留最后一個(gè)?)
                • packetId 數(shù)據(jù)包id:數(shù)據(jù)包編號(hào).服務(wù)器管理數(shù)據(jù)包用的
                • qos 服務(wù)質(zhì)量:決定數(shù)據(jù)信息重要性.0最低
                • dupFlag 重發(fā)標(biāo)志,如果信息為重新發(fā)的會(huì)為True
              1. SUBSCRIBE 訂閱主題
              • 客戶端給服務(wù)器發(fā)送SUBSCRIBE報(bào)文.
              • 報(bào)文中可以包含一個(gè)或多個(gè)主題名字
              • 也有Qos
              1. SUBACK 訂閱確認(rèn)
                • 服務(wù)端收到訂閱請(qǐng)求后,回復(fù)的訂閱確認(rèn)包
                • 訂閱返回碼 有沒有成功的訂閱主題. 0/1/2都為成功取決于訂閱請(qǐng)求時(shí)候的QoS0/QoS1/QoS2. 128為訂閱失敗
              2. UNSUBSCRIBE 取消訂閱
                • 客戶端向服務(wù)端發(fā)送 取消訂閱包
                • topic 主題可以有一個(gè)或者多個(gè).
                  image.png

              ESP8266 發(fā)布信息

              只記下流程 具體編程語(yǔ)法先略過.

              1. 先連接WiFi
              2. MQTT 服務(wù)器連接成功 返回服務(wù)器地址
              3. 返回CLientID
              4. 向一個(gè)主題發(fā)布內(nèi)容,保持心跳.
              5. 內(nèi)容的信息.

              MQTT主題進(jìn)階

              1. 主題基本形式
              • 就是一個(gè)字符串
              • 主題區(qū)分大小寫
              • 主題可以使用空格 但是盡量不要用 容易出問題
              • 主題盡量使用ASCII字符 不要用中文 容易出錯(cuò)
              1. 主題分級(jí)
              • MQTT主題可以用 / 分級(jí)處理
              1. 主題通配符
              • 單級(jí)別通配符 + :可以替代一個(gè)主題級(jí)別
              • 當(dāng)訂閱主題的時(shí)候 可以收到通配的主題內(nèi)容. 或者跳過一個(gè)級(jí)別的主題.
                image.png
              • 多級(jí)別通配符 用 # 可以代替任意數(shù)量主題級(jí)別
              • 多級(jí)別通配符只能放在主題的最后面.
              1. 主題應(yīng)用注意事項(xiàng)
              • 以$開始的主題是MQTT主題服務(wù)端系統(tǒng)保留的特殊主題,不能隨意訂閱
              • 不要用 / 作為主題開頭 沒有意義.
              • 保持主題簡(jiǎn)潔明了 對(duì)通訊也有好處.
              • 在主題中盡量嵌入客戶端ID 方便調(diào)試 好習(xí)慣.

              ESP8266 訂閱主題

              暫略

              總結(jié)測(cè)試

              本文摘自 :https://www.cnblogs.com/

              開通會(huì)員,享受整站包年服務(wù)立即開通 >