#define BLYNK_TEMPLATE_ID "TMPL6Api8N08L"
#define BLYNK_TEMPLATE_NAME "SmartHomeIOT"
#define BLYNK_AUTH_TOKEN "rgZTP5uz8QZbmkePQPLcMYsRMqnYpRDN"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// Konfigurasi untuk sensor Ultrasonik, LED, dan LDR
#define RED_LED_PIN 27
#define GREEN_LED_PIN 14
#define LDR_PIN 34
#define LED_PIN 2
// Konfigurasi untuk DHT22 dan LED AC
#define DHTPIN 4
#define DHTTYPE DHT22
#define AC_Relay 5
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
bool acStatus = false;
unsigned long previousMillis = 0;
const long interval = 500;
void readLDR() {
int ldrValue = analogRead(LDR_PIN);
int normalizedLDR = map(ldrValue, 0, 4095, 0, 100);
Blynk.virtualWrite(V3, normalizedLDR);
Serial.print("Nilai LDR: ");
Serial.println(String(normalizedLDR) + " %");
}
BLYNK_WRITE(V4) {
int pinValue = param.asInt();
analogWrite(LED_PIN, pinValue);
}
void updateDHTSensor() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
int humidity = dht.readHumidity();
int temperature = dht.readTemperature();
Blynk.virtualWrite(V6, humidity);
Blynk.virtualWrite(V7, temperature);
Serial.println("Suhu Ruangan: " + String(temperature) + " °C");
Serial.println("Kelembaban Ruangan: " + String(humidity) + " %");
}
}
BLYNK_WRITE(V5) {
acStatus = param.asInt();
digitalWrite(AC_Relay, acStatus ? HIGH : LOW);
Serial.print("AC Status: ");
Serial.println(acStatus ? "Hidup" : "Mati");
}
void setup() {
// Konfigurasi pin untuk ultrasonic, LED, dan LDR
pinMode(RED_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(LDR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
// Konfigurasi pin untuk DHT22 dan LED AC
dht.begin();
pinMode(AC_Relay, OUTPUT);
digitalWrite(AC_Relay, acStatus ? HIGH : LOW);
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, readLDR);
}
void loop() {
Blynk.run();
timer.run();
updateDHTSensor();
}