2024年10月5日 星期六

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

物聯網雲端平台除了 ThingSpeak 外還有一個非常有名的 Adafruit 公司提供的 Adafruit.IO, 運作方式與 ThingSpeak 類似, 但提供更多小工具 (Widget), 且上傳寫入資料頻率最高每 2 秒一次, 比 ThingSpeak 每 15 秒一次還高. 與 ThingSpeak 不同的是, 其資料欄位稱為 Feed, 需要自行建立 Dashboard 與區塊來展示這些 Feed 的統計圖形. 

Adafruit.IO 提供免費帳戶, 但有如下限制 : 
  • 最多只能建立 10 個 Feeds 與 5 個儀表板 (Dashboards).
  • 每個 Feed 的只保存近 30 天資料, 最多 10000 個資料點. 
  • 每分鐘包含讀寫最高只能發出 30 次請求. 
  • 最多只能訂閱 5 個 MQTT 主題. 
如果想要存取更多資源可以付費購買. 這種模式對小傳輸量用戶較好, 比 ThingSpeak 一年內 300 萬則到期須付費更 Friendly. 

本系列之前的文章參考 :

1. 註冊 Adafrui.IO 帳號 : 

Adafruit.IO 官網如下 :


按右上角的 Getting started for Free :




填寫姓名, Email, 使用者名稱, 密碼後按 Create Account : 




這時會顯示註冊資訊的 Profile 頁面, 按 Save Profile 鈕 : 




再次輸入確認密碼後按 Confirm Password 即完成註冊 :




2. 建立 Feed (欄位) : 

按上方的 IO 頁籤會顯示 Overview 頁面 : 




按上方導覽頁籤的 Feeds 進入 Feeds 管理頁面, 目前尚無 Feed 因此列表是空的, 按 New Feed 新增一個資料欄位 :




在彈出視窗的 Name 框中填寫 Feed 名稱後按 Create 鈕, 這樣會回到 Feeds 管理頁面, Feeds 列表顯示此新增的 Feed : 




接著繼續新增 Humidity 與 Pressure 這兩個 Feeds 後列表會顯示這三個欄位 :



 
注意, 其中 key 是將 Name 變成全小寫自動產生的, 在製作 API 的 URL 時會用到, 用來辨認資料欄位. 


3. 建立 Dashboard (儀錶板) : 

按上方導覽頁籤的 Dashboards 進入儀錶板列表頁面 :




按 New Dashboard 鈕新增儀錶板, 填寫儀錶板名稱後按 Create :




這樣儀錶板列表頁面就會列出該儀表板, 按儀錶板名稱 :




按右上角的設定鈕展開選單 : 




按 Create new Block 建立新區塊 : 




在彈出的區塊候選視窗中點選折線圖 : 




在彈出視窗中勾選一個 Feed 欄位, 一次選一個, 例如 temperature, 然後按 Next step :




在彈出的區塊設定選單中, 輸入 Block 標題, 勾選要顯示欄位數值到小數點第幾位, 其他欄位用預設值即可, 按 Create Block 完成區塊之建立 :  





由於尚未推送資料到此 Feed 欄位, 所以折線圖還是空的 :




重複此步驟建立 Humidity 與 Pressure 的區塊, 所建區塊預設會由上而下垂直排列, 可按右上角的設定鈕展開選單, 選取 Edit layout, 這時每個區塊變成可拖曳, 可用滑鼠將區塊拖曳到適合之位置來調整版面配置, 例如排成兩欄, 然後按右上角的 Save Layout 儲存版面設定 : 




儀錶板預設是暗黑背景, 可以在設定選單中將 Dark Mode 關閉變成白亮模式 : 




這樣就完成全部設定了, Overview 頁面會顯示此帳號的資源使用情形 :



 
可見免費帳戶無法傳送 SMS 簡訊. 


4. 取得 Adafruit.IO Key (AIO Key) : 

在呼叫 Adafruit.IO API 上傳資料前必須先取得 API key, 按右上角的鑰匙圖示 :




其中 Username 是註冊時我們設定的, 與 AIO key 一起記下來, 呼叫 API 時都會用到 : 




AdaFruit REST API 的 Python 教學文件參考 : 


這樣就開始撰寫 MicroPython 程式呼叫 Adafruit.IO 的 API 將資料推送到 Feed 資料欄位裡儲存並顯示在儀表板中. 

沒有留言 :