MQTT教學(九):使用ESP8266上傳資料到ThingSpeak MQTT伺服器

延續上一篇文章的說明,本文將使用ESP8266控制板(如:NodeMCU或Wemos D1 mini),經由Wi-Fi網路和MQTT協定傳送DHT11的溫濕度值到ThingSpeak雲端平台。底下是本文的硬體接線:

ESP8266連接DHT11

使用ESP8266控制板發布MQTT訊息的程式架構,和Arduino乙太網路程式相似,同樣採用PubSubClient程式庫(參閱《MQTT教學(六):使用PubSubClient程式庫開發Arduino MQTT應用》);兩者程式架構不同之處如下圖裡的紅字,登入ThingSpeak網站需要輸入使用者名稱和密碼。

使用ESP8266控制板發布MQTT訊息的程式架構

發布MQTT主題訊息的ESP8266 Arduino程式

程式開頭首先宣告一些變數,DHT11溫濕度感測器沿用書本裡的程式庫:

底下是建立設定Wi-Fi連線的自訂函式:

連結MQTT伺服器的reconnect()自訂函式,要加入使用者名稱密碼

reconnect()自訂函式

完整的程式碼如下,請自行修改必要的參數:

編譯並上傳程式到ESP8266控制板,它將每隔20秒上傳溫濕度資料到你的ThingSpeak通道。

延伸閱讀

4 thoughts on “MQTT教學(九):使用ESP8266上傳資料到ThingSpeak MQTT伺服器

  1. 請問在Node-RED mqtt broker server 可以自定設定 username 、 password 、server port
    來源:https://flows.nodered.org/node/node-red-contrib-mqtt-broker

    在 pubsubclient.h 裡面有 boolean connect(const char* id, const char* user, const char* pass);
    可以由 Arduino 直接傳送 clientID、username、 password 字串嗎?
    資料來源:
    https://pubsubclient.knolleary.net/index.html

    可是只要加上 username 、 password Arduino Connect .. 就斷線

    1. 谢谢,我是用Adobe Flash(现已改名Animate) 软件,搭配鼠标(偶尔用第一代微软Surface Pro平板的Wacom笔)徒手绘制的。

      thanks,
      jeffrey

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *