#define BLYNK_TEMPLATE_ID "TMPL61WVWeKzb"
#define BLYNK_TEMPLATE_NAME "IoT Assesment"
#define BLYNK_AUTH_TOKEN "CW6_vPbSnanNFlEvVF5jYHtEuMUiY-aG"
#define BLYNK_PRINT Serial
#include "DHT.h"
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#include <WiFiClient.h>
#define DHTPIN 33
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer Timer;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
float temperature;
float humidity;
int enable_system;
int buzzer = 25;
int enable_led = 26;
int alert_led = 27;
BLYNK_WRITE(V2){
int i = param.asInt();
enable_system = i;
}
void system_function(){
//Constantly read DHT value for 1 seconds
for(int i = 0; i < 1000; i++){
//Read temperature from DHT sensor
temperature = dht.readTemperature();
humidity = dht.readHumidity();
//If enable system switch in Blynk is turned on
if(enable_system == 1){
//Turned green LED on
digitalWrite(enable_led, HIGH);
//If temperature is more than 50 and humidity is less than 40 (HOT AND DRY)
if(temperature > 50 && humidity < 40){
//Trigger red LED and buzzer
digitalWrite(alert_led, HIGH);
tone(buzzer, 1000);
}else{
//If not, reset red LED and buzzer
digitalWrite(alert_led, LOW);
tone(buzzer, 0);
}
}else{
//If enable system switch in Blynk is not enabled, disable all LED and buzzer
digitalWrite(enable_led, LOW);
digitalWrite(alert_led, LOW);
tone(buzzer, 0);
}
delay(1);
}
//Update temperature and humidity value after 1 second to prevent heavy load on Blynk server
Blynk.virtualWrite(V0, temperature);
Blynk.virtualWrite(V1, humidity);
}
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(enable_led, OUTPUT);
pinMode(alert_led, OUTPUT);
digitalWrite(alert_led, LOW);
pinMode(buzzer, OUTPUT);
tone(buzzer, 0);
Blynk.virtualWrite(V2, 0);
dht.begin();
Timer.setInterval(1L, system_function);
}
void loop() {
Blynk.run();
Timer.run();
delay(10);
}