#define BLYNK_TEMPLATE_ID "TMPL6gR_WLPWR"
#define BLYNK_TEMPLATE_NAME "ujian"
#define BLYNK_AUTH_TOKEN "Z-ZnH0k-xv5XgxYntn5tbZ2Sd31S24Nc"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
char auth[] = "Z-ZnH0k-xv5XgxYntn5tbZ2Sd31S24Nc";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 15 // Pin dimana sensor DHT11 terhubung
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#define LDR_PIN 34 // Pin ADC untuk sensor cahaya
#define SOUND_PIN 35 // Pin ADC untuk sensor suara
#define RELAY_LAMP_PIN 25 // Pin untuk relay lampu
#define RELAY_FAN_PIN 26 // Pin untuk relay kipas
#define BUZZER_PIN 27 // Pin untuk buzzer
BlynkTimer timer;
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
dht.begin();
pinMode(LDR_PIN, INPUT);
pinMode(SOUND_PIN, INPUT);
pinMode(RELAY_LAMP_PIN, OUTPUT);
pinMode(RELAY_FAN_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(RELAY_LAMP_PIN, LOW);
digitalWrite(RELAY_FAN_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
timer.setInterval(2000L, sendSensorData); // Kirim data sensor setiap 2 detik
}
void sendSensorData()
{
float t = dht.readTemperature();
int lightLevel = analogRead(LDR_PIN);
int soundLevel = analogRead(SOUND_PIN);
if (isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V1, t); // Kirim suhu ke Virtual Pin V1
Blynk.virtualWrite(V2, lightLevel); // Kirim tingkat cahaya ke Virtual Pin V2
Blynk.virtualWrite(V3, soundLevel); // Kirim tingkat suara ke Virtual Pin V3
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C, Light Level: ");
Serial.print(lightLevel);
Serial.print(", Sound Level: ");
Serial.println(soundLevel);
}
BLYNK_WRITE(V4)
{
int lampState = param.asInt();
digitalWrite(RELAY_LAMP_PIN, lampState);
if (lampState == 0) {
Serial.println("Lampu mati");
} else {
Serial.println("Lampu nyala");
}
}
BLYNK_WRITE(V5)
{
int fanState = param.asInt();
digitalWrite(RELAY_FAN_PIN, fanState);
if (fanState == 0) {
Serial.println("Kipas mati");
} else {
Serial.println("Kipas nyala");
}
}
BLYNK_WRITE(V6)
{
int alarmState = param.asInt();
digitalWrite(BUZZER_PIN, alarmState);
if (alarmState == 0) {
Serial.println("Alarm mati");
} else {
Serial.println("Alarm nyala");
}
}
void loop()
{
Blynk.run();
timer.run();
}