#define BLYNK_TEMPLATE_ID "TMPL6h2LTZXVN"
#define BLYNK_TEMPLATE_NAME "Contoh"
#define BLYNK_AUTH_TOKEN "0DaLWDMa0g8jdpFXzM-Gf-BP9tKqJtnX"
#include <Wire.h>
#include <RTClib.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
RTC_DS1307 rtc;
const int relayPin = 26;
const int onHour = 17;
const int onMinute = 14;
const int offHour = 00;
const int offMinute = 1;
void setup() {
Serial.begin(115200);
Wire.begin();
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
if (!rtc.begin()) {
Serial.println("RTC tidak ditemukan!");
while (1);
}
if (!rtc.isrunning()) {
Serial.println("RTC belum berjalan, mengatur waktu sekarang...");
rtc.adjust(DateTime(F(__DATE__),F(__TIME__)));
}
}
void loop() {
Blynk.run();
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
if (now.hour() == onHour && now.minute() == onMinute) {
digitalWrite(relayPin, HIGH);
Blynk.virtualWrite(V3, 1);
Serial.println("Relay ON");
} else if (now.hour() == offHour && now.minute() == offMinute) {
digitalWrite(relayPin, LOW);
Blynk.virtualWrite(V3, 0);
Serial.println("Relay OFF");
}
delay(1000);
}
BLYNK_WRITE(V3) {
int pinValue = param.asInt();
if (pinValue == 1) {
digitalWrite(relayPin, HIGH);
Serial.println("Relay ON (Manual)");
} else {
digitalWrite(relayPin, LOW);
Serial.println("Relay OFF (Manual)");
}
}