物聯網協議之 MQTT協議

2021-09-27 21:41:32 字數 2065 閱讀 3912

mqtt協議(message queuing telemetry transport),遙信訊息佇列傳輸,是ibm公司於2023年提出的,現在最新版本是3.1.1。mqtt是乙個基於tcp的發布訂閱協議,設計的初始目的是為了極有限的記憶體裝置和網路頻寬很低的網路不可靠的通訊,非常適合物聯網通訊。

如上圖所示,客戶端a連線到訊息**(message broker),訊息**返回確認訊息。客戶b發布訊息溫度25度,客戶a訂閱『溫度』,訊息**吧訊息推給客戶a,客戶a發布溫度20度,但客戶b沒有訂閱,訊息**不推送。訊息b又發布了溫度38度,客戶a就再次收到訂閱的訊息38度。最後客戶端斷開連線。整個過程非常簡單清晰,容易理解。

mqtt支援三種qos等級:

qos 0

「最多一次」,訊息發布完全依賴底層 tcp/ip網路。分發的訊息可能丟失或重複。例如,這個等級可用於環境感測器資料,單次的資料丟失沒關係,因為不久後還會有第二次傳送。

qos 1

「至少一次」,確保訊息可以到達,但訊息可能會重複。

qos 2

「只有一次」,確保訊息只到達一次。例如,這個等級可用在乙個計費系統中,這裡如果訊息重複或丟失會導致不正確的收費。

connect – 連線服務端:客戶端到服務端的網路連線建立後, 客戶端傳送給服務端的第乙個報文必須是connect報文

connack – 確認連線請求:服務端傳送connack報文響應從客戶端收到的connect報文。服務端傳送給客戶端的第乙個報文必須是connack。如果客戶端在合理的時間內沒有收到服務端的connack報文,客戶端應該關閉網路連線。合理的時間取決於應用的型別和通訊基礎設施。

publish – 發布訊息:publish控制報文是指從客戶端向服務端或者服務端向客戶端傳輸乙個應用訊息。

puback –發布確認:puback報文是對qos 1等級的publish報文的響應。

pubrec – 發布收到( qos 2, 第一步):pubrec報文是對qos等級2的publish報文的響應。 它是qos 2等級協議交換的第二個報文。

pubrel – 發布釋放( qos 2, 第二步):pubrel報文是對pubrec報文的響應。 它是qos 2等級協議交換的第三個報文。

pubcomp – 發布完成( qos 2, 第三步):pubcomp報文是對pubrel報文的響應。 它是qos 2等級協議交換的第四個也是最後乙個報文。

subscribe - 訂閱主題:客戶端向服務端傳送subscribe報文用於建立乙個或多個訂閱。每個訂閱註冊客戶端關心的乙個或多個主題。 為了將應用訊息**給與那些訂閱匹配的主題, 服務端傳送publish報文給客戶端。subscribe報文也( 為每個訂閱) 指定了最大的qos等級, 服務端根據這個傳送應用訊息給客戶端。

suback – 訂閱確認:服務端傳送suback報文給客戶端, 用於確認它已收到並且正在處理subscribe報文。

unsubscribe –取消訂閱:客戶端傳送unsubscribe報文給服務端, 用於取消訂閱主題。

unsuback – 取消訂閱確認:服務端傳送unsuback報文給客戶端用於確認收到unsubscribe報文。

pingreq – 心跳請求:客戶端傳送pingreq報文給服務端的。 用於:1. 在沒有任何其它控制報文從客戶端發給服務的時,告知服務端客戶端還活著。2. 請求服務端傳送 響應確認它還活著。3. 使用網路以確認網路連線沒有斷開。

pingresp – 心跳響應:服務端傳送pingresp報文響應客戶端的pingreq報文。 表示服務端還活著。

disconnect –斷開連線:disconnect報文是客戶端發給服務端的最後乙個控制報文。 表示客戶端正常斷開連線。

物聯網MQTT協議之mosquitto

略 mosquitto pub 訊息發布 mosquitto sub 訊息訂閱 1.將資料重定向到csv或者txt檔案中 mosquitto sub test.csv 2.將文字檔案遍歷逐行存入資料庫 import json import pymysql import os import time ...

物聯網傳輸協議MQTT

mqtt是乙個物聯網傳輸協議,它被設計用於輕量級的發布 訂閱式訊息傳輸,旨在為低頻寬和不穩定的網路環境中的物聯網裝置提供可靠的網路服務。mqtt是專門針對物聯網開發的輕量級傳輸協議。mqtt協議針對低頻寬網路,低計算能力的裝置,做了特殊的優化,使得其能適應各種物聯網應用場景。目前mqtt擁有各種平台...

物聯網傳輸協議MQTT

mqtt是乙個物聯網傳輸協議,它被設計用於輕量級的發布 訂閱式訊息傳輸,旨在為低頻寬和不穩定的網路環境中的物聯網裝置提供可靠的網路服務。mqtt是專門針對物聯網開發的輕量級傳輸協議。mqtt協議針對低頻寬網路,低計算能力的裝置,做了特殊的優化,使得其能適應各種物聯網應用場景。目前mqtt擁有各種平台...