#define BLYNK_TEMPLATE_ID "TMPL6LyVHWrnl"
#define BLYNK_TEMPLATE_NAME "RTTC"
#define BLYNK_AUTH_TOKEN "b23NFi47eGtuhhd_AbFGeseOr_zlvT7J"
#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 = 10;
const int onMinute = 6;
const int offHour = 10;
const int offMinute = 15;
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(V4,1);
Serial.println("Relay ON");
}else if (now.hour() == offHour && now.minute() == offMinute) {
digitalWrite(relayPin, LOW);
Blynk.virtualWrite(V4,0);
Serial.println("Relay OFF");
}
delay(1000);
}
BLYNK_WRITE(v4){
int pinValue = param.asInt();
if (pinValue == 1) {
digitalWrite(relayPin, HIGH);
Serial.println("Relay ON (Manual)");
} else {
digitalWrite(relayPin, LOW);
Serial.println("Relay OFF (Manual)");
}
}