#include <DHTesp.h>
DHTesp dht;
TempAndHumidity th;
long myChannelNumber = 2629449;
const char * myWriteAPIKey = "QNNS8XJKLYS2XXEY";
const int trg=14,echo=13,grn=25,org=21,red=19,buzzer=2;
float dis=0;
void setup() {
Serial.begin(115200);
pinMode(trg, OUTPUT);
pinMode(echo,INPUT);
pinMode(grn, OUTPUT);
pinMode(org,OUTPUT);
pinMode(red, OUTPUT);
pinMode(buzzer, OUTPUT);
dht.setup(18,DHTesp::DHT22);
}
int ultra(){
digitalWrite(trg,HIGH);
delay(1000);
digitalWrite(trg,LOW);
float eh=pulseIn(echo,HIGH);
dis=eh*0.034/2;
return dis;
}
void loop() {
th=dht.getTempAndHumidity();
int sensor=ultra();
if(th.temperature <=30 && th.humidity >=70 && dis>=300){
digitalWrite(grn, HIGH);
digitalWrite(org, LOW);
digitalWrite(red, LOW);
Serial.println("You are safe!!");
noTone(buzzer);
}
else if((th.temperature >30 && th.temperature<70) && (th.humidity >30 && th.humidity<70) && (dis>200 && dis<300))
{
digitalWrite(org, HIGH);
digitalWrite(grn, LOW);
digitalWrite(red, LOW);
Serial.println("You are unsafe!!");
noTone(buzzer);
}
else if(th.temperature >=70 && th.humidity <=30 && dis<=200){
digitalWrite(red, HIGH);
digitalWrite(org, LOW);
digitalWrite(grn, LOW);
Serial.println("You are danger!!!!!!");
tone(buzzer, 10000);
}
else{
digitalWrite(red, LOW);
digitalWrite(org, LOW);
digitalWrite(grn, LOW);
Serial.println("Unstable values");
tone(buzzer, 10000);
}
delay(10);
ThingSpeak.setField(1,data.temperature);
ThingSpeak.setField(2,data.humidity);
ThingSpeak.setField(3,data2);
statusCode = ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey);
if(statusCode == 200) { //successful writing code
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem Writing data. HTTP error code :" +
String(statusCode));
}
delay(1000); // this speeds up the simulation
Serial.println("Temerature : "+String(data.temperature));
Serial.println("humidity : "+String(data.humidity));
Serial.println("Distance : "+String(data2));
}
int distance()
{
digitalWrite(trig, HIGH);
delay(100);
digitalWrite(trig, LOW);
float a = pulseIn(echo,HIGH);
return(a*0.034/2);
}