#include <DHTesp.h>
#include <WiFi.h>
#include <ThingSpeak.h>
WiFiClient client;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
unsigned long channelID = 2684318;
const char* writeAPIKey = "NFGI09773VHY9AZR";
DHTesp banu;
TempAndHumidity data;
const int redLed = 12;
const int orangeLed = 13;
const int greenLed = 14;
const int trig = 5;
const int echo = 16;
int statusCode;
void setup() {
ThingSpeak.begin(client);
Serial.begin(115200);
banu.setup(18, DHTesp::DHT22);
pinMode(redLed, OUTPUT);
pinMode(orangeLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
WiFi.mode(WIFI_STA);
}
float Dist() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
long duration = pulseIn(echo, HIGH);
float distance = (duration * 0.0343) / 2;
return distance;
}
void loop() {
if(WiFi.status() != WL_CONNECTED)
{
Serial.print("Attempting to connect");
while(WiFi.status() != WL_CONNECTED)
{
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
data = banu.getTempAndHumidity();
float temp = data.temperature;
float humi = data.humidity;
float distance = Dist();
Serial.println("Distance: " + String(distance) + " cm");
Serial.println("Humi: " + String(humi));
Serial.println("Temp : " + String(temp));
Serial.println("-----");
digitalWrite(redLed, LOW);
digitalWrite(orangeLed, LOW);
digitalWrite(greenLed, LOW);
if (temp >= 70 && humi <= 30 && distance < 200) {
digitalWrite(redLed, HIGH);
Serial.println("You're in danger");
}
else if (temp >= 30 && temp <= 70 && humi >= 30 && humi <= 70 && distance >= 200 && distance <= 300){
digitalWrite(orangeLed, HIGH);
Serial.println("Normal condition");
}
else if (temp <= 30 && humi >= 70 && distance > 300){
digitalWrite(greenLed, HIGH);
Serial.println("You're safe");
}
else{
digitalWrite(redLed, LOW);
digitalWrite(orangeLed, LOW);
digitalWrite(greenLed, LOW);
}
ThingSpeak.setField(1, data.temperature);
ThingSpeak.setField(2, data.humidity);
ThingSpeak.setField(3, distance);
statusCode = ThingSpeak.writeFields(channelID,writeAPIKey);
if(statusCode == 200) { //successful writing code
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem Writing data. HTTP error code :" +
String(statusCode));
}
delay(1000);
}