2017-05-12 81 views
0

我目前正在運行多個MQTT IOT設備(mqtt硬件:樹莓派2,mqtt經紀人:Mosquitto,設備主要是ESP8266)。作爲固件,我正在運行esp8266-homie固件的自定義混合。這工作很好幾個月,但現在我面臨一個有關使用$主題的問題。MQTT:無法訂閱自己的主題

一個簡單的例子,我的設備將他們的在線狀態發佈到一個主題:home/device/$ online,並且當設備斷開連接時,will消息將確保這會失效。

當運行這個命令,我可以看到主題(其它之中):

mosquitto_sub -h <brokerIP> -u <username> -P <password> -t home/device/# -v 

輸出:

home/device/$online true 

這樣的話題是存在的,確實包含數據,太棒了!因此,從邏輯上講,在運行此應該返回真值:

mosquitto_sub -h <brokerIP> -u <username> -P <password> -t home/device/$online -v 

輸出: 沒有

但可悲的是,這不是由於2-日內返回任何東西。只有我能想到的改變可能是我的覆盆子pi的更新。

回答

1

$是表示shell的環境變量(很可能是bash)的字符,因此它將嘗試在執行該命令之前使用存儲在環境變量中的值來擴大$online

由於$online是最有可能沒有設置任何東西,這意味着什麼實際執行的是:

mosquitto_sub -h <brokerIP> -u <username> -P <password> -t 'home/device/$online' -v 
+0

引述話題:

mosquitto_sub -h <brokerIP> -u <username> -P <password> -t home/device/ -v 

您可以通過引用主題字符串如下解決這個問題解決了我的問題!謝謝 – MrBramme