#define BLYNK_TEMPLATE_ID "TMPL6xw2kO64W"
#define BLYNK_TEMPLATE_NAME "alat pendeteksi kebakaran menggunakan DHT22"
#define BLYNK_AUTH_TOKEN "w0vfAkXBbMRl7YXBIk8c_1EBv-rg4FwR"
const int relayPin = 2; // You can change this to the desired GPIO pin
#define relay 15
#include "DHTesp.h"
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
const int DHT_PIN = 5;
DHTesp dhtSensor;
float suhu;
float kelembapan;
BlynkTimer timer;
//Kelembaban anggrek yang baik berkisar antara 60 – 80 %. Kelembaban tidak boleh terlalu tinggi saat
//malam hari dan tidak boleh terlalu rendah saat
//siang hari. Selain kelembaban,
//suhu tempat menanam anggrek juga harus terjaga. Suhu yang ideal untuk anggrek adalah :
//suhu siang antara 27 – 30 derajat celcius
void BacaKirimSensor()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity();
suhu = data.temperature;
kelembapan = data.humidity;
Blynk.virtualWrite(V0, suhu);
Blynk.virtualWrite(V1, kelembapan);
if (suhu < 27) {
// Aktifkan relay jika suhu kurang dari 27
digitalWrite(relay, HIGH);
} else if (suhu >= 30) {
// Matikan relay jika suhu lebih besar atau sama dengan 30
digitalWrite(relay, LOW);
}
if (kelembapan < 60) {
// Aktifkan relay jika kelembapan kurang dari 60%
digitalWrite(relay, HIGH);
} else if (kelembapan > 80) {
// Matikan relay jika kelembapan lebih besar dari 80%
digitalWrite(relay, LOW);
}
if (suhu < 27 && kelembapan < 60) {
// Aktifkan relay jika suhu kurang dari 27 dan kelembapan kurang dari 60%
digitalWrite(relay, HIGH);
} else {
// Matikan relay jika kedua kondisi tidak terpenuhi
digitalWrite(relay, LOW);
}
}
void setup() {
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, BacaKirimSensor);
pinMode(relay, OUTPUT);
}
void loop() {
Blynk.run();
timer.run();
}// Blynk app will call this function when the button state changes
BLYNK_WRITE(V2) {
int relayState = param.asInt(); // Get the state of the button (1 or 0)
// Turn the relay on (close the circuit) if the button is pressed, otherwise turn it off
digitalWrite(relayPin, relayState);}