#include <DHTesp.h>
#include <WiFi.h>
#include <ThingSpeak.h>
int Trigg =19;
int echo = 21;
int green = 25;
int orange=26;
int red=27;
float distance;
WiFiClient client; //wifi client
long myChannelNumber =2614296; //thingspeak channel number
const char * myWriteAPIKey = "9NSJV1OBE2N0VZLV"; //thingspeak mywrite_apikey
char ssid[] = "Wokwi-GUEST"; //wifi id
char pass[] = ""; //wifi password
DHTesp pritheesh;
TempAndHumidity data;
void setup() {
ThingSpeak.begin(client);
Serial.begin(115200);
pritheesh.setup(18, DHTesp::DHT22);
pinMode(Trigg,OUTPUT );
pinMode(echo,INPUT);
// pinMode(green,OUTPUT );
pinMode(orange,OUTPUT );
pinMode(red,OUTPUT );
pinMode(14, OUTPUT);
pinMode(23, OUTPUT);
WiFi.mode(WIFI_STA); //wifi setup mode
if(WiFi.status() != WL_CONNECTED) //checking wifi connection
{
Serial.print("Attempting to connect");
while(WiFi.status() != WL_CONNECTED)
{
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
}
int ultra() { //getting utrasonic sensor data
digitalWrite(Trigg, LOW);
delay(10);
digitalWrite(Trigg, HIGH);
delay(100);
digitalWrite(Trigg, LOW);
distance=pulseIn(echo,HIGH);
return(distance*0.034/2);
}
void loop() {
data = pritheesh.getTempAndHumidity(); // getting temp and humi in dht library
int humi =int(data.humidity); // giving temperature value to variables
int temp=int(data.temperature);// giving humidity value to variables
int sonic=ultra(); // giving ultrasonic value to variables
Serial.println(sonic);
Serial.println(humi);
Serial.println(temp);
if(temp<=30 && humi>=70 && sonic>=300){
// digitalWrite(green,HIGH);
digitalWrite(orange,LOW);
digitalWrite(red,LOW);
Serial.println("safe");
digitalWrite(23, HIGH);
noTone(14);
}
else if((temp>30 && temp<70) && (humi>=30 && humi<70) && (sonic>=200 && sonic<300)){
digitalWrite(red,LOW);
// digitalWrite(green,LOW);
digitalWrite(orange,HIGH);
Serial.println("not safe");
noTone(14);
}
else if(temp>70 && humi<30 && sonic<200){
digitalWrite(red,HIGH);
// digitalWrite(green,LOW);
digitalWrite(orange,LOW);
Serial.println("danger");
tone(14,5000);
noTone(14);
}
else{
// digitalWrite(green,LOW);
digitalWrite(orange,LOW);
digitalWrite(red,LOW);
Serial.println(".........");
}
ThingSpeak.setField(1,temp); //set feilds for temperature
ThingSpeak.setField(2,humi); //set feilds for humidity
ThingSpeak.setField(3,sonic);//set feilds for ultrasonic
int statusCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
//writing values into thinkspeak through myChannelNumber, myWriteAPIKey
//checking if values whether send to thingspeak or not
if(statusCode==200){
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem Writing data. HTTP error code :" +
String(statusCode));
}
delay(20000);
}