MQTT教學(四):使用MQTTLens訂閱與發布MQTT訊息

本文將使用Sandro先生開發的MQTTLens(直譯為「透鏡」),連接Mosquitto伺服器,練習MQTT訊息的發布與訂閱流程,本文也將說明在主題名稱中,搭配萬用字元訂閱多筆主題的方式。MQTTLens是Chrome瀏覽器的應用程式,在Chrome的線上應用程式商店搜尋“MQTT”關鍵字就找得到,請將它加入Chrome。

Chrome的線上應用程式商店

1. 在「Chome應用程式起動器」中,按一下MQTTLens開啟它。第一次啟動MQTTLens的畫面如下:

第一次啟動MQTTLens的畫面

2. 按下Connection(連結)旁邊的+鈕,在底下的新增連結畫面中,輸入連結名稱本機網址(127.0.0.1)或者MQTT伺服器所在的網址,其他選項沿用預設值。連結名稱是寫給我們自己看的,跟程式無關,因此可用中文命名。

新增MQTT伺服器連結

3. 按下CREATE CONNECTION(建立連結)之後,將切換到如下的畫面:

建立連結畫面

訂閱與發布MQTT訊息

我們將使用MQTTLens模擬從「庭院」的DHT11感測器發布溫濕度值,假設此感測器的主題叫做:

home/yard/DHT11

而此主題的訊息是如下的JSON格式:

{“temp”:21, “humid”:24}

請依下圖設定MQTTLens的訂閱和發布主題以及發布訊息,「品質」和“Retained(是否保留)”採用預設值(相關說明請參閱下文)。

設定MQTTLens的訂閱和發布主題以及發布訊息

按下SUBSCRIBE(訂閱)PUBLISH(發布)鈕之後,視窗底下的Subscriptions將列出訂閱項目以及接收到的前五筆訊息。請試著修改訊息內容,再按下PUBLISH(發布)鈕,訂閱者將立即收到新的訊息。

接收到3筆MQTT訊息

匹配訂閱主題

訂閱者需要向代理人提出想要訂閱的主題名稱,才能收到相關訊息。訂閱主題可以是完整的名稱,也能搭配底下+和#萬用字元,訂閱單層或者多層相關主題

  • +字元:匹配單一階層的主題名稱
  • #字元:匹配多層主題名稱,這個字元只放在名稱最後。

假設MQTT的階層名稱定義如下:

MQTT的階層名稱

訂閱者可透過下列三個敘述,一次訂閱多個主題:

訂閱多個主題的敘述

井號可單獨使用,例如,“#”代表訂閱所有主題,但請避免這麼做,若MQTT代理人包含許多主題,此舉會增加網路負荷。底下的訂閱主題設置是無效的:

無效的訂閱主題敘述

延伸閱讀

Posts created 467

10 thoughts on “MQTT教學(四):使用MQTTLens訂閱與發布MQTT訊息

  1. 赵老师你好, 请问你这个程序范例用的MQTT协议用的是哪个服务质量等级(QoS)?
    我在网上查了一下,MQTT有三个不同的服务模式:
    QoS 0 最多分发一次
    QoS 1 至少分发一次
    QoS 2 仅分发一次

  2. 老師您好請問目前mqttlens無法正常連線上請問是為甚麼呢? 因為之前設置的部分都是能正常連線並能使用的,但今日上午測試無法連線,還請老師幫我解答,謝謝老師

  3. 請問「本機網址(127.0.0.1)或者MQTT伺服器所在的網址」在哪裡可以查得到?

    1. 如果你指的是同一區域網路的電腦,可在該電腦的命令提示字元(或macOS的終端機)執行ipconfig(或ifconfig)命令。

      thanks,
      jeffrey

  4. 老師您好!! 我想請問我裝的Eclipse Mosquitto是2.0.8的版本,但我依照老師的文章安裝與設定卻無法正常連線,官方的說明是說1.0版到2.0版好像有重大的變更,還請老師幫我解答,謝謝老師。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top