本文將使用MQTTlens,測試把溫濕度資料上傳到雲端IoT平台。雲端IoT平台用於儲存、管理、分享和處理各種物聯網裝置上傳的數據。例如,從各地上傳空氣品質感測器的GPS座標地點與採集到的數據,然後結合線上地圖,描繪即時或者過往的空氣品質變化。
在網路上搜尋iot cloud platform(物聯網雲端平台)關鍵字,可找到許多相關網站,例如,知名的Xively和ThingSpeak、開源IoT平台ThingsBoard,以及各科技巨頭提供的IoT雲端服務:
在ThingSpeak建立一個物聯網通道
ThingSpeak有提供免費、非商業用途的IoT雲端服務,使用此免費方案時,物聯網裝置的訊息發送時間間隔不可小於15秒、每年可發送300萬則訊息(每一天約8200則)。
ThingSpeak平台的資料儲存空間叫做Channel(通道),每次上傳的資料最多能有8個欄位(field)。例如,從控制板送出溫度和濕度資料,就需要「溫度」和「濕度」兩個欄位。
在ThingSpeak註冊一個帳號並登入之後,在Channels分頁按下New Channel(新增通道)鈕:
接著在底下的畫面設定通道的名稱、說明、勾選需要的欄位數量。本單元的例子只需要兩個欄位,欄位1儲存溫度、欄位2儲存濕度,其餘內容不用填,直接捲到網頁底下,按下“Save Channel(儲存通道)”。
ThingSpeak通道的ID和API Key
ThingSpeak的每一個通道都有一個識別編號,稱為Channel ID(通道ID)。對此通道寫入(上傳)資料時,用戶端必須提交Write API Key(寫入資料的API碼),它的作用相當於驗證碼;若API Key錯誤,就無法上傳資料到此通道。
點選新建立通道的API Keys分頁,即可看見寫入資料所需的API Key:
ThingSpeak的兩種資料上傳方式
ThingSpeak提供前端兩種上傳資料的方式:
- REST:透過GET或POST的HTTP協定上傳資料。
- MQTT:使用輕量的通訊協定上傳資料。
使用REST的GET方法上傳資料給ThingSpeak的語法格式:
直接在瀏覽器的URL欄位輸入上面的格式位址,即可把溫度和濕度寫入對應的ThingSpeak通道。
本文的重點是採用MQTT方式上傳資料,為此,我們還需要取得MQTT API Key,也就是讓前端程式登入ThingSpeak MQTT伺服器的驗證碼。步驟如下:
1. 按一下ThingSpeak網站右上方的Account(帳戶)→My Profile(我的資料)功能表:
2. 按一下My Profile頁面底下,MQTT API Key欄位當中的Generate New MQT API Key(產生新的MQTT API碼)按鈕:
此時,網頁將出現底下的訊息,詢問你是否要產生新的Key,請按下「確認」:
請選取並複製此MQTT API Key,稍後將需要它來登入ThingSpeak。
使用MQTTlens前端連結ThingSpeak
使用MQTT前端程式連接ThingSpeak時,除了要輸入主機位址,還需要使用者名稱和密碼。
按下MQTTlens前端程式左上方Connections(連結)的 + 鈕,新增連線:
在新增連線的畫面,填入主機位址和密碼等資料;設定完畢後,按右下角的SAVE CHANGES(儲存變更)鈕。
使用MQTTlens上傳資料到ThingSpeak
ThingSpeak通道的MQTT主題名稱和訊息的格式如下:
ThingSpeak的Publish to a Channel Feed(發布資料給通道)文件提到,發布訊息的後面要加上MQTTPUBLISH參數。不過,我實際測試時,這個參數有沒有加都沒關係。
依照上面的格式,在MQTTlens的Publish(發布)和Message(訊息)欄位,輸入主題與訊息,再按下PUBLISH(發布)鈕。
上面的訊息代表溫度值21、濕度值33;你可以修改訊息裡的溫濕度資料值,再次發布給ThingSpeak,但是每次發布的時間需要間隔15秒以上,否則ThingSpeak不會受理。底下是我任意輸入測試資料後,在ThingSpeak網站顯示的通道資料圖表:
如果我想上傳的是一筆資料,而不是單純的線性數值該如何調整?
比如說我想記錄的是某個人的名字和他進入的時間
像上文一樣把資料分成不同欄位儲存。
thanks,
jeffrey
作者大大您好
小弟最近在用樹梅派做專題,看到您的詳細教學如何把資料上傳至ThingSpeak您寫得非常清楚,目前碰到一個問題,因為我是用數莓派pi 4b開發板搭配視訊攝影機(LOGI c525)使用motion這個功能來做智慧辨識(事件觸發後將畫面拍照上傳至ThinkSpeak),想詢問是否可以將事件觸發後的圖片儲存在ThinkSpeak的資料庫我可以上網查看,但是不知道如果我是以MQTT的通訊方式將資料傳至ThinkSpeak端的話,那在應用層(Application Layer)會是用哪種方式去查詢資料呢?是有專屬的app還是要經由web網頁帳號密碼登入的方式呢?可否請作者大大幫忙解答呢?
據我所知,thingSpeak並不支援上傳圖檔。
thanks,
jeffrey
依照內文教學可以成功上傳到thingspeak
但MQTTlens設定Subscribe都接收不道資料
但在Thiingspeak看到資料有成功上傳
請問一下你有在MQTTlens接收到thingspaek資料嗎?
可以的話可以分享一下設定格式嗎?
謝謝你
抱歉~~~剛剛有看到文章裡面官方文件
已經成功接收
謝謝
alex
可以請教如何接收呢?謝謝
想請問,若是MY profile裡面沒有MQTT API KEY 該如何解決?
沒有API KEY…拍謝,不知。
thanks,
jeffrey