前幾天寫了一下MQTT協議實現推送資料傳輸,所以我會不定期的更新一下關注MQTT的知識。
MQTT:
MQTT(Message Queuing Telemetry Transport,訊息佇列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支援所有平臺,幾乎可以把所有聯網物品和外部連線起來,被用來當做感測器和制動器(比如通過Twitter讓房屋聯網)的通訊協議。
MQTT特點
MQTT協議是為大量計算能力有限,且工作在低頻寬、不可靠的網路的遠端感測器和控制裝置通訊而設計的協議,它具有以下主要的幾項特性:
1.使用釋出/訂閱訊息模式,提供一對多的訊息釋出,解除應用程式耦合;
2.對負載內容遮蔽的訊息傳輸;
3.使用 TCP/IP 提供網路連線;
4.有三種訊息釋出服務質量:
“至多一次”,訊息釋出完全依賴底層 TCP/IP 網路。會發生訊息丟失或重複。這一級別可用於如下情況,環境感測器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次傳送。
“至少一次”,確保訊息到達,但訊息重複可能會發生。
“只有一次”,確保訊息到達一次。這一級別可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。
複製程式碼
5.小型傳輸,開銷很小(固定長度的頭部是 2 位元組),協議交換最小化,以降低網路流量;
6.使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制;
MQTT特徵原理
實現MQTT協議需要:客戶端和伺服器端
MQTT協議有三種身份:釋出者(Pushlish)、代理(Broker)、訂閱者(Subscribe)
MQTT的訊息分為:主題(Topic)和負載(payload)兩部分
Topic,可以理解為訊息的型別,訂閱者Subscribe之後,就會收到該主題的訊息內容(payload)。
payload,可以理解為訊息的內容,是指訂閱者具體的使用內容
##訊息型別:
CONNECT:客戶端連線到MQTT代理
CONNACK:連線確認
PUBLISH:新發布訊息
PUBACK:新發布訊息確認,是QoS 1給PUBLISH訊息的回覆
PUBREC:QoS 2訊息流的第一部分,表示訊息釋出已記錄
PUBREL:QoS 2訊息流的第二部分,表示訊息釋出已釋放
PUBCOMP:QoS 2訊息流的第三部分,表示訊息釋出完成
SUBSCRIBE:客戶端訂閱某個主題
SUBACK:對於SUBSCRIBE訊息的確認
UNSUBSCRIBE:客戶端終止訂閱的訊息
UNSUBACK:對於UNSUBSCRIBE訊息的確認
PINGREQ:心跳
PINGRESP:確認心跳
DISCONNECT:客戶端終止連線前優雅地通知MQTT代理
複製程式碼
MQTT應用
通過MQTT協議,目前已經擴充套件出了數十個MQTT伺服器端程式,可以通過PHP,JAVA,Python,C,C#等系統語言來向MQTT傳送相關訊息。
此外,國內很多企業都廣泛使用MQTT作為Android手機客戶端與伺服器端推送訊息的協議。其中Sohu,Cmstop手機客戶端中均有使用到MQTT作為訊息推送訊息。據Cmstop主要負責訊息推送的高階研發工程師李文凱稱,隨著移動網際網路的發展,MQTT由於開放原始碼,耗電量小等特點,將會在移動訊息推送領域會有更多的貢獻,在物聯網領域,感測器與伺服器的通訊,資訊的收集,MQTT都可以作為考慮的方案之一。在未來MQTT會進入到我們生活的各各方面。
百度雲物接入loT-MQTT測試
一.配置
1.註冊百度雲賬號,開啟物接入介面:
2.在管理控制平臺建立:
3.點選剛才建立的例項名稱,並建立裝置:
4.填寫身份、策略、主題等資訊
需要注意的是Topic和生成的金鑰一定要記住,如果金鑰丟了的話只能去重置金鑰了。
基本配置就是這些了。
二.連線測試
1.點選連線測試:
2.填寫剛才生成金鑰,以及使用者名稱稱,然後點選Connect
3.連線之後開始測試,填寫一下你剛才設定的主題,比如我設定的主題是qzsservice,步驟如下:
傳送後底下就會顯示Messages資訊了,說明測試成功!
歡迎大家關注我的微信公眾號: