文章程式碼顯示

2018年7月16日 星期一

一起學 Python 116 : Rapsberry pi 與 NodeMCU (ESP8266) 溝通 基於 MQTT - 3 更好的 App 選擇

之前我們手機端使用的 MQTT App 為 MQTT Dash ,裡面的顯示介面大致上長這個樣子



推薦大家使用另一款 App 名為 Linear MQTT Dashboard



可惜的是他的無法抓出某一個 topic 的歷史數據,亦無法以圖表的方式顯示出歷史數據

在使用上還遇到另一個關於 retained message 的問題

還沒有空仔細撰寫及研究,如果是用前一篇程式碼的讀者,請在 App 裡面對某個 topic 發佈訊息時暫且不要勾選任何有關 retained message 的東西(例如不要對 leds/esp8266 ),否則 NodeMCU 將不再可以被手動控制

PS : Linear MQTT Dashboard 裡面的 'Switch' 也別使用,因我發現他在設定裡面沒有辦法可以勾選 "是否" 發佈的是 retained message  ,且經過測試發現他發佈的就是 retained message

一個解法是,更改 NodeMCU 的程式碼,將對 leds/esp8266 的訊息也設定為 retained,例如

MqttClient.publish(LTopic,"Led trun ON by NodeMCU", true);

但要很注意的是,當你對 LTopic 發佈一個 retained 的訊息

而在 void loop() 又使用 MqttClient.subscribe(LTopic,1); 對 Ltopic 進行訂閱

會使得程式不斷的進入 void callback(char* topic, byte* payload, unsigned int length) 函式裡面

此問題待解決

另外,我們介紹了兩個 MQTT APP ,我發現同時開啟兩個 MQTT 的 APP 會發現衝突狀況(應該不是 APP 本身問題,而是架構上本身就不應該這樣子做) ,導致 "後開" 的 APP 會進入死當的狀態


PS: 若你不幸的發現你已經喪失使用 NodeMCU 對 LED 的控制,請參考下文的文末,刪除所有 topic 的 message

一起學 Python 115 : Rapsberry pi 與 NodeMCU (ESP8266) 溝通 基於 MQTT - 2 安全性

↓↓↓ 連結到部落格方針與索引 ↓↓↓

Blog 使用方針與索引