iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
自我挑戰組

Maker making IoT !!系列 第 27

[Day26] Esp32s + IFTTT + LINE - (程式碼講解)

1.前言

昨天那篇教各位學會使用IFTTT結合Line,當時傳輸資料時是透過Line Notify的函式庫去做,但此次用IFTTT不用使用Line Notify的函式庫,那這邊會講解是如何做到這點的。

2.程式碼講解

const char* host = "maker.ifttt.com";

第19行,IFTTT的網址位置

void loop(void)
{
  // 量測間等待至少 2 秒
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis >= interval) {
    // 將最後讀取感測值的時間紀錄下來 
    previousMillis = currentMillis;   

    // 讀取溫度大約 250 微秒!
    humidity = myAHT10.readHumidity();          // 讀取濕度(百分比)
    temp = myAHT10.readTemperature();     // 讀取溫度(華氏)
    
    // 檢查兩個值是否為空值
    if (isnan(humidity) || isnan(temp)) {
       Serial.println("Failed to read from myAHT10 sensor!");
       return;
    }
  }

  // 除錯用
  tempe1="Temperature:"+String(temp)+"C";   
  humid1="Humidity:"+String(humidity)+"%";

  Serial.println(tempe1);
  Serial.println(humid1);

  WiFiClient client;
  Serial.print("connecting to ");
  Serial.println(host);
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  String getStr_line = "GET /trigger/Esp32sAHT10Line/with/key/cEf5MJB?value1="+tempe1+"&value2="+humid1+" HTTP/1.1\r\n"
  + "Host: " + host + "\r\n" + "User-Agent: BuildFailureDetectorESP32\r\n" + "Connection: close\r\n\r\n";
  
  Serial.println(getStr_line);
  client.print(getStr_line);
  delay(100);
  client.stop();
  
  delay(60000);     //每1分鐘送一次到Line Notify
}

第80行,他這行就是儲存等等要貼在瀏覽器的網址內容,內容中包含HTTP所需資料、溫溼度數值、傳遞給IFTTT的資訊、數值等資訊。
最後這些資訊會由84行做傳輸。
那上一張有提及85行的delay,原因是當網路狀況差時,84行無法及時傳完資料就會被86行關閉,所以透過調整85行delay拉長傳輸時間。

歡迎交流

好了,這篇主要的地方在於80行那段傳輸資料,透過那段去讓Webhook執行程序,所以也可以自己試著貼網址到網址列上,看看是否可以執行,提示在Webhook的Documentation有一行可以使用,那此次就講到這樣囉,我們明天見囉~


上一篇
[Day25] Esp32s + IFTTT + LINE
下一篇
[Day27] Esp32 + IFTTT + Google Sheet
系列文
Maker making IoT !!30

尚未有邦友留言

立即登入留言