日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

MQTT学习记录

發布時間:2023/12/31 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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協議由誰制定?在哪一年制定?現在有哪些版本?主推版本是哪個?版本是否兼容?
  • 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 Version 3.1 英文版 HTML
  • MQTT協議中文版 3.1.1
  • MQTT Version 3.1.1 英文版 HTML
  • MQTT Version 5.0 英文版 HTML
  • MQTT協議5.0中文版
  • 版本兼容性和更新說明
  • MQTT 5.0 新特性
  • MQTT V5.0基于早期的v3.1.1標準,它具有重要的更新,同時最大限度地減少與現有版本的不兼容性。

    關鍵節點

  • IBM 1999年撰寫了該協議的第一個版本。
  • IBM 2013年提交MQTT 3.1 版規范。
  • 2019年3月7號發布MQTT 5.0版規范-最新標準。
  • 參考資料

  • MQTT百度百科
  • ISO:國際標準化組織、非政府組織
    IEC:國際電工委員會
    IBM:國際商業機器公司或萬國商業機器公司
    OASIS:結構化信息標準促進組織

  • MQTT中文網
  • MQTT 3.1.1 協議中文版
    MQTT 5.0 協議中文版
    軟件、資料

    目標:掌握基本概念、原理、場景使用、如何開發。

    三、MQTT嵌入式開發

    嵌入式設備一般是作為訂閱者或發布者存在的,也就是TCP Client。

    MQTT是標準化的協議,網上有很多封裝好的開源庫,只需交叉編譯移植到設備中,應用調用開源庫API即可。

  • MQTT標準協議:熟悉大概的原理、流程。
  • MQTT開源庫:參考開源庫sample移植開發。(注意同步和異步之分)
  • 開源庫選擇:paho.mqtt.c

    Linux下載安裝(交叉編譯根據README自行配置、這里僅貼一個示例)

    git clone https://github.com/eclipse/paho.mqtt.c.git cd paho.mqtt.c make sudo make install

    3.1 paho.mqtt.c配置SSL/TLS加密認證

    嵌入式設備MQTT開發,若使用paho.mqtt.c開源庫,總會涉及到部分平臺要使用TLS證書認證,具體庫代碼如何配置見:使用paho_mqtt_c庫實現mqtt的ssl加密通訊

    關注點:

  • 認證方式:非TLS和TLS單項認證、TLS雙向認證。(非TLS使用tcp://,TLS使用ssl://)
  • 證書配置參數
  • 3.2 MQTT調試

    實際開發過程中,設備端和平臺端分別是由不同部門、甚至不同公司開發的,所以開發過程中的自測需要自己搭建測試環境或依托公司已有的測試環境,MQTT測試環境主要就是搭建代理服務器

    MQTT測試環境

    • MQTT服務器:在線服務器或自己自建服務器。
    • MQTT嵌入式:paho.mqtt.c庫下的demo 或者 設備應用程序。 (做開發端)
    • MQTT工具:MQTT.fx客戶端。 (做調試驗證)

    設備調試內容主要有

  • 登錄認證(具體認證方式,根據平臺和設備的協議來:用戶名和密碼、TLS單向證書認證……)
  • 作為訂閱者:訂閱主題、由平臺/其他工具發布該主題消息、驗證設備應用是否可以收到。
  • 作為發布者:通過平臺/其他工具訂閱指定主題、再由設備發布主題消息、驗證平臺/工具是否可以收到。
  • 其他:平臺提供信息后、可先通過MQTT.fx等工具驗證IP、端口、用戶名和密碼、證書是否可以使用(是否可以連接成功)。
  • 補充資料

    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、3.1,部分對接使用5.0,設備默認使用3.1.1版本。
  • 登錄認證:匿名登錄、用戶名秘密認證、基于TLS 協議的雙向證書的認證加密以及用戶名密碼認證、單向證書認證、
  • Topic和content內容、程序當前是否都滿足。
  • QOS:部分代理限制或者不支持QOS=2。
  • 調試提供:公網IP地址、端口(默認1883)、用戶名和密碼、CA證書(單向認證時需要)、CA證書和(雙向認證時需要)
  • MQTT版本:代理可兼容3.1.1和5.0,但若是數據協議使用MQTT 5.0新特性時或代理僅支持5.0時,設備程序需要改代碼。

    五、MQTT代理服務器

    5.1 MQTT登錄認證方式

  • 匿名登錄:代理配置支持匿名登錄,那么Client(訂閱/發布者)可以不填寫用戶名和密碼進行登錄。
  • 用戶名和密碼認證:Client需要填寫在平臺注冊過的用戶名和密碼進行登錄。
  • TLS單向證書認證:Client需填寫用戶名和密碼、以及CA證書。
  • TLS雙向證書的認證加密以及用戶名密碼認證:Client需要填寫用戶名和密碼,以及CA證書文件、Client證書文件、Client秘鑰文件。
  • TLS雙向證書的認證加密以及 客戶端證書中的 CN 值作為用戶名:Client填寫CA證書文件、Client證書文件、Client秘鑰文件。
  • TLS雙向證書的認證加密以及 客戶端證書中的完整主題值作為用戶名:Client填寫CA證書文件、Client證書文件、Client秘鑰文件。
  • 不同登錄認證方式,設計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 使用步驟

  • mosquitto 下載和安裝
  • mosquitto 啟動服務器
  • mosquitto 添加用戶名和密碼
  • 修改mosquitto.conf配置、再重啟服務(配置不同的登錄認證方式)
  • 注意:
    1.配置TLS證書時,證書文件可以在借助linux下openssl生成,證書文件可以跨平臺使用。
    2.可以通過MQTT.fx來進行驗證服務器配置是否生效。(切換配置時、最好更換端口

    六、MQTT工具

  • MQTT服務器:在線代理服務器、平臺、自己搭建服務器、對方給的代理服務器。
  • MQTT客戶端:windows下的MQTT.fx。
  • MQTT設備端:paho.mqtt.c下的sample、設備應用代碼。
  • 七、其他資料

    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

    總結

    以上是生活随笔為你收集整理的MQTT学习记录的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。