#define BLYNK_TEMPLATE_ID "TMPLuoPgj1HD"
#define BLYNK_DEVICE_NAME "DHT"
#define BLYNK_AUTH_TOKEN "BlrTJOVneZJLBtzgEodfN2MkZ1uRoqnk"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include "BlynkSimpleEsp32.h"
#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
#define LEDM 2
#define LEDH 4
#define LEDK 5
int lcdCol =20;
int lcdRow = 4;
LiquidCrystal_I2C lcd(0x27, lcdCol, lcdRow);
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; // type your wifi name
char pass[] = ""; // type your wifi password
#define DHTPIN 15 // Mention the digital pin where you connected
DHTesp dhtSensor;
BlynkTimer timer;
void sendSensor(){
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float t = data.temperature;
float h = data.humidity;
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V1, t);
Blynk.virtualWrite(V2, h);
Blynk.virtualWrite(V3, LEDM);
Blynk.virtualWrite(V4, LEDH);
Blynk.virtualWrite(V5, LEDK);
Serial.print("Temperature : ");
Serial.print(t);
Serial.print(" Humidity : ");
Serial.println(h);
lcd.setCursor(0,0);
lcd.print (" *RUANG OPERASI*");
lcd.setCursor(0,1);
lcd.print ("Suhu : ");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(0,2);
lcd.print ("Kelembaban : ");
lcd.print(h);
lcd.print(" %");
if(t > 29){
Blynk.logEvent("temp_alarm","SUHU TERLALU PANAS");
digitalWrite(LEDM, HIGH);
digitalWrite(LEDH, LOW);
digitalWrite(LEDK, LOW);
lcd.setCursor(0,3);
lcd.print ("SUHU TERLALU PANAS ");
}
else if (t<=29 && t>=21){
digitalWrite(LEDM, LOW);
digitalWrite(LEDH, HIGH);
digitalWrite(LEDK, LOW);
lcd.setCursor(0,3);
lcd.print (" SUHU NORMAL ");
}
else {
digitalWrite(LEDM, LOW);
digitalWrite(LEDH, LOW);
digitalWrite(LEDK, HIGH);
lcd.setCursor(0,3);
lcd.print ("SUHU TERLALU DINGIN");
}
}
void setup(){
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
dhtSensor.setup(DHTPIN, DHTesp::DHT22);
timer.setInterval(1000L, sendSensor);
pinMode(LEDM, OUTPUT);
pinMode(LEDH, OUTPUT);
pinMode(LEDK, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop(){
Blynk.run();
timer.run();
}