//Fill-in information from Blynk Device Info here
#define BLYNK_TEMPLATE_ID "TMPL6dTp450Rm"
#define BLYNK_TEMPLATE_NAME "Monitor DHT22"
#define BLYNK_AUTH_TOKEN "rajMirDKHkHMCYrRLF2F2mpZsDr6WnyD"
#define BLYNK_PRINT Serial
#include <DHT.h>
#include <Wire.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <LiquidCrystal_I2C.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer; //Untuk push data dibutuhkan blynk timer (untuk code push data dapat dilihat di blynk example)
#define DHTPIN 15 //Pin DHT22
#define DHTTYPE DHT22
// Alamat I2C LCD
const int lcdAddress = 0x27; // Sesuaikan dengan alamat LCD I2C Anda
const int lcdColumns = 16;
const int lcdRows = 2;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(lcdAddress, lcdColumns, lcdRows);
float humidity, temp;
unsigned long previousMillis = 0;
const long interval = 3000;
void setup()
{
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); //Menginisiasi Blynk
}
bool isFirstConnect = true;
BLYNK_CONNECTED() {
if (isFirstConnect)
{
Blynk.syncAll();
isFirstConnect = false;
}
}
void loop()
{
Blynk.run();
gettemperature();
}
void gettemperature() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
humidity = dht.readHumidity();
temp = dht.readTemperature();
Blynk.virtualWrite(V0, temp);
Blynk.virtualWrite(V1, humidity);
if (isnan(humidity) || isnan(temp)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
}
Serial.println("Temperature: " + String(temp, 1) + "C");
Serial.println("Humidity: " + String(humidity, 1) + "%");
Serial.println("% send to Blynk");
delay(5000);
lcd.setCursor(0, 0);
lcd.print("Temperature: ");
lcd.print(temp);
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
delay(1000);
// Cek jika suhu melebihi 30 derajat Celsius
if (temp > 30) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu melebihi");
lcd.setCursor(0, 1);
lcd.print("30 C");
delay(5000);
lcd.clear();
sendNotification(); // Kirim notifikasi ke Blynk
}
}
void sendNotification() {
Blynk.logEvent("high_temp", "Suhu melebihi 30 derajat Celcius");
}