2024年10月4日 星期五

MicroPython 學習筆記 : 串接物聯網雲端平台 ThingSpeak (一)

ThingSpeak 是一個老牌的雲端 IoT 物聯網網站, 可用來儲存與顯示感測器輸出的資料, 此網站在十年前我開始玩 Arduino 時就非常有名, 但它後來被圖控軟體大廠 MathWorks 併購 (其知名產品即 MATLAB), 使用者帳號系統也被整合, 我之前申請的帳號太久沒使用也必須重設才行, 所以今天乾脆用備用手機 iPhone 的 Gmail 信箱來申請一個全新的帳號. 


1. 註冊 ThingSpeak 帳號 : 

ThingSpeak 官網網址如下 :


點 Email 框下方的 Create one! 超連結 : 


填寫 Email Address, 勾選 Location, 填寫姓名後按 Continue :



偵測到所填寫的 Email Address 是個人信箱, 請勾選 Email 欄位下的 Use this email for my Mathworks Account 後按 Continue : 



通知去收信, 按下信中的確認按鈕後再回來此頁按 Continue :




按下確認信中的 Verify email 鈕 : 




選擇美國/歐洲網站伺服器, 預設選美國 :




看到 profile verified 表示信箱認證完成 : 



回到上面註冊頁面按 Continue 後設定密碼 (至少 8 個字元, 須含一個大寫與小寫字母), 勾選 I accept the Online Service Aggrement 後按 Continue :




這樣便完成帳號註冊了, 按 OK 會詢問申請帳號之用途 :




按 OK 會即進入通道設定頁面. 


2. 新增通道 Channel 與欄位 Field : 

在通道設定頁面按 New Channel 鈕新增通道 (Channel), 所謂通道其實就是 ThingSpeak 資料庫中的一張資料表, 裡面有欄位名稱為 field1, field2, field3, ... 等順序編號的固定欄位名稱 (免費帳戶每個通道只有 8 個欄位) : 




填寫通道名稱, 描述, 與欄位 (Field) 名稱後按底下的 Save Channel 鈕 :





這時會進入 Dashboard 頁面, 上面的 Channel ID 要記下來, 這在呼叫 ThingSpeak API 存取通道時會用到. 底下則是此通道各欄位資料的圖形框, 因為現在還沒有傳送資料儲存在 ThingSpeak, 所以目前沒有資料圖形出現 : 




呼叫 ThingSpeak API 需要取得其金鑰, 按上方導覽頁籤 API key 會看到有寫入與讀取兩個 API key (注意, 每個通道的 key 都不同以資識別), 將資料寫入 ThingSpeak 資料庫用的是寫入的 API key, 這要與 Channel ID 一起記下來備用 : 




然後切到 Sharing 頁籤, 因我這個氣象資料是要讓任何人都能看到, 所以在 Channel sharing settings 中要改為勾選中間的 Share channel view with everyone



至此就完成全部設定了, 可以按 New Channel 鈕繼續新增其他通道, 點選 Dashboard 上方 Channels 選單的 My Channels 會顯示全部通道清單 :




按右上角帳戶頭像點選 My Account 會顯示帳戶基本資訊, 可見免費帳戶最多可以建立 4 個通道,  使用期限為一年 (到期可付費繼續使用), 免費總訊息量為 300 萬則, 亦即這些免費額度須在一年內用完, 到期就須付費了 :




按右上角帳戶頭像點選 My Profile 會顯示帳戶詳細資訊, 例如註冊之 Email, 使用者名稱, 時區, 帳戶之 API key, 以及 REST API 呼叫的網址格式等 : 




可以按 Edit 修改時區欄位為台灣時區, 注意, ThingSpeak 伺服器是依據此選項紀錄欄位資料寫入資料表之時戳, 若沒改為自己的時區的話, 則 Dashboard 顯示的統計圖上的數據點時間軸會是預設時區的時間 :




右下角是 REST API 格式的說明 : 




按 Learn More 前往 REST API 教學文件 :


我們主要會用到的是用下列格式的 REST API 網址向 ThingSpeak 提出 GET 請求 : 

https://api.thingspeak.com/update.?api_key=<API_KEY>&field1=<V1>&field2=<V2> .....

此 API 會將欄位資料存入通道的欄位裡, 其中 API_KEY 是該通道的 Write API key, field1, field2, filed3 ... 則是該通道的 1~8 欄位, V1, V2, V3, ... 是要寫入各欄位之值.

下一步即可開始撰寫程式呼叫 ThingSpeak API 了.

沒有留言 :