#include <WiFi.h>
#include <WiFiClientSecure.h>
#include "DHTesp.h"
char SSID[] = "Yun_22Ultra";
char password[] = "94879487";
String Linetoken = "WuDsHgPqKfUyVKKBKrLOtYY1tqvEUuGKkicwd35lfeH";
const int DHT_pin = 15;
DHTesp dhtSensor;
WiFiClientSecure client;
char host[] = "notify-api.line.me";
void setup()
{
Serial.begin(115200);
Serial.print("Connecting Wifi: ");
Serial.println(SSID);
//WiFi.begin(SSID, password);
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
client.setInsecure();
dhtSensor.setup(DHT_pin, DHTesp::DHT22);
}
void loop()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity();
byte temperature = data.temperature;
byte humidity = data.humidity;
/*
//讀取成功,將溫濕度顯示在序列視窗
Serial.print("Sample OK: ");
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" H");
*/
//設定觸發LINE訊息條件為溫度超過30或濕度超過80
if ((int)temperature >= 30 || (int)humidity >= 80)
{
//組成Line訊息內容
String message = "檢測環境發生異常,請協助儘速派人查看處理,目前環境狀態:";
message += "\n溫度=" + String(((int)temperature)) + " *C";
message += "\n濕度=" + String(((int)humidity)) + " H";
Serial.println(message);
if (client.connect(host, 443))
{
int LEN = message.length();
//傳遞POST表頭
String url = "/api/notify";
client.println("POST " + url + " HTTP/1.1");
client.print("Host: "); client.println(host);
//權杖
client.print("Authorization: Bearer "); client.println(Linetoken);
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: "); client.println( String((LEN + 8)) );
client.println();
client.print("message="); client.println(message);
client.println();
//等候回應
delay(2000);
String response = client.readString();
//顯示傳遞結果
Serial.println(response);
client.stop(); //斷線,否則只能傳5次
}
else
{
//傳送失敗
Serial.println("connected fail");
}
}
delay(3000);
}