MQTT教學(八):使用MQTTlens上傳資料到ThingSpeak的MQTT伺服器

本文將使用MQTTlens,測試把溫濕度資料上傳到雲端IoT平台。雲端IoT平台用於儲存、管理、分享和處理各種物聯網裝置上傳的數據。例如,從各地上傳空氣品質感測器的GPS座標地點與採集到的數據,然後結合線上地圖,描繪即時或者過往的空氣品質變化。

在網路上搜尋iot cloud platform(物聯網雲端平台)關鍵字,可找到許多相關網站,例如,知名的XivelyThingSpeak開源IoT平台ThingsBoard,以及各科技巨頭提供的IoT雲端服務:

在ThingSpeak建立一個物聯網通道

ThingSpeak有提供免費、非商業用途的IoT雲端服務,使用此免費方案時,物聯網裝置的訊息發送時間間隔不可小於15秒、每年可發送300萬則訊息(每一天約8200則)。

ThingSpeak平台的資料儲存空間叫做Channel(通道),每次上傳的資料最多能有8個欄位(field)。例如,從控制板送出溫度和濕度資料,就需要「溫度」和「濕度」兩個欄位。

ThingSpeak的通道(Channel)

在ThingSpeak註冊一個帳號並登入之後,在Channels分頁按下New Channel(新增通道)鈕:

New Channel(新增通道)

接著在底下的畫面設定通道的名稱、說明、勾選需要的欄位數量。本單元的例子只需要兩個欄位,欄位1儲存溫度、欄位2儲存濕度,其餘內容不用填,直接捲到網頁底下,按下“Save Channel(儲存通道)”。

New Channel(新增通道)設定

ThingSpeak通道的ID和API Key

ThingSpeak的每一個通道都有一個識別編號,稱為Channel ID(通道ID)。對此通道寫入(上傳)資料時,用戶端必須提交Write API Key(寫入資料的API碼),它的作用相當於驗證碼;若API Key錯誤,就無法上傳資料到此通道。

點選新建立通道的API Keys分頁,即可看見寫入資料所需的API Key:

Channel ID(通道ID)和Write API Key(寫入資料的API碼)

ThingSpeak的兩種資料上傳方式

ThingSpeak提供前端兩種上傳資料的方式:

  • REST:透過GET或POST的HTTP協定上傳資料。
  • MQTT:使用輕量的通訊協定上傳資料。

使用REST的GET方法上傳資料給ThingSpeak的語法格式:

使用REST的GET方法上傳資料給ThingSpeak的語法格式

直接在瀏覽器的URL欄位輸入上面的格式位址,即可把溫度和濕度寫入對應的ThingSpeak通道。

本文的重點是採用MQTT方式上傳資料,為此,我們還需要取得MQTT API Key,也就是讓前端程式登入ThingSpeak MQTT伺服器的驗證碼。步驟如下:

1.  按一下ThingSpeak網站右上方的Account(帳戶)→My Profile(我的資料)功能表:

My Profile(我的資料)功能表:

2. 按一下My Profile頁面底下,MQTT API Key欄位當中的Generate New MQT API Key(產生新的MQTT API碼)按鈕:

Generate New MQT API Key(產生新的MQTT API碼)

此時,網頁將出現底下的訊息,詢問你是否要產生新的Key,請按下「確認」:

確認產生新的API Key

選取並複製此MQTT API Key,稍後將需要它來登入ThingSpeak。

選取並複製MQTT API Key

使用MQTTlens前端連結ThingSpeak

使用MQTT前端程式連接ThingSpeak時,除了要輸入主機位址,還需要使用者名稱密碼

ThingSpeak主機位址、使用者名稱和密碼

按下MQTTlens前端程式左上方Connections(連結)的 + 鈕,新增連線:

新增Connections(連結)

在新增連線的畫面,填入主機位址和密碼等資料;設定完畢後,按右下角的SAVE CHANGES(儲存變更)鈕。

新增連結設定畫面

使用MQTTlens上傳資料到ThingSpeak

ThingSpeak通道的MQTT主題名稱訊息的格式如下:

ThingSpeak通道的MQTT主題名稱和訊息的格式

ThingSpeak的Publish to a Channel Feed(發布資料給通道)文件提到,發布訊息的後面要加上MQTTPUBLISH參數。不過,我實際測試時,這個參數有沒有加都沒關係。

依照上面的格式,在MQTTlens的Publish(發布)Message(訊息)欄位,輸入主題與訊息,再按下PUBLISH(發布)鈕。

從MQTTlens發布主題和訊息

上面的訊息代表溫度值21、濕度值33;你可以修改訊息裡的溫濕度資料值,再次發布給ThingSpeak,但是每次發布的時間需要間隔15秒以上,否則ThingSpeak不會受理。底下是我任意輸入測試資料後,在ThingSpeak網站顯示的通道資料圖表:

在ThingSpeak網站顯示的通道資料圖表

延伸閱讀

Posts created 468

9 thoughts on “MQTT教學(八):使用MQTTlens上傳資料到ThingSpeak的MQTT伺服器

  1. 如果我想上傳的是一筆資料,而不是單純的線性數值該如何調整?
    比如說我想記錄的是某個人的名字和他進入的時間

  2. 作者大大您好

    小弟最近在用樹梅派做專題,看到您的詳細教學如何把資料上傳至ThingSpeak您寫得非常清楚,目前碰到一個問題,因為我是用數莓派pi 4b開發板搭配視訊攝影機(LOGI c525)使用motion這個功能來做智慧辨識(事件觸發後將畫面拍照上傳至ThinkSpeak),想詢問是否可以將事件觸發後的圖片儲存在ThinkSpeak的資料庫我可以上網查看,但是不知道如果我是以MQTT的通訊方式將資料傳至ThinkSpeak端的話,那在應用層(Application Layer)會是用哪種方式去查詢資料呢?是有專屬的app還是要經由web網頁帳號密碼登入的方式呢?可否請作者大大幫忙解答呢?

  3. 依照內文教學可以成功上傳到thingspeak
    但MQTTlens設定Subscribe都接收不道資料
    但在Thiingspeak看到資料有成功上傳
    請問一下你有在MQTTlens接收到thingspaek資料嗎?
    可以的話可以分享一下設定格式嗎?
    謝謝你

發佈留言

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

Related Posts

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

Back To Top