#include "DHT.h"
#include <time.h>
#include <WiFi.h>
//#include <WiFiClient.h>
#include <PubSubClient.h>
#include <ArtronShop_LineNotify.h> // Library ส่งไลน์
#define ledPIN1 25
#define LINE_TOKEN "y0c0SrcCkIHTREbXVbCGMBOJFVkim3h7soogIG1i8IB"
const char ssid[] = "Wokwi-GUEST";
const char password[] = "";
int timezone = 7 * 3600;
int dst = 0; //กำหนดค่า Date Swing Time
int sec = 1;// เปลี่ยนค่าตามเลขท้าย IP 10.10.1.x
int DHTPIN1 = 0;
int DHTPIN2 = 2;
int DHTPIN3 = 4;
int DHTPIN4 = 5;
int DHTPIN5 = 12;
int DHTPIN6 = 14;
int DHTPIN7 = 16;
int DHTPIN8 = 17;
int DHTPIN9 = 18;
DHT dht1(DHTPIN1, DHT22);
DHT dht2(DHTPIN2, DHT22);
DHT dht3(DHTPIN3, DHT22);
DHT dht4(DHTPIN4, DHT22);
DHT dht5(DHTPIN5, DHT22);
DHT dht6(DHTPIN6, DHT22);
DHT dht7(DHTPIN7, DHT22);
DHT dht8(DHTPIN8, DHT22);
DHT dht9(DHTPIN8, DHT22);
WiFiClient espClient;
PubSubClient client(espClient);
String dayt,mont,yeart,hourt,mint,sect,Time;
void setup(){
pinMode(ledPIN1, OUTPUT);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
//WiFi.mode(WIFI_STA); //เชื่อมต่อ Wifi
WiFi.begin(ssid, password);
Serial.println("\nConnecting to WiFi");
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.print("*");
}
Serial.println("");
Serial.println("connected 🛜");
Serial.print("IP address:");
Serial.println(WiFi.localIP());
configTime(timezone, dst, "pool.ntp.org", "time.nist.gov"); //ดึงเวลาจาก Server
Serial.println("\nLoading time");
while(!time(nullptr)){
Serial.print(".");
delay(500);
}
digitalWrite(ledPIN1, HIGH);
dht1.begin();
dht2.begin();
dht3.begin();
dht4.begin();
dht5.begin();
dht6.begin();
dht7.begin();
dht8.begin();
dht9.begin();
LINE.begin(LINE_TOKEN);
LINE.send("connected 🛜");
LINE.setToken(LINE_TOKEN);
Serial.println("");
}
void loop(){
float Humi = dht1.readHumidity();
float TRoom = dht1.readTemperature();
float TLow = dht2.readTemperature();
float TUp = dht3.readTemperature();
float TIn = dht4.readTemperature();
float TMux1 = dht5.readTemperature();
float TMux2 = dht6.readTemperature();
float TMux3 = dht7.readTemperature();
float TMux4 = dht8.readTemperature();
float TMux5 = dht9.readTemperature();
String RHumi;
String Room;
String Lower_HA1;
String Upper_HA2;
String In;
String NB1_M1;
String NB2_M2;
String NB3_M3;
String NB4_M4;
String NB5_M5;
RHumi = String("👉ความชื้นที่วัดได้ = ") + (Humi) + (" H ");
Room = String("👉อุณหภูมิที่วัดได้ = ") + String(TRoom) + String(" °C ");
Lower_HA1 = String("Lower_HA1 = ") + String(TLow) + String(" °C ");
Upper_HA2 = String("Upper_HA2 = ") + String(TUp) + String(" °C ");
In = String("Input = ") + String(TIn) + String(" °C ");
NB1_M1 = String("NB1_Mux1 = ") + (TMux1) + String(" °C");
NB2_M2 = String("NB2_Mux2 = ") +(TMux2) + String(" °C");
NB3_M3 = String("NB3_Mux3 = ") +(TMux3) + String(" °C");
NB4_M4 = String("NB4_Mux4 = ") +(TMux4) + String(" °C");
NB5_M5 = String("NB5_Mux5 = ") +(TMux5) + String(" °C");
time_t rawtime;
struct tm * timeinfo;
char buffer[80];
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, 80, "%d %b %Y %H:%M:%S", timeinfo);
hourt = timeinfo->tm_hour;
mont = timeinfo->tm_min;
sect = timeinfo->tm_sec;
Time = ("%s\n", buffer);
strftime(buffer, 80, "%d %b %Y %H:%M:%S", timeinfo);
//if(((timeinfo->tm_hour==5)&&(timeinfo->tm_min==50)&&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==9)&&(timeinfo->tm_min==50)&&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==10)&&(timeinfo->tm_min==05)&&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==14) && (timeinfo->tm_min==50) &&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==17)&&(timeinfo->tm_min==50)&&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==20)&&(timeinfo->tm_min==50)&&( timeinfo->tm_sec==sec))||((timeinfo->tm_hour==23) && (timeinfo->tm_min==27) &&( timeinfo->tm_sec==sec))){
if(TRoom > 35){
Serial.println((Time) + (TRoom) + (" °C ") + ("อุณภูมิห้องสูงมาก"));
LINE.send((Time) + (" ") + (TRoom) + (" °C ") + ("อุณภูมิห้องสูงมาก⚠️🔥"));
}
//if(((timeinfo->tm_hour==5)&&(timeinfo->tm_min==50)&&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==9)&&(timeinfo->tm_min==50)&&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==10)&&(timeinfo->tm_min==05)&&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==14) && (timeinfo->tm_min==50) &&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==17)&&(timeinfo->tm_min==50)&&( timeinfo->tm_sec==sec)) || ((timeinfo->tm_hour==20)&&(timeinfo->tm_min==50)&&( timeinfo->tm_sec==sec))||((timeinfo->tm_hour==23) && (timeinfo->tm_min==27) &&( timeinfo->tm_sec==sec))){
if((TRoom <= 26) && (Humi < 40)){
Serial.println((Time) + (RHumi) + ("อุณหภูมิที่วัดได้ = ") + (TRoom) + (" °C "));
LINE.send(Time + (" ") + ("👉ความชื้นมาตรฐาน = 40-60 H") + (RHumi) + (" 🥶ความชื้นอยู่ในเกณฑ์ต่ำ") + (" 👉อุณหภูมิมาตรฐาน = 25 °C " ) + (" 🟢อุณหภูมิที่วัดได้ = ") + TRoom + ("°C"));
if(TLow <= TRoom){
Serial.println((Time) + ("🟢") + (Lower_HA1));
LINE.send(("🟢") + Lower_HA1);
}else if((TLow > TRoom) && (TLow <= 32)){
Serial.println((Time) + ("🟡") + (Lower_HA1));
LINE.send(("🟡") + Lower_HA1);
}else if(TLow > 32){
Serial.println((Time) + ("🔴") + (Lower_HA1));
LINE.send(("🔴") + Lower_HA1);
}
if(TUp <= TRoom){
Serial.println((Time) + ("🟢") + (Upper_HA2));
LINE.send(("🟢") + Upper_HA2);
}else if((TUp > TRoom) && (TLow <= 32)){
Serial.println((Time) + ("🟡") + (Upper_HA2));
LINE.send(("🟡") + Upper_HA2);
}else if(TUp > 32){
Serial.println((Time) + ("🔴") + (Upper_HA2));
LINE.send(("🔴") + Upper_HA2);
}
if(TIn <= TRoom){
Serial.println((Time) + ("🟢") + (In));
LINE.send(("🟢") + In);
}else if((TIn > TRoom) && (TIn <= 32)){
Serial.println((Time) + ("🟡") + (In));
LINE.send(("🟡") + In);
}else if(TIn > 32){
Serial.println((Time) + ("🔴") + (In));
LINE.send(("🔴") + In);
}
if(TMux1 <= TRoom){
Serial.println((Time) + ("🟢") + (NB1_M1));
LINE.send(("🟢") + NB1_M1);
}else if((TMux1 > TRoom) && (TMux1 <= 32)){
Serial.println((Time) + ("🟡") + (NB1_M1));
LINE.send(("🟡") + NB1_M1);
}else if(TMux1 > 32){
Serial.println((Time) + ("🔴") + (NB2_M2));
LINE.send(("🔴") + NB1_M1);
}
if(TMux2 <= TRoom){
Serial.println((Time) + ("🟢") + (NB2_M2));
LINE.send(("🟢") + NB2_M2);
}else if((TMux2 > TRoom) && (TMux2 <= 32)){
Serial.println((Time) + ("🟡") + (NB2_M2));
LINE.send(("🟡") + NB2_M2);
}else if(TMux2 > 32){
Serial.println((Time) + ("🔴") + (NB2_M2));
LINE.send(("🔴") + NB2_M2);
}
if(TMux3 <= TRoom){
Serial.println((Time) + ("🟢") + (NB3_M3));
LINE.send(("🟢") + NB3_M3);
}else if((TMux3 > TRoom) && (TMux3 <= 32)){
Serial.println((Time) + ("🟡") + (NB3_M3));
LINE.send(("🟡") + NB3_M3);
}else if(TMux3 > 32){
Serial.println((Time) + ("🔴") + (NB3_M3));
LINE.send(("🔴") + NB3_M3);
}
if(TMux4 <= TRoom){
Serial.println((Time) + ("🟢") + (NB4_M4));
LINE.send(("🟢") + NB4_M4);
}else if((TMux4 > TRoom) && (TMux4 <= 32)){
Serial.println((Time) + ("🟡") + (NB4_M4));
LINE.send(("🟡") + NB4_M4);
}else if(TMux4 > 32){
Serial.println((Time) + ("🔴") + (NB4_M4));
LINE.send(("🔴") + NB4_M4);
}
if(TMux5 <= TRoom){
Serial.println((Time) + ("🟢") + (NB5_M5));
LINE.send(("🟢") + NB5_M5);
}else if((TMux5 > TRoom) && (TMux5 <= 32)){
Serial.println((Time) + ("🟡") + (NB5_M5));
LINE.send(("🟡") + NB5_M5);
}else if(TMux5 > 32){
Serial.println((Time) + ("🔴") + (NB5_M5));
LINE.send(("🔴") + NB5_M5);
}
}
if(((TRoom > 26) && (TRoom <= 29)) && ((Humi > 39) && (Humi <= 60))){
Serial.println((Time) + (RHumi) + ("H") + ("🟢อุณหภูมิในห้อง = ") + (TRoom) + (" °C "));
LINE.send(Time + (" ") + ("👉ความชื้นมาตรฐาน = 40-60 H") + (RHumi) + ( " 😍ความชื้นอยู่ในเกณฑ์มาตรฐาน") + (" 👉อุณหภูมิมาตรฐาน = 25 °C " ) + (" 🟡อุณหภูมิที่วัดได้ = ") + TRoom + ("°C "));
if(TLow <= TRoom){
Serial.println((Time) + ("🟢") + (Lower_HA1));
LINE.send(("🟢") + Lower_HA1);
}else if((TLow > TRoom) && (TLow <= 32)){
Serial.println((Time) + ("🟡") + (Lower_HA1));
LINE.send(("🟡") + Lower_HA1);
}else if(TLow > 32){
Serial.println((Time) + ("🔴") + (Lower_HA1));
LINE.send(("🔴") + Lower_HA1);
}
if(TUp <= TRoom){
Serial.println((Time) + ("🟢") + (Upper_HA2));
LINE.send(("🟢") + Upper_HA2);
}else if((TUp > TRoom) && (TLow <= 32)){
Serial.println((Time) + ("🟡") + (Upper_HA2));
LINE.send(("🟡") + Upper_HA2);
}else if(TUp > 32){
Serial.println((Time) + ("🔴") + (Upper_HA2));
LINE.send(("🔴") + Upper_HA2);
}
if(TIn <= TRoom){
Serial.println((Time) + ("🟢") + (In));
LINE.send(("🟢") + In);
}else if((TIn > TRoom) && (TIn <= 32)){
Serial.println((Time) + ("🟡") + (In));
LINE.send(("🟡") + In);
}else if(TIn > 32){
Serial.println((Time) + ("🔴") + (In));
LINE.send(("🔴") + In);
}
if(TMux1 <= TRoom){
Serial.println((Time) + ("🟢") + (NB1_M1));
LINE.send(("🟢") + NB1_M1);
}else if((TMux1 > TRoom) && (TMux1 <= 32)){
Serial.println((Time) + ("🟡") + (NB1_M1));
LINE.send(("🟡") + NB1_M1);
}else if(TMux1 > 32){
Serial.println((Time) + ("🔴") + (NB2_M2));
LINE.send(("🔴") + NB1_M1);
}
if(TMux2 <= TRoom){
Serial.println((Time) + ("🟢") + (NB2_M2));
LINE.send(("🟢") + NB2_M2);
}else if((TMux2 > TRoom) && (TMux2 <= 32)){
Serial.println((Time) + ("🟡") + (NB2_M2));
LINE.send(("🟡") + NB2_M2);
}else if(TMux2 > 32){
Serial.println((Time) + ("🔴") + (NB2_M2));
LINE.send(("🔴") + NB2_M2);
}
if(TMux3 <= TRoom){
Serial.println((Time) + ("🟢") + (NB3_M3));
LINE.send(("🟢") + NB3_M3);
}else if((TMux3 > TRoom) && (TMux3 <= 32)){
Serial.println((Time) + ("🟡") + (NB3_M3));
LINE.send(("🟡") + NB3_M3);
}else if(TMux3 > 32){
Serial.println((Time) + ("🔴") + (NB3_M3));
LINE.send(("🔴") + NB3_M3);
}
if(TMux4 <= TRoom){
Serial.println((Time) + ("🟢") + (NB4_M4));
LINE.send(("🟢") + NB4_M4);
}else if((TMux4 > TRoom) && (TMux4 <= 32)){
Serial.println((Time) + ("🟡") + (NB4_M4));
LINE.send(("🟡") + NB4_M4);
}else if(TMux4 > 32){
Serial.println((Time) + ("🔴") + (NB4_M4));
LINE.send(("🔴") + NB4_M4);
}
if(TMux5 <= TRoom){
Serial.println((Time) + ("🟢") + (NB5_M5));
LINE.send(("🟢") + NB5_M5);
}else if((TMux5 > TRoom) && (TMux5 <= 32)){
Serial.println((Time) + ("🟡") + (NB5_M5));
LINE.send(("🟡") + NB5_M5);
}else if(TMux5 > 32){
Serial.println((Time) + ("🔴") + (NB5_M5));
LINE.send(("🔴") + NB5_M5);
}
}
if(((TRoom > 29) && (TRoom <= 35)) && (Humi > 60)){
Serial.println((Time) + (RHumi) + ("H") + ("🟢อุณหภูมิในห้อง = ") + (TRoom) + (" °C "));
LINE.send(Time + (" ") + ("👉ความชื้นมาตรฐาน = 40-60 H") + (RHumi) + ( " 😰ความชื้นอยู่ในเกณฑ์สูง") + (" 👉อุณหภูมิมาตรฐาน = 25 °C ") + (" 🔴อุณหภูมิที่วัดได้ = ") + TRoom + ("°C "));
if(TLow <= TRoom){
Serial.println((Time) + ("🟢") + (Lower_HA1));
LINE.send(("🟢") + Lower_HA1);
}else if((TLow > TRoom) && (TLow <= 32)){
Serial.println((Time) + ("🟡") + (Lower_HA1));
LINE.send(("🟡") + Lower_HA1);
}else if(TLow > 32){
Serial.println((Time) + ("🔴") + (Lower_HA1));
LINE.send(("🔴") + Lower_HA1);
}
if(TUp <= TRoom){
Serial.println((Time) + ("🟢") + (Upper_HA2));
LINE.send(("🟢") + Upper_HA2);
}else if((TUp > TRoom) && (TLow <= 32)){
Serial.println((Time) + ("🟡") + (Upper_HA2));
LINE.send(("🟡") + Upper_HA2);
}else if(TUp > 32){
Serial.println((Time) + ("🔴") + (Upper_HA2));
LINE.send(("🔴") + Upper_HA2);
}
if(TIn <= TRoom){
Serial.println((Time) + ("🟢") + (In));
LINE.send(("🟢") + In);
}else if((TIn > TRoom) && (TIn <= 32)){
Serial.println((Time) + ("🟡") + (In));
LINE.send(("🟡") + In);
}else if(TIn > 32){
Serial.println((Time) + ("🔴") + (In));
LINE.send(("🔴") + In);
}
if(TMux1 <= TRoom){
Serial.println((Time) + ("🟢") + (NB1_M1));
LINE.send(("🟢") + NB1_M1);
}else if((TMux1 > TRoom) && (TMux1 <= 32)){
Serial.println((Time) + ("🟡") + (NB1_M1));
LINE.send(("🟡") + NB1_M1);
}else if(TMux1 > 32){
Serial.println((Time) + ("🔴") + (NB2_M2));
LINE.send(("🔴") + NB1_M1);
}
if(TMux2 <= TRoom){
Serial.println((Time) + ("🟢") + (NB2_M2));
LINE.send(("🟢") + NB2_M2);
}else if((TMux2 > TRoom) && (TMux2 <= 32)){
Serial.println((Time) + ("🟡") + (NB2_M2));
LINE.send(("🟡") + NB2_M2);
}else if(TMux2 > 32){
Serial.println((Time) + ("🔴") + (NB2_M2));
LINE.send(("🔴") + NB2_M2);
}
if(TMux3 <= TRoom){
Serial.println((Time) + ("🟢") + (NB3_M3));
LINE.send(("🟢") + NB3_M3);
}else if((TMux3 > TRoom) && (TMux3 <= 32)){
Serial.println((Time) + ("🟡") + (NB3_M3));
LINE.send(("🟡") + NB3_M3);
}else if(TMux3 > 32){
Serial.println((Time) + ("🔴") + (NB3_M3));
LINE.send(("🔴") + NB3_M3);
}
if(TMux4 <= TRoom){
Serial.println((Time) + ("🟢") + (NB4_M4));
LINE.send(("🟢") + NB4_M4);
}else if((TMux4 > TRoom) && (TMux4 <= 32)){
Serial.println((Time) + ("🟡") + (NB4_M4));
LINE.send(("🟡") + NB4_M4);
}else if(TMux4 > 32){
Serial.println((Time) + ("🔴") + (NB4_M4));
LINE.send(("🔴") + NB4_M4);
}
if(TMux5 <= TRoom){
Serial.println((Time) + ("🟢") + (NB5_M5));
LINE.send(("🟢") + NB5_M5);
}else if((TMux5 > TRoom) && (TMux5 <= 32)){
Serial.println((Time) + ("🟡") + (NB5_M5));
LINE.send(("🟡") + NB5_M5);
}else if(TMux5 > 32){
Serial.println((Time) + ("🔴") + (NB5_M5));
LINE.send(("🔴") + NB5_M5);
}
}
}