女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

精通 MQTT:消息隊列遙測傳輸指南!

上海晶珩電子科技有限公司 ? 2025-06-16 16:56 ? 次閱讀

引言

MQTT(消息隊列遙測傳輸)是一種輕量級消息協議,專為低帶寬、高延遲和不可靠的網絡環境設計。它廣泛應用于物聯網IoT)應用、消息系統以及實時數據通信領域。

本指南深入探討了 MQTT 的工作原理,解釋了其關鍵組件,并演示了如何使用 Python 實現 MQTT 客戶端。

MQTT 代理

MQTT 系統的核心是代理,它負責管理客戶端之間的消息交換。

MQTT 中的客戶端

發布者(Publishers):向特定主題發送消息的設備或應用程序。

訂閱者(Subscribers):監聽這些主題上的消息的設備或應用程序。

代理確保發布者的消息能夠可靠地傳遞給相應的訂閱者。

運行本地 MQTT 代理

在本示例中,代理托管在本地(127.0.0.1),這意味著它與 MQTT 客戶端運行在同一臺機器上。

代理在 Docker 容器中運行,使用 Mosquitto MQTT 代理,并映射到 1883 端口。mosquitto.conf 文件用于配置,允許消息保留和持久化。

MQTT 代理的工作原理

1.代理在 1883 端口監聽傳入消息。

2.客戶端連接到代理。

3.客戶端向特定主題發布消息。

4.代理接收并處理消息。

5.代理將消息轉發給所有訂閱該主題的客戶端。

發布者和訂閱者

發布者

發布者向特定主題發送消息,代理隨后將這些消息分發給感興趣的客戶端。

訂閱者

訂閱者監聽特定主題上的消息,并在收到消息時進行處理。

在 Python 中創建 MQTT 客戶端

Python 中的 Paho MQTT 庫允許創建可以發布和訂閱消息的 MQTT 客戶端。

創建 MQTT 客戶端

importpaho.mqtt.clientasmqttmqtt_client_1 = mqtt.Client( callback_api_version=mqtt.CallbackAPIVersion.VERSION2, client_id="myClient1", clean_session=True, userdata="Client 1", protocol=mqtt.MQTTv311, transport="tcp")

參數解釋

client_id="myClient1" → 為客戶端分配一個唯一標識符。

clean_session=True → 如果為 True,客戶端斷開連接時不會存儲會話數據。

protocol=mqtt.MQTTv311 → 指定 MQTT 版本為 3.1.1。

transport="tcp" → 使用 TCP 連接(也可以使用 WebSocket)。

連接到代理

mqtt_client_1.connect("127.0.0.1", port=1883, keepalive=240)

向主題發布消息

mqtt_client_1.publish("robotcell1/temperature", payload=25)

這將向主題 robotcell1/temperature 發送一條消息(25)。任何訂閱該主題的客戶端將立即收到此消息。

保留消息與非保留消息

保留消息(retain=True)

保留消息會持久化存儲在代理上,確保新訂閱者能立即收到最后一條消息。

mqtt_client_1.publish("robotcell1/temperature", payload=666, retain=True)

非保留消息(retain=False)

非保留消息僅在發送時被活動訂閱者接收。

服務質量(QoS)級別

MQTT 支持三種消息傳遞保證級別:

+-----------+-----------------------------------+| QOS | Guarantee |+-----------+-----------------------------------+| 0 | At most once (fire and forget) || 1 | At least once (may be duplicated) || 2 | Exactly once (highest reliability)|+-----------+-----------------------------------+

訂閱主題

all_messages = []defon_message(client, userdata, msg): print(f"Client:{userdata}| Topic:{msg.topic}| Message:{msg.payload}| Retained:{msg.retain}") all_messages.append(msg)mqtt_client_2 = mqtt.Client()mqtt_client_2.on_message = on_messagemqtt_client_2.connect("127.0.0.1", port=1883, keepalive=240)mqtt_client_2.subscribe("robotcell1/temperature", qos=0)mqtt_client_2.loop_start()

持久會話

默認情況下,當 MQTT 客戶端斷開連接時,它會丟失所有訂閱。如果 clean_session=False,代理會記住:

客戶端的訂閱。

客戶端錯過的任何 QoS 1 或 2 消息。

mqtt_client_1= mqtt.Client(client_id="myClient1", clean_session=False)

結論

MQTT 是一種強大且輕量級的實時消息協議。通過利用發布者、訂閱者、代理、QoS 級別和保留消息,您可以構建一個適用于物聯網及其他領域的健壯消息系統。

原文地址:

