#define BLYNK_TEMPLATE_ID "TMPL6knLvr_1y"
#define BLYNK_TEMPLATE_NAME "weather monitoring system"
#define BLYNK_AUTH_TOKEN "DRuOQmNuLvtV3P9_N_rOTNgzYIfJjvTZ"
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
#define DHT_PIN 23
#define DHTTYPE DHT22
#define I2C_ADD 0X27
#define LCD_COL 16
#define LCD_ROW 2
#define POT_PIN 34
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
LiquidCrystal_I2C lcd(I2C_ADD, LCD_COL, LCD_ROW);
DHT dht(DHT_PIN, DHTTYPE);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Test Begin!!!");
dht.begin();
Blynk.begin(auth, ssid, pass);
pinMode(POT_PIN, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
lcd.init();
lcd.backlight();
dhtval();
}
void dhtval() {
int h = dht.readHumidity();
int t = dht.readTemperature();
int rain = analogRead(POT_PIN);
Blynk.virtualWrite(V0, h);
Blynk.virtualWrite(V1, t);
Blynk.virtualWrite(V2, rain);
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from the dht sensor!");
return;
}
lcdDisp(0, 0, String(h), String(t), String(rain));
if (t > 35) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.println("Too much Heat!!");
lcd.setCursor(0, 1);
lcd.println("Temp:" + String(t));
}
if (rain > 500) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.println("Extreme Rainfall!!");
lcd.setCursor(0, 1);
lcd.println("Rainfall:" + String(rain));
}
}
void lcdDisp(int col, int row, String humid, String temp, String rain) {
lcd.setCursor(col, row);
lcd.println("Temp:" + String(temp));
lcd.println("Hum:" + String(humid));
lcd.setCursor(col, row + 1);
lcd.println("Rain:" + String(rain));
}