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特徵原理

image

實現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.註冊百度雲賬號,打開物接入界面:

image

2.在管理控制平臺創建:

image

image

3.點擊剛纔創建的實例名稱,並創建設備:

image

image

4.填寫身份、策略、主題等信息

需要注意的是Topic和生成的密鑰一定要記住,如果密鑰丟了的話只能去重置密鑰了。

image

image

基本配置就是這些了。

MQTT連接測試

1.點擊連接測試:

image

2.填寫剛纔生成密鑰,以及用戶名稱,然後點擊Connect

image

3.連接之後開始測試,填寫一下你剛纔設置的主題,比如我設置的主題是qzsservice,步驟如下:

image

image

image

發送後底下就會顯示Messages信息了,說明測試成功!

百度物接入服務器與手機連接測試

上面我們已經講完了百度物接入怎麼創建實例+連接測試了,下面講一下連接測試發送消息怎麼與手機程序相連。也就是服務器發送一條消息,手機程序接收。:

首先需要引入兩個包:

image

然後就是通過一系列的操作:

  • 創建MQTT連接 createconnect

  • 訂閱主題subscribe

代碼我就不展示了,文末會貼出源碼下載的地址

測試步驟:

1.完成第二部分的內容,記下生成的topic,server_utl,用戶名,密鑰

2.在手機程序Constants加入這些數據

3.運行程序,輸入訂閱的主題,如果顯示“訂閱主題成功”說明成功了,此時再MQTT服務器上發送一條消息,觀察log,會顯示收到的消息。

源碼獲取:加我的微信:lengquele5311
我的QQ羣:
歡迎加入程序員招聘(內推)圈,羣聊號碼:810279701

大家可以關注我的微信公衆號:「秦子帥」一個有質量、有態度的公衆號!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章