https://medium.com/@loughliam/mastering-mqtt-a-guide-to-message-queuing-telemetry-transport-289c74b70777

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物聯網
    +關注

    關注

    2927

    文章

    45991

    瀏覽量

    389065
  • 傳輸
    +關注

    關注

    0

    文章

    155

    瀏覽量

    27744
  • MQTT
    +關注

    關注

    5

    文章

    673

    瀏覽量

    23539
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】MQTT(消息隊列遙測傳輸

    MQTT 全稱為 Message Queuing Telemetry Transport(消息隊列遙測傳輸)是一種基于發布/訂閱范式的二進制“輕量級”消息協議,由IB公司發布。針對于網
    發表于 12-21 20:07

    MQTT協議的相關資料分享

    MQTT協議,以及基于百度云的MQTT協議使用.MQTTMQTT(Message Queuing Telemetry Transport,消息隊列遙測
    發表于 01-20 07:11

    玩轉mqtt協議的方法

    Transport,消息隊列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支持所有平臺,幾乎可以把所有聯網物品和外部連接起來,被用來當做傳感器和制動器(比如通過Twitter讓...
    發表于 02-16 06:48

    怎樣用MQTT連接樹莓派IoT設備

    MQTT(消息隊列遙測傳輸)是一種輕量級消息傳遞協議,非常適合物聯網連接設備的通信。
    的頭像 發表于 08-02 09:15 ?3227次閱讀

    怎樣從中傳輸MQTT消息ESP8266/NodeMCU到運行MQTT代理的樹莓派

    消息隊列遙測傳輸MQTT)是一種消息傳遞協議,可在任何具有Internet連接的設備上運行,使其成為物聯網中最常用的協議之一項目。它被設計用于具有低帶寬限制的系統,因此非常適用于家庭
    的頭像 發表于 07-30 09:31 ?6355次閱讀
    怎樣從中<b class='flag-5'>傳輸</b><b class='flag-5'>MQTT</b>消息ESP8266/NodeMCU到運行<b class='flag-5'>MQTT</b>代理的樹莓派

    什么是MQTT 有哪些特點

    消息隊列遙測傳輸MQTT)是一種ISO標準消息傳遞協議,旨在通過不可靠的網絡連接傳感器。它在TCP/IP互聯網協議之上工作。
    的頭像 發表于 07-26 10:39 ?1.5w次閱讀
    什么是<b class='flag-5'>MQTT</b> 有哪些特點

    淺談MQTT與Modbus協議的區別

    MQTT協議(消息隊列遙測傳輸)是ISO 標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議。 它工作在TCP/IP協議上,是為硬件性能低下的遠程設備以及網絡狀況
    發表于 04-07 11:09 ?1.7w次閱讀
    淺談<b class='flag-5'>MQTT</b>與Modbus協議的區別

    HTTP及MQTT比較分析

    MQTT(消息隊列遙測傳輸)是ISO標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議。該協議建立在TCP/IP協議之上,在1999年由IBM公司發布,目前已經更
    的頭像 發表于 03-25 14:00 ?6315次閱讀

    MQTT OBD車輛遙測開源

    電子發燒友網站提供《MQTT OBD車輛遙測開源.zip》資料免費下載
    發表于 10-24 10:23 ?6次下載
    <b class='flag-5'>MQTT</b> OBD車輛<b class='flag-5'>遙測</b>開源

    【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】MQTT(消息隊列遙測傳輸

    Telemetry Transport(消息隊列遙測 傳輸 )是一種基于發布/訂閱范式的二進制“輕量級”消息協議,由IB公司發布。針對于網絡受限和 嵌入式 設備而設計的一種數據傳輸
    的頭像 發表于 11-03 15:42 ?642次閱讀

    MQTT透傳和MQTT網關的區別

    MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基于發布/訂閱(publish/subscribe)模式的“輕量級”通訊
    的頭像 發表于 11-13 10:47 ?2521次閱讀
    <b class='flag-5'>MQTT</b>透傳和<b class='flag-5'>MQTT</b>網關的區別

    強大的MQTT! 關于它你應該知道什么

    MQTT指消息隊列遙測傳輸,是物聯網的機器對機器(M2M,machine-to-machine)連接協議。MQTT是一個輕量級的發布和訂閱協
    的頭像 發表于 08-03 11:15 ?2409次閱讀
    強大的<b class='flag-5'>MQTT</b>! 關于它你應該知道什么

    MQTT協議的概念和主要特性 MQTT協議于物聯網有何好處

    MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是ISO標準下基于發布/訂閱方式的輕量級消息協議。
    的頭像 發表于 07-28 11:21 ?2885次閱讀
    <b class='flag-5'>MQTT</b>協議的概念和主要特性 <b class='flag-5'>MQTT</b>協議于物聯網有何好處

    MQTT協議詳解 概念、特性、版本及作用

    MQTT(MessageQueuingTelemetryTransport,消息隊列遙測傳輸)是ISO標準下基于發布/訂閱方式的輕量級消息協議。MQ
    的頭像 發表于 08-01 00:09 ?1w次閱讀
    <b class='flag-5'>MQTT</b>協議詳解 概念、特性、版本及作用

    如何在Raspberry Pi樹莓派上安裝Mosquitto部署MQTT服務器呢?

    MQTT代表消息隊列遙測傳輸,是一種網絡消息協議,通常用于物聯網設備之間的消息傳輸
    的頭像 發表于 03-12 11:29 ?1612次閱讀
    如何在Raspberry Pi樹莓派上安裝Mosquitto部署<b class='flag-5'>MQTT</b>服務器呢?