Arduino(ESP32) 傳入Google Sheet by IFTTT

Arduino儲存資料除了用SD卡外,最重要的就是用網路上傳到雲端儲存,如果說能存入google sheet那不用自己架站,也可以很快分析自己的資料。

我的ESP32實做書籍:我出書了 ESP32 物聯網專題
博客來網址:https://www.books.com.tw/products/0010901195


實作說明

Arduino儲存資料除了用SD卡外,最重要的就是用網路上傳到雲端儲存,目前最流行的還是以Thingspeak,優點是方便,缺點是如果要自己分析這些資料時比較麻煩,此外也可以參考之前的文件:第十一篇 ESP32 資料庫存取MySQL連線,不過這樣要自己架伺服器,如果說能存入google sheet那不用自己架站,也可以很快分析自己的資料。

本案例以說明如何使用ESP32將DHT11溫濕度存入IFTTT中以下簡要說明步驟

一、申請IFTTT
二、建立Applet webhook服務
三、測試服務
四、Arduino程式碼

一、申請IFTTT服務

https://ifttt.com/

這是一個網路IoT非常流行的服務,負責幫你導向做一些反應(我也不知道如何解釋),例如溫度超過100度,就做什麼反應,很多人可以用來搭配LINE訊息或者gmail等
IFTTT的意思是If This Then That的縮寫

首先進入網站後,進行註冊,建議直接使用Google帳號。

使用google註冊帳號

註冊過程本處省略。

二、申請Webhook服務

Webhook意思是web掛勾,可以解釋成一種不同網路服務之間的連鎖反應,hook就是虎克船長的手,可以用來勾東西,申請這個的意思是,當我們把資料送到IFTTT時,讓IFTTT做一些判斷後再幫我們把資料轉到其他地方去,本例就是利用hook轉送到google sheet中。

  1. 點選左上角的my applet後,點選右方的new applet
建立new applet
  1. 點選大藍色+this圖塊
+this圖塊位置
  1. 篩選服務類型為webhook後,點選下方的webhooks服務
搜尋webhooks服務
  1. 點選Receive a web request
進入 Receive a web request 設定
  1. 輸入自己的Event name,本案例寫4Fclassroom,代表這是4F教室會發生的事件

另外注意這個欄位很重要輸入完要記得,不能亂輸入,也建議不要用中文,因為會跟下一個步驟相關。

填寫 Event name
  1. 點選+that:完成wook前端後,要來完成後端,也就是資料進來以後,ifttt要做什麼
+that 圖標位置
  1. 輸入google sheet篩選服務,並點選下方的google sheet圖示
搜尋google sheet服務
  1. 選擇左方,Add row to spreadsheet
選擇 Add row to spreadsheet
  1. 接下來就依照需求輸入欄位
填寫spreadsheet內容設定

spreadsheet name:是存入google drive時的sheet名子,這裡可以用中文

Formatted row:當資料寫入sheet中,需要寫入哪些欄位
預設值包括
OccurredAt:時間
EventName:事件名稱
Value1:寫入欄位1(本例為溫度)
Value2:寫入欄位2(本例為濕度)

Drive folder path:Sheet將放在哪個資料夾,如果像本圖一樣空值,則放在Google Diver 的Ifttt資料夾(若無會建立目錄)中

  1. 最後點選finish,完成所有設定
完成Webhook設定畫面

三、測試服務

  1. 點選上方功能表的my applets,找到自己建立好的webhook圖示,點選圖示左上角的webhook圖示。
點選已建立的webhook服務
  1. 點選Documentation,進入測試功能
點選Documentation
  1. 輸入測試資料
    • 1.event的地方輸入步驟一的event name,本例為4Fclassroom
    • 2.輸入value1:30,value2:60,代表未來溫度與濕度會從這裡傳入,而value1,2是溫度與濕度,測試時先分別給30、60
    • 3.完成後,按下方的test it
完成設定按下test it
  1. 觀察Google sheet是否有值,完成後,到你自己的google drive中,找到ifttt資料夾,裡面就會有一個之前給的檔名的sheet檔案
查看Google sheet是否有值
  1. http get測試,除了使用提供的界面之外,也可以直接利用網址來測試,其方式是將網址後端補上
    ?value1=30&value2=99(此處改99目的是要跟上方的測試做區別,才知道是哪一種來源所傳入的資料),這樣就可不用傳json
    • 此外將https改成http進行測試(目的在確認http也可以用,不一定要用https)
加入後綴-直接利用網址測試
    1. 將網址輸入在chrome或其他瀏覽器的網址列看看
    開啟瀏覽器測試
    1. 觀察google sheet的值,確實已經進來了,此處可以確認,只要讓Arduino瀏覽這個字串即可傳值進到google sheet中。
    測試成功的google sheet畫面

    四、Arduino程式碼

    本處使用ESP32進行測試,關於ESP32可以查看以前的文章:ESP32 Arduino開發環境架設(取代Arduino UNO及ESP8266首選)
    露天搜尋: https://goods.ruten.com.tw/item/show?21848118800764

    完成上述的設定之後,接下來只需要簡單的http client即可傳值進入google sheet,DHT11函式庫本人使用simpleDHT by Winlin的library(冷門但是我習慣了)。
    要注意的地方是第44行,如何將溫濕度的值轉成string並插入url中。

    傳輸成功的訊息視窗,須注意,有時這裡顯示成功,但sheet裡面沒資料,那是因為IFTTT卡住(可能太多人在用)

    ESP32傳輸成功的訊息視窗

    1.要注意的是google sheet最高40000列,超過會建立新的表格
    2.IFTTT不要太密集,建議60秒傳輸一次,太密集會卡住,收不到資料。

    Leave a Comment

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