[MQTT]Mosquitto的簡介、安裝與本機連接測試

7 篇文章 0 订阅
6 篇文章 0 订阅

MQTT(Message Queuing Telemetry Transport)是基於發布/訂閱模式(Publish/Subscribe)的輕量級網絡通訊協議,專用於在低帶寬、不可靠的網絡環境中傳輸數據,關於工作原理和優點如下:

1.發布/訂閱模式(Publish/Subscribe)

發布者將消息發布特定的主題(topic)到中介伺服器(broker),而訂閱者可藉由訂閱主題而從中介伺服器接收對應的數據,同時發佈者和訂閱者可相互不認識。

2.中介伺服器(Broker)

中介伺服器接收來自發布者的消息並將其轉發給訂閱者。

3.主題(Topic)

主題類似一些RSS軟體的訂閱標籤,發佈者發佈一個主題,只要有訂閱者訂閱該主題,則訂閱者即可收到這個主題的所有數據。

4.質量服務(Quality of Service,QoS)

QoS指標對應網路環境狀態,MQTT 提供不同等級的 QoS,包括 0、1 和 2,用於提供不同程度的消息傳送保證和可靠性,條列如下:

QoS 0: 最多一次交付(At most once)

數據將以最快的速度發送,不保證數據的傳遞,也不保證數據的順序,由於不進行重試,可能會出現數據丟失的情況。此等級適用於對數據傳遞要求不高的應用場景,例如傳感器數據。

QoS 1: 至少一次交付(At least once)

保證消息至少被接收一次,確保消息不會丟失,但可能會收到多次重複的消息。發送端在收到 PUBACK(發佈確認)消息後,會重新發送消息直到接收到 PUBACK。此等級適用於要求消息傳遞的可靠性高,但可以容忍重複消息的應用場景,例如命令和控制應用。

QoS 2: 僅一次交付(Exactly once)

其通過使用需要進行兩次握手確認(PUBREC 和 PUBREL)確認來實現,確保消息僅被接收一次且不會出現重複,但可能會增加延遲和帶寬消耗。此等級適用於對消息傳遞的準確性和可靠性要求最高的場景,例如金融交易和重要報警通知。

安裝:

常見的MQTT broker有Mosquitto、HiveMQ和EMQ X等等。本文採用Mosquitto來安裝和連接測試,安裝過程也相當簡單,不論在虛擬機或樹莓派(Raspberrypi 4B)的Ubuntu 22.04 LTS的環境下,皆可順利安裝。

a.首先更新和安裝本機的軟體安裝庫

sudo apt update

sudo apt upgrade

b.安裝mosquitto中介伺服器(mosquitto)和客戶端(mosquitto-clients) 

sudo apt install mosquitto mosquitto-clients

c.查看mosquitto中介伺服器(mosquitto)狀態 

sudo systemctl status mosquitto

若為active,表示mosquitto broker已順利啟動。若為inactive,則可輸入下列指令重啟broker。

sudo systemctl restart mosquitto

完成安裝並啟動broker後,可先行查看Mosquitto的日誌,日誌一般置放在/var/log/mosquitto/mosquitto.log路徑,並可用tail來查看最新log內容,結果類似圖一。

sudo tail -f /var/log/mosquitto/mosquitto.log

圖一 日誌內容
圖一 日誌內容

另外,為了讓易於解讀log中的時間訊息,可將log中的時間戳(timestamp)轉成日期/時間格式,其需將下列內容新增於/etc/mosquitto/mosquitto.conf,亦可參考影片內容操作。

# For time format
log_timestamp true
log_timestamp_format %Y-%m-%d %H:%M:%S

完成後,記得重新啟動mosquitto broker,即可顯示易於解讀的日期/時間格式

[MQTT I Mosquitto]How to Convert Timestamp to Datetime in Mosquitto log

本機連接測試:

接著為了確保發佈和訂閱是否正常運作,可在本機先行測試,以MQTT的架構而言,本機的角色同時為發佈端(publisher)、中介端(broker)和訂閱端(subscriber),流程如下,同樣可參考影片操作。

