#define BLYNK_TEMPLATE_ID "TMPL63FXSHo9J"
#define BLYNK_TEMPLATE_NAME "Project"
#define BLYNK_AUTH_TOKEN "uZrUVotdoC_tIUu8zqz56j-ATKg2JOTQ"
#define BLYNK_PRINT Serial
#include<WiFi.h>
#include<WiFiClient.h>
#include<BlynkSimpleEsp32.h>
#include <DHTesp.h>
#define BlynkTerminal V4
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
int lcd_SDA = 2;
int lcd_SCL = 15;
#define blueled 4
#define redled 5
#define dhtpin 21
BlynkTimer timer;
DHTesp sensor;
WidgetTerminal terminal(V4);
char ssid[]="Wokwi-GUEST";
char pass[]="";
char auth[]="uZrUVotdoC_tIUu8zqz56j-ATKg2JOTQ";
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(redled, OUTPUT);
pinMode(blueled, OUTPUT);
pinMode(dhtpin, INPUT);
sensor.setup(dhtpin, DHTesp::DHT22);
timer.setInterval(500L, ReadDHT);
Blynk.begin(auth,ssid,pass,"blynk.cloud",80);
Wire.begin(lcd_SDA, lcd_SCL);
lcd.init();
lcd.backlight();
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
timer.run();
TempAndHumidity x = sensor.getTempAndHumidity();
lcd.setCursor(0,0);
lcd.print("Temperature:");
lcd.setCursor(12,0);
lcd.print(x.temperature);
lcd.setCursor(0,1);
lcd.print("Humidity:");
lcd.setCursor(9,1);
lcd.print(x.humidity);
}
void ReadDHT(){
TempAndHumidity values = sensor.getTempAndHumidity();
Blynk.virtualWrite(V0,values.temperature);
Blynk.virtualWrite(V1,values.humidity);
}
BLYNK_WRITE(BlynkTerminal){
String cmd = param.asStr();
TempAndHumidity x = sensor.getTempAndHumidity();
if (cmd== "red on") digitalWrite(redled, HIGH);
else if (cmd == "temperature") terminal.print(x.temperature);
else if (cmd == "humidity") terminal.print(x.humidity);
else terminal.println("Invalid command");
}