#include <WiFi.h>
#include <HTTPClient.h>
#include <DHTesp.h>
//請修改以下參數----
char ssid[] ="Wokwi-GUEST";
char password[] = "";
//請修改為你自己的API Key
String url = "https://hook.us1.make.com/fpvdbvpde6pzvh92liy05rejuintmwib";
const int DHT_PIN = 15;//修改腳位為15
DHTesp dhtSensor;
const char* token = "jtdsDA0dyCOplaEpBlu64ifYrDNZRvRQUUF031R2mYe";
#define LIGHT_SENSOR_PIN 36
void setup()
{
dhtSensor.setup(DHT_PIN, DHTesp:: DHT22);
Serial.begin(115200);
Serial.print("開始連線到無線網路SSID:");
Serial.println(ssid);
WiFi.mode (WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.println("連線完成");
}
void loop()
{
HTTPClient http2;
http2.begin("https://notify-api.line.me/api/notify");
http2.addHeader("Authorization", "Bearer " + String(token));
http2.addHeader("Content-Type", "application/x-www-form-urlencoded");
//http2.POST("溫度計讀取成功:"+(int)temperature+" *C, "+(int)humidity+" H, "+"亮度: "+analogValue);
int analogValue = analogRead(LIGHT_SENSOR_PIN);
Serial.println("=============");
byte temperature = 0;
byte humidity = 0;
TempAndHumidity data =dhtSensor.getTempAndHumidity();
temperature = data.temperature;
humidity = data.humidity;
//讀取成功,將溫濕度顯示在序列視窗
Serial.print("溫度計讀取成功:");
Serial.print((int) temperature); Serial.print(" *C, ");
Serial.print((int) humidity); Serial.print(" H, ");
Serial.print("亮度: ");Serial.println(analogValue);
//開始傳送到thingspeak
Serial.println("啟動網頁連線");
HTTPClient http;
//將溫度及濕度以HTTP Get參數方式補人網址後方
String url1 = url + "?name=" + "IoT22" + "&value1=" + (int)temperature + "&value2=" + (int)humidity +"&value3=" + (int)analogValue;
//http client取得網頁內容
http.begin(url1);
int httpCode = http.GET();
Serial.print(httpCode);
if (httpCode == HTTP_CODE_OK) {
//讀取網頁內容到payload
String payload = http.getString();
//將內容顯示出來
Serial.print("網頁內容=");
Serial.println(payload);
String message = "溫度計讀取成功:";
message += "\n溫度=" + String(((int)temperature)) + " *C";
message += "\n濕度=" + String(((int)humidity)) + " H";
message += "\n亮度=" + String(((int)analogValue));
http2.POST("message="+message);
} else {
//讀取失敗
Serial.println("網路傳送失敗");
}
http.end();
http2.end();
delay(20000);//休息20秒
}