IoT協議介紹
在物聯網協議中有兩大類:
- 感知層的協議:
- 裝置之間的網路及傳輸連接
- WiFi
- RFID
- 藍牙
- ZigBee
- 4G / 5G 網路
- 應用層的協議:
今天要來介紹MQTT協議
MQTT
簡介
- MQTT(Message Queuing Telemetry Transport) 訊息序列遙測傳輸
- 1999年 IBM發明
- 伺服器與用戶端間的發布與訂閱的訊息傳輸協定 (publish / subscribe )
- MQTT 正式變成開放的 OASIS 國際標準
- 適用於 M2M 和 IoT 環境
MQTT 特點
MQTT 好處在於它是一種輕量級協議 ,由於是為了物聯網而設計的協定,因此它所需要的網路頻寬是很低的,而且需要的硬體資源也是低的。很適合用在低功耗和網絡帶寬有限的IoT環境,像是智慧家電或者醫療裝置等等。
MQTT 訊息傳遞原理
- 使用發佈(Publish) / 訂閱(Subscribe)的機制傳訊
- 4個主要的元素:
- 發佈者 (Publisher)
- 訂閱者 (Subscriber)
- 主題 (Topic)
- 轉訊站 (Broker)
- 由發布者 Publish 發佈一個主題,
- 然後就會傳送給 Broker
- 由 Broker 轉發給有 Subscrib 訂閱該主題的人
例如:
蘋果日報、聯合報 (Publish 發佈一個主題) 將報紙交由報社(Broker) 轉發,那報社(Broker)就會去看有誰訂閱(Subscrib 訂閱的人)蘋果日報或者訂閱聯合報,就會將報紙發布給他。
實例:
實際應用上來說,一定會有來自不同IoT設備或Sensors,將收集到的數據發送到MQTT Broker,再由 Broker 針對不同主題去發布給不同訂閱者。
當然啦,Client 同時可以充當數據的訂閱者和發布者,所以 Clien 和 MQTT Bocker 就會同時進行雙向的數據溝通。
MQTT 訊息格式、封包格式
- MQTT的訊息格式有三類:
- Fix Header (固定格式封包)
-
- Message Type為4 bit數字,共16位數
- Variable Header (變動格式封包)
- Payload (訊息內文)
MQTT QoS級別
- MQTT 定義了三個層級的品質設定
- QoS 代表Publisher與Broker、Broker與Subscriber之間傳輸品質
QoS 0 最多傳送一次(at most once)
- Publisher 傳訊給 Broker 後直接轉傳給 Subscriber,不會回傳確認封包
- QoS 0就像寄平信,不保證訊息會送達
QoS 1 至少傳送一次(at least once)
- Publisher 傳訊給 Broker 後,Broker會回應 PUBACK 訊息給Publisher,確認收到訊息
- Publisher沒有收到PUBACK回應,就會再次發送Publish
- 缺點:
- Publisher沒有收到PUBACK回應,就會認定訊息沒送到,重傳訊息。
- 讓訂閱者重複收到相同訊息。
- 保證訊息會送達,但可能會重複
QoS 2 確實傳送一次(exactly once)
- Publisher 傳訊給 Broker 後,Broker會回應PUBREC訊息給Publisher,確認收到要發布的訊息
- Publisher收到PUBREC回應時,傳送PUBREL(釋放發布訊息)
- Broker收到PUBREL,將訊息發布給Subscriber,並向Publisher回報PUBCOMP
QoS 總結
- QoS 0
- 優點 - 佔用頻寬與傳送時間較少
- 缺點 - 資料可能會遺失
- QoS 1
- 優點 - 佔用頻寬與傳送時間較少較 Qos 2 少
- 缺點 - Subscriber可能會收到重複的訊息
- QoS 2
- 優點 - 不會重覆傳送相同訊息
- 缺點 - 佔用頻寬與傳送時間較多
參考資料與圖片來源
https://swf.com.tw/?p=1002
http://designer.mech.yzu.edu.tw/articlesystem/article/compressedfile/(2016-07-15)%20%E7%AC%AC%E4%B8%89%E7%AB%A0%20MQTT%E9%80%9A%E8%A8%8A%E5%8D%94%E8%AD%B0.aspx?ArchID=2621