#include <DHTesp.h>
#include <WiFi.h>
#include "ThingSpeak.h"
const int dhtpin = 27;
TempAndHumidity data;
DHTesp dhtsensor;
const int trig =14;
const int echo = 12;
const int blue =32;
const int red = 18;
const int green = 16;
const int buzzer = 4;
int buzz_value;
float distance;
float duration;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient Client;
unsigned long mychannel_number =2603252;
const char* WriteKey = "N8Z1UG56SNSC35JU";
int statusCode;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
dhtsensor.setup(dhtpin,DHTesp::DHT22);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(Client);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void getwifi()
{
if(WiFi.status()!= WL_CONNECTED)
{
Serial.println("attemping to connect");
while(WiFi.status()!= WL_CONNECTED)
{
WiFi.begin(ssid,pass);
Serial.println(".");
delay(6000);
}
}
Serial.println("\n connected");
}
float getdistance()
{
digitalWrite(trig,LOW);
delayMicroseconds(4);
digitalWrite(trig, HIGH);
delayMicroseconds(100);
digitalWrite(trig, LOW);
duration = pulseIn(echo,HIGH);
return(duration*0.034/2);
}
void redlight()
{
if(distance >= 100)
{
tone(buzzer,1200);
digitalWrite(red,HIGH);
buzz_value = 1;
}
else
{
noTone(buzzer);
digitalWrite(red, LOW);
buzz_value = 0;
}
delay(10);
}
void bluelight()
{
if(data.humidity <= 25)
{
digitalWrite(blue, HIGH);
}
else{
digitalWrite(blue, LOW);
}
}
void greenlight()
{
if(data.temperature <= 12)
{
digitalWrite(green, HIGH);
}
else
{
digitalWrite(green, LOW);
}
}
void loop() {
getwifi();
distance = getdistance();
data = dhtsensor.getTempAndHumidity();
redlight();
bluelight();
greenlight();
ThingSpeak.setField(1,data.temperature);
ThingSpeak.setField(2,data.humidity);
ThingSpeak.setField(3,distance);
ThingSpeak.setField(4,buzz_value);
statusCode = ThingSpeak.writeFields(mychannel_number,WriteKey);
if(statusCode == 200)
{
Serial.println("the channel updated");
}
else
{
Serial.println("error"+String(statusCode));
}
delay(15000);
}