iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
自我挑戰組

Maker making IoT !!系列 第 25

[Day24] Esp32 + LINE - (程式碼講解)

1.前言

這篇主要是為解說前一篇關於AHT10和LINE的程式碼,此次用到Line Notify的推播服務,因為是額外服務所以有安裝之前沒用過的函式庫,並且此次程式碼中單純只有導入函式庫跟設定Token,所以這些部分跳過,直接看重要的loop的部分。

2.程式碼

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

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

  String tempe="溫度:"+String(temp_f)+"℃";   
  String humid="濕度:"+String(humidity)+"%";

  // 顯示 Line版本
  Serial.println(LINE.getVersion());
 
  LINE.setToken(LINE_TOKEN);

  // 先換行再顯示
  LINE.notify("\n" + tempe + " ;" + humid);
      
  // 每2分鐘發送一次(delay120000)
  delay(10000);
}
  • 第60行,AHT10會讀取濕度
  • 第62行,AHT10會讀取溫度(單位預設為攝氏)
  • 第67行,判斷溫溼度的值是否為空值(nan)

這邊程式碼大多都和之前一樣,就先讀取數值,在判斷是否空值(nan),如果是顯示錯誤訊息,如果不是就輸出數值,最需要注意的是讀取數值的資料型態,一定需要是浮點數(因為讀取的溫溼度值都有小數點)。

  • 第79行,連上LINE Token
  • 第82行,傳輸資料到LINE

然後這邊程式碼就只有短短兩行,用來連接LINE,以及對LINE Notify傳輸資料,直接運用函式庫的函式,進行連接及傳輸。

歡迎交流

好了,關於使用LINE Notify程式中最重要的地方就是Token,Token就像是一把鑰匙,如果有需要Token的話就需要帳號密碼(做身分驗證),如果驗證成功就會給Token,只要有Token就可以進行資料傳輸了;希望這樣解釋可以讓各位更了解Token是甚麼,明天也會用其他方式進行推播,所以請各位敬請期待明天的到來吧~


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

尚未有邦友留言

立即登入留言