a.在本機開啟一個終端機作為發佈端

mosquitto_pub -h localhost -t sensor_1 -m “25.3C”

b.在本機開啟另一個終端機作為訂閱端

mosquitto_sub -h localhost -t sensor_1 

[MQTT I Mosquitto]How to Publish and Subscribe on Localhost

當發佈端發佈數據時,訂閱端即會顯示內容。另外,關於訂閱和發佈端的完整命令行參數,可參考下列內容。

mosquitto_pub:

-h <host>:指定 MQTT broker 的主機名或 IP 地址。
-p <port>:指定 MQTT broker 的端口號。
-t <topic>:指定要發佈的 MQTT 主題。
-m <message>:指定要發佈的消息內容。
-q <qos>:指定消息的 QoS(0、1 或 2)。
-r:指定消息是否要求保留(retain)。
-u <username>:指定用戶名(如果 broker 設置了身份驗證)。
-P <password>:指定密碼(如果 broker 設置了身份驗證)。
-i <clientid>:指定客戶端識別符。
-d:開啟調試模式,輸出更詳細的調試信息。

mosquitto_sub:

-h <host>:指定 MQTT broker 的主機名或 IP 地址。
-p <port>:指定 MQTT broker 的端口號。
-t <topic>:指定要訂閱的 MQTT 主題。
-q <qos>:指定訂閱的 QoS(0、1 或 2)。
-u <username>:指定用戶名(如果 broker 設置了身份驗證)。
-P <password>:指定密碼(如果 broker 設置了身份驗證)。
-i <clientid>:指定客戶端識別符。
-v:開啟冗長模式,顯示訂閱的消息及其相關信息。
-d:開啟調試模式,輸出更詳細的調試信息。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MQTT是一种轻量级的通讯协议,适用于物联网设备之间的通信Mosquitto是一款开源的MQTT代理服务器,它提供了可靠稳定的MQTT消息传递服务。为了满足用户的需求,开发人员推出了一款名为MQTT测试工具的软件,它可以用来测试Mosquitto代理服务器的性能和功能。 MQTT测试工具可以支持多种MQTT协议,包括QoS0、QoS1和QoS2。此外,它还支持通过清除session或发送遗嘱消息来测试Mosquitto的断开连接机制。MQTT测试工具可以达到每秒数千条消息的处理速度,可帮助用户提高Mosquitto代理服务器的性能和功能。 通过使用MQTT测试工具可以实现较低的错误率和较高的消息交付率,从而提高设备之间的通信效率和数据传输的质量。此外,它还支持各种操作系统,如Windows、Linux和MacOS等。 总之,MQTT测试工具是一款非常实用的软件,适用于测试MQTT消息传递的各种参数和功能,帮助提高Mosquitto的性能和功能,让设备之间的通信更加高效。 ### 回答2: MQTTMosquitto)是一种轻量级的通信协议,用于基于订阅/发布模型的物联网设备之间的交互。针对MQTT协议,我们需要使用MQTT测试工具,这样我们才能测试MQTT的各种功能。 Mosquitto是一种流行的MQTT实现。这个工具是一个开源项目,它可以运行在多个平台上,从而使我们能够轻松地测试MQTT应用程序。Mosquitto提供了可用的CLI(命令行界面),为开发者们提供了良好的操作性。它还提供了一些基本测试,包括测试客户端的连接效果和性能。此外,它提供了一些高级测试,如消息订阅的特征、多连接质量、最大qos的处理和消息重传等。 Mosquitto支持基于TLS的安全通讯协议,自动重连功能,多SPS(会话)管理以及客户端订阅策略等等。Mosquitto是一个功能强大的MQTT测试工具,为MQTT开发人员提供了一个好的平台,能够测试他们的MQTT应用程序,并在需要时进行调整。 总之,MQTT测试工具Mosquitto是一款非常好的工具,它能够提高MQTT应用程序的可靠性和性能,同时为MQTT开发人员提供了一个好的平台,使他们能够更有效地测试和调整他们的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值