MQTT学习记录
文章目錄
- 一、背景
- 二、MQTT介紹
- 三、MQTT嵌入式開發
- 3.1 paho.mqtt.c配置SSL/TLS加密認證
- 3.2 MQTT調試
- 四、MQTT對接
- 五、MQTT代理服務器
- 5.1 MQTT登錄認證方式
- 5.1 在線MQTT代理服務器
- 5.2 自建MQTT代理服務器 (mosquitto)
- 六、MQTT工具
- 七、其他資料
一、背景
背景一:
本次海外設備開發,物聯網設備和平臺之間切換使用新的物模型協議對接,該格式基于MQTT實現,所以需要連接MQTT和物模型基本概念和原理。(缺一張實際應用框架圖)
背景二:
車路協同設備和平臺之間通過MQTT協議對接,理論和實際代碼結合,輸出一份資料記錄一下,做個基礎普及。
帶著問題來學習
二、MQTT介紹
MQTT(消息隊列遙測傳輸) 是ISO 標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議。它工作在 TCP/IP協議族上,是為硬件性能低下的遠程設備以及網絡狀況糟糕的情況下而設計的發布/訂閱型消息協議,為此,它需要一個消息中間件 。
MQTT是一個基于客戶端-服務器的消息發布/訂閱傳輸協議。
MQTT 入門介紹
https://www.runoob.com/w3cnote/mqtt-intro.html
https://blog.csdn.net/qq_28877125/article/details/78325003
在MQTT通訊過程中,有三種身份,分別是發布者(publisher)、代理(broker)、和訂閱者(subscriber)
MQTT標準協議
MQTT V5.0基于早期的v3.1.1標準,它具有重要的更新,同時最大限度地減少與現有版本的不兼容性。
關鍵節點:
參考資料
ISO:國際標準化組織、非政府組織
IEC:國際電工委員會
IBM:國際商業機器公司或萬國商業機器公司
OASIS:結構化信息標準促進組織
MQTT 3.1.1 協議中文版
MQTT 5.0 協議中文版
軟件、資料
目標:掌握基本概念、原理、場景使用、如何開發。
三、MQTT嵌入式開發
嵌入式設備一般是作為訂閱者或發布者存在的,也就是TCP Client。
MQTT是標準化的協議,網上有很多封裝好的開源庫,只需交叉編譯移植到設備中,應用調用開源庫API即可。
開源庫選擇:paho.mqtt.c
Linux下載安裝(交叉編譯根據README自行配置、這里僅貼一個示例)
git clone https://github.com/eclipse/paho.mqtt.c.git cd paho.mqtt.c make sudo make install3.1 paho.mqtt.c配置SSL/TLS加密認證
嵌入式設備MQTT開發,若使用paho.mqtt.c開源庫,總會涉及到部分平臺要使用TLS證書認證,具體庫代碼如何配置見:使用paho_mqtt_c庫實現mqtt的ssl加密通訊
關注點:
3.2 MQTT調試
實際開發過程中,設備端和平臺端分別是由不同部門、甚至不同公司開發的,所以開發過程中的自測需要自己搭建測試環境或依托公司已有的測試環境,MQTT測試環境主要就是搭建代理服務器。
MQTT測試環境
- MQTT服務器:在線服務器或自己自建服務器。
- MQTT嵌入式:paho.mqtt.c庫下的demo 或者 設備應用程序。 (做開發端)
- MQTT工具:MQTT.fx客戶端。 (做調試驗證)
設備調試內容主要有:
補充資料:
paho.mqtt.c API接口描述
https://blog.csdn.net/guozhongwei1/article/details/85207169
Paho -物聯網 MQTT C Cient的實現和詳解
https://www.cnblogs.com/homejim/p/8196763.html
其他MQTT庫:
https://github.com/eclipse/paho.mqtt.embedded-c
四、MQTT對接
設備和平臺若使用MQTT協議對接,當對方提供協議時、需關注如下信息:
MQTT版本:代理可兼容3.1.1和5.0,但若是數據協議使用MQTT 5.0新特性時或代理僅支持5.0時,設備程序需要改代碼。
五、MQTT代理服務器
5.1 MQTT登錄認證方式
不同登錄認證方式,設計MQTT代理的不同配置,可以在不同端口設置不同登錄認證方式。
問題:
1.同一端口MQTT是否可以同時支持匿名登錄與用戶名和密碼認證?
5.1 在線MQTT代理服務器
可以直接使用網絡上的一些代理服務器+Client工具來進行設備功能調測。
5.2 自建MQTT代理服務器 (mosquitto)
這里只做基本介紹和使用步驟,詳細操作看這里:mosquitto 測試MQTT TLS單向認證和雙向認證
mosquitto 介紹
Eclipse mosquito是一個開源(EPL/EDL許可的)消息代理,它實現了MQTT協議版本5.0、3.1.1和3.1。mosquito是輕量級的,適用于所有設備,從低功耗的單板計算機到完整的服務器。
mosquitto 使用步驟
注意:
1.配置TLS證書時,證書文件可以在借助linux下openssl生成,證書文件可以跨平臺使用。
2.可以通過MQTT.fx來進行驗證服務器配置是否生效。(切換配置時、最好更換端口)
六、MQTT工具
七、其他資料
MQTT協議-MQTT協議簡介及協議原理
https://blog.csdn.net/jiesa/article/details/50635222
阿里云物聯網平臺:Paho-MQTT C接入示例
https://www.alibabacloud.com/help/zh/doc-detail/146611.htm#title-0a4-2nq-kat
Paho 項目介紹
http://wiki.eclipse.org/Paho
MQTT協議的優缺點
https://blog.csdn.net/anxianfeng55555/article/details/80908958
https://www.ebyte.com/new-view-info.aspx?id=1178
總結
- 上一篇: 闲话目前游戏服务器的开发
- 下一篇: 代码编辑器