RM新时代网站-首页

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

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

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

MQTT是什么?

汽車電子技術(shù) ? 來(lái)源:程序猿Aki ? 作者: 程序猿Aki ? 2023-01-20 11:46 ? 次閱讀

前言

本文簡(jiǎn)單介紹了MQTT的基礎(chǔ)知識(shí)和使用方法,以藍(lán)牙WIFI雙模芯片W801作為硬件設(shè)備,接入到華為云。


一、MQTT是什么?

MQTT(消息隊(duì)列遙測(cè)傳輸協(xié)議),是一種基于 發(fā)布/訂閱 (publish/subscribe)模式的"輕量級(jí)"通訊協(xié)議, 該協(xié)議構(gòu)建于TCP/IP協(xié)議上 。MQTT最大優(yōu)點(diǎn)在于,可以以極少的代碼和有限的帶寬,為連接遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)。作為一種低開銷、低帶寬占用的即時(shí)通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動(dòng)應(yīng)用等方面有較廣泛的應(yīng)用。

好了,以上都是一些文縐縐的說(shuō)辭,了解一下即可。然后我們要知道,它是如何實(shí)現(xiàn)通信的??

MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、服務(wù)器(Broker)、訂閱者(Subscribe)。

如下圖,每個(gè)設(shè)備之間都已經(jīng)建立了MQTT連接。某手機(jī)和某電腦訂閱了“溫度”主題,充當(dāng)訂閱者,溫度計(jì)充當(dāng)發(fā)布者。當(dāng)溫度計(jì)向“溫度”主題發(fā)布一條消息時(shí),那么訂閱了“溫度”主題的訂閱者都會(huì)收到這條消息。而服務(wù)器只是充當(dāng)轉(zhuǎn)發(fā)的角色 。

微信截圖_20230105161930.png

下面是在MQTT中的一些操作:

  • Connect:與服務(wù)器進(jìn)行MQTT連接;
  • Disconnect:與服務(wù)器斷開MQTT連接;
  • Subscribe:訂閱某個(gè)主題;
  • UnSubscribe:取消訂閱某個(gè)主題;
  • Publish:發(fā)布消息;

以下是通信過(guò)程中使用到的報(bào)文,在下文中會(huì)使用到。

微信截圖_20230105161930.png

二、接入物聯(lián)網(wǎng)平臺(tái)(以華為云為例)

下面是物聯(lián)網(wǎng)應(yīng)用的一個(gè)典型的示意圖。現(xiàn)在舉一個(gè)例子加以說(shuō)明:假設(shè)設(shè)計(jì)一個(gè)溫度監(jiān)測(cè)的應(yīng)用。設(shè)備端(溫度傳感器+可以聯(lián)網(wǎng)的芯片)進(jìn)行數(shù)據(jù)采集,將數(shù)據(jù)通過(guò)MQTT協(xié)議傳輸?shù)轿锫?lián)網(wǎng)平臺(tái)(服務(wù)器、Broker)。與此同時(shí),應(yīng)用端(手機(jī)APP、小程序或電腦網(wǎng)頁(yè)等)從物聯(lián)網(wǎng)平臺(tái)接收數(shù)據(jù)進(jìn)行顯示監(jiān)測(cè)。應(yīng)用端和物聯(lián)網(wǎng)平臺(tái)之間的通信協(xié)議并非只限于MQTT,也可能是HTTP、AMQP等。

微信截圖_20230105161930.png

1.創(chuàng)建產(chǎn)品和新增設(shè)備

首先我們需要在物聯(lián)網(wǎng)平臺(tái)上新建一個(gè)產(chǎn)品并新增一個(gè)測(cè)試設(shè)備,具體設(shè)置如下:

微信截圖_20230105161930.png

微信截圖_20230105161930.png

微信截圖_20230105161930.png

2.建立TCP連接

因?yàn)镸QTT是建立在TCP連接上的。因此,在建立MQTT連接之前需要建立TCP連接。具體一般是使用套接字進(jìn)行建立TCP連接,需要的參數(shù)包括 域名(解析出IP地址),端口(一般是1883) 。

