MQTT入門實作(一) - MQTT 介紹

MQTT is a machine-to-machine (M2M) "Internet of Things" connectivity protocol.

Posted by Yu-Hsuan Yen on 2017-07-17

MQTT是為物聯網所設計的 M2M 通訊協定,網路頻寬與硬體需求非常少,是極為輕便的通訊協議。

MQTT 基本介紹

MQTT(Message Queuing Telemetry Transport,訊息佇列遙測傳輸)是為物聯網所設計的M2M通訊協定,其對於網路頻寬與硬體需求非常少,是極為輕便的通訊協議。
MQTT通訊協議已經在2014年經過制定電子商業標準協會(OASIS)程序,成為推薦的物聯網傳輸協議標準。其協議是基於TCP連線,提供不同QoS(Quality of Service,傳輸服務質量)層級的訊息傳遞,此技術可簡化、加速各設備間各種訊息的交流,並可確保於安全、可靠的資訊傳輸情況下完成通訊,所以我覺得MQTT有極大的潛力成為標準的物聯網通訊協議。
MQTT Logo

Source: MQTT Official Website

MQTT 特色

MQTT 是專為物聯網所設計的 M2M 通訊協定,其有以下特色:

  • 基於常用的TCP/IP連線
  • 使用發佈與訂閱的訊息傳送機制
  • 提供三種不同的傳送服務質量QoS(Quality of Service)
  • 訊息標頭檔大小固定為 2 Byte,減少封包傳送時的負擔,同時減少網路所需之頻寬
  • 最後遺囑(Last Will and Testament)機制,當 Publisher 和 Broker 之間發生異常斷線時,通知有訂閱此 Will Topic 的 Subscriber。
  • 主題萬用字元(Topic Wildcard Characters)在訂閱時可以使用特殊字元一次訂閱多個主題。

訊息傳遞原理

MQTT 使用發佈(Publish)/訂閱 (Subscribe)的訊息傳送機制,此機制中包含 4 個主要的元素:

  • 主題(Topic)
  • 發佈者(Publisher)
  • 訊息中繼站 (Broker)
  • 訂閱者(Subscriber)

Publisher 為訊息的來源,傳送夾帶有 Topic 資訊的訊息至 Broker,Subcriber向Broker索取想要接受到之訊息的Topic。整個MQTT通訊流程架構如下圖:
MQTT Pub/Sub
舉個例來說,現在需要製作一溫度感測系統,使用MQTT的流程即從溫度感測器(Publisher)發送溫度訊息至中繼站(Broker)中Temp的佈告欄(Topic)上,接著透過使用筆電或手機(Subscriber)接收溫度訊息,整套溫度感測系統流程圖如下:
MQTT example

傳送服務質量QoS

MQTT 提供三種訊息傳送服務質量QoS(Quality of Service),大家可以想成_訊息的重要程度_,或參考以下表格及圖片:

QoS 0
QoS 1
QoS 2
重要程度
低
中
高
定義
At most onoce (最多一次)
At least once (至少一次)
Exactly once (確保一次)
解釋
訊息單向發送,故不保證一定會送達,可能會丟失 訊息發送後會確保至少得到一次回應 訊息發送後會等待回傳的訊號,得到該訊號後會再回傳告知已收到,利用此double check的方式嚴格確保訊息只送達一次
比喻
平信 掛號信 簽收包裹
用途
感測器 Email、早期的FB messanger 警報、繳費系統以及現在的FB messanger

MQTT QoS

Source: MQTT QoS

MQTT基本的介紹到這邊,接下來的實作內容請於下一章節繼續探索摟~

Reference