#include<WiFi.h>
#include <DHTesp.h>
#include <ThingSpeak.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient client;
long myChannelNumber = 2616934;
const char * myWriteAPIKey = "JOMSEGNCV19HHOTC";
int statusCode;
DHTesp akhila;
TempAndHumidity data;
int trig = 27;
int echo = 26;
float distance ;
void setup() {
ThingSpeak.begin(client);
Serial.begin(115200);
WiFi.mode(WIFI_STA);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(19, OUTPUT);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
akhila.setup(18,DHTesp::DHT22);
}
int sensor()
{
digitalWrite(trig, LOW);
delay(10);
digitalWrite(trig, HIGH);
delay(100);
digitalWrite(trig, LOW);
distance=pulseIn(echo, HIGH);
return(distance * 0.034/2+1);
}
void loop() {
digitalWrite(22, LOW);
digitalWrite(23, LOW);
ThingSpeak.setField(1, data.temperature);
ThingSpeak.setField(2, data.humidity);
ThingSpeak.setField(3, sensor());
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));
}
if(WiFi.status()!=WL_CONNECTED)
{
Serial.print("Attempting to connect");
while(WiFi.status()!=WL_CONNECTED)
{
Serial.print(".");
WiFi.begin(ssid,pass);
delay(5000);
}
Serial.println("\n CONNECTED");
}
delay(10);
if(data.humidity<=35 && data.temperature>=25)
{
tone(19,5000);
digitalWrite(23, HIGH);
delay(100);
digitalWrite(23, LOW);
delay(100);
noTone(19);
if(sensor()>=12)
{
tone(19,5000);
digitalWrite(22, HIGH);
delay(100);
digitalWrite(22, LOW);
delay(100);
noTone(19);
}
else{
digitalWrite(22, HIGH);
delay(100);
digitalWrite(22, LOW);
delay(100);
}
}
else
{
digitalWrite(23, LOW);
}
data = akhila.getTempAndHumidity();
Serial.println("Humidity :" +String(data.humidity));
Serial.println("Temperature :" +String(data.temperature));
Serial.println("Distance :" +String(sensor()));
Serial.println("*********************");
delay(1000);
}