從騰訊云的文檔中找到域名和端口:

  • 域名(中國(guó)大陸):

    productid.iotcloud.tencentdevices.com,其中productid更換為產(chǎn)品ID

  • 端口:1883

調(diào)用函數(shù)建立TCP連接

static int mqtt_init_socket(mqtt_broker_handle_t *broker, const char *hostname, short port);
//broker:MQTT信息的結(jié)構(gòu)體
//hostname:域名
//port:端口

3.建立MQTT連接

設(shè)備端與服務(wù)器建立MQTT連接的步驟如下:1、發(fā)送CONNECT報(bào)文;2、接收CONNACK報(bào)文;3、定時(shí)發(fā)送心跳包。

1、CONNECT報(bào)文

CONNECT報(bào)文的內(nèi)容如下:

  • client id:客戶端id
  • username:用戶名
  • password:密碼
  • clean session:清除會(huì)話
  • keepalive:心跳時(shí)間

其中前三個(gè)參數(shù)可以在華為云提供的工具中獲?。ㄈ缦聢D):華為云MQTT報(bào)文內(nèi)容生成工具。填入上圖生成的設(shè)備ID和密鑰即可生成。

微信截圖_20230105161930.png

參數(shù)clean session與Qos(服務(wù)質(zhì)量)有關(guān),保持默認(rèn)即可;心跳時(shí)間的設(shè)置建議60-300,單位是s。

2、接收CONNACK報(bào)文

發(fā)送CONNECT報(bào)文后會(huì)接收到連接確認(rèn)報(bào)文CONNACK。

3、發(fā)送心跳包

Keepalive指定連接最大空閑時(shí)間T,當(dāng)客戶端檢測(cè)到連接空閑時(shí)間超過(guò)T時(shí),必須向Broker發(fā)送心跳報(bào)文PINGREQ,Broker收到心跳請(qǐng)求后返回心跳響應(yīng)PINGRESP。若Broker超過(guò)1.5T時(shí)間沒收到心跳請(qǐng)求則斷開連接,并且投遞遺囑消息到訂閱方;同樣,若客戶端超過(guò)一定時(shí)間仍沒收到心跳響應(yīng)PINGRESP則斷開連接。 簡(jiǎn)單來(lái)說(shuō),心跳包是讓對(duì)方知道設(shè)備還在線,沒有斷開連接 。

完成上述步驟后,即可激活設(shè)備。

微信截圖_20230105161930.png

微信截圖_20230105161930.png

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

    關(guān)注

    114

    文章

    5809

    瀏覽量

    170188
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5296

    瀏覽量

    203571
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    650

    瀏覽量

    22487
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    都有MQTT了,為什么還用TCP?#物聯(lián)#mqtt #tcp

    MQTT
    電子學(xué)習(xí)
    發(fā)布于 :2023年02月08日 12:00:49

    什么是MQTT?MQTT功能介紹

    RT-ThreadMQTT客戶端功能特點(diǎn)MQTT簡(jiǎn)述MQTT功能介紹MQTT客戶端MQTT協(xié)議中的方法
    發(fā)表于 03-30 07:06

    MQTT是什么?MQTT協(xié)議的特點(diǎn)有哪些

    MQTT是什么?MQTT協(xié)議的特點(diǎn)有哪些?MQTT協(xié)議有幾種消息發(fā)布服務(wù)質(zhì)量啊?
    發(fā)表于 09-29 07:43

    MQTT物聯(lián)網(wǎng)網(wǎng)關(guān)的常見類型

    PPI轉(zhuǎn)MQTT網(wǎng)關(guān), Modbus轉(zhuǎn)MQTT網(wǎng)關(guān), profinet轉(zhuǎn)MQTT網(wǎng)關(guān), 支持S7-1200數(shù)據(jù)采集的MQTT網(wǎng)關(guān), 支持S7-1500數(shù)據(jù)采集的
    發(fā)表于 05-23 10:33 ?31次下載

    MQTT的概述與MQTT的代碼編程理解

    圖1為MQTT通信模型圖,我們針對(duì)此圖進(jìn)行理解MQTT的通信過(guò)程。
    的頭像 發(fā)表于 03-23 15:58 ?3579次閱讀
    <b class='flag-5'>MQTT</b>的概述與<b class='flag-5'>MQTT</b>的代碼編程理解

    Zigbee2mqtt將Zigbee轉(zhuǎn)化成MQTT

    zigbee2mqtt.zip
    發(fā)表于 04-20 10:51 ?4次下載
    Zigbee2<b class='flag-5'>mqtt</b>將Zigbee轉(zhuǎn)化成<b class='flag-5'>MQTT</b>

    smart-mqtt MQTT Broker服務(wù)

    gitee-smart-mqtt.zip
    發(fā)表于 04-20 10:46 ?2次下載
    smart-<b class='flag-5'>mqtt</b> <b class='flag-5'>MQTT</b> Broker服務(wù)

    MQTT.Chat開源的MQTT消息傳遞代理

    gitee-MQTT.Chat.zip
    發(fā)表于 04-20 09:58 ?2次下載
    <b class='flag-5'>MQTT</b>.Chat開源的<b class='flag-5'>MQTT</b>消息傳遞代理

    MQTT 5協(xié)議你知道多少?

    MQTT協(xié)議是當(dāng)今世界上最流行、接受度最高的物聯(lián)網(wǎng)協(xié)議。自推出以來(lái),MQTT協(xié)議在各行業(yè)應(yīng)用廣泛。本文帶大家了解MQTT協(xié)議演進(jìn)歷史以及最新規(guī)范MQTT 5的特點(diǎn)。
    的頭像 發(fā)表于 02-23 13:14 ?803次閱讀

    什么是MQTT網(wǎng)關(guān)?

    Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)
    的頭像 發(fā)表于 10-25 12:28 ?958次閱讀
    什么是<b class='flag-5'>MQTT</b>網(wǎng)關(guān)?

    MQTT發(fā)布特性有哪些

    MQTT 發(fā)布/訂閱特性 從以上實(shí)例我們可以看到,MQTT 通信的核心樞紐是 MQTT 服務(wù)端,它負(fù)責(zé)將 MQTT 客戶端發(fā)送來(lái)的信息傳遞給 MQT
    的頭像 發(fā)表于 07-30 15:16 ?693次閱讀

    如何使用OneNET平臺(tái)的MQTT功能?

    MQTT是一種輕量級(jí)的通信協(xié)議,適用于物聯(lián)網(wǎng)設(shè)備之間的可靠通信。本教程將介紹如何使用OneNET平臺(tái)的MQTT功能,實(shí)現(xiàn)設(shè)備間的數(shù)據(jù)傳輸和控制。我們將使用"串口服務(wù)器NB114"
    的頭像 發(fā)表于 10-20 08:21 ?1190次閱讀
    如何使用OneNET平臺(tái)的<b class='flag-5'>MQTT</b>功能?

    MQTT是什么 MQTT特點(diǎn)

    MQTT 是 Message Queuing Telemetry Transport 的縮寫,是一種輕量級(jí)的、基于發(fā)布/訂閱模式的物聯(lián)網(wǎng)通信協(xié)議。 它具有以下特點(diǎn): ?簡(jiǎn)單易用:MQTT 的協(xié)議規(guī)范
    的頭像 發(fā)表于 11-09 15:20 ?2482次閱讀

    MQTT網(wǎng)關(guān)是什么?MQTT網(wǎng)關(guān)的功能

    MQTT網(wǎng)關(guān)是支持MQTT協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān),是一種用于連接不同設(shè)備和云端平臺(tái)之間的中間件。它充當(dāng)了設(shè)備和云端服務(wù)之間的數(shù)據(jù)傳輸橋梁。MQTT網(wǎng)關(guān)能夠接收來(lái)自各種設(shè)備的數(shù)據(jù),并將其發(fā)送到云端平臺(tái),同時(shí)
    的頭像 發(fā)表于 03-18 17:10 ?799次閱讀

    為什么使用MQTT而不是HTTP?

    MQTT協(xié)議通過(guò)TCP/IP運(yùn)行,基于無(wú)損通信的雙向發(fā)布-訂閱模型,確保MQTT消息高效無(wú)損地傳遞。
    發(fā)表于 04-28 11:07 ?919次閱讀
    為什么使用<b class='flag-5'>MQTT</b>而不是HTTP?
    RM新时代网站-首页