#define BLYNK_TEMPLATE_ID "TMPL60HuROI7z"
#define BLYNK_TEMPLATE_NAME "RTC 2"
#define BLYNK_AUTH_TOKEN "hE8_inqF6zNKtlW4GACG6LEa_ptgVHIv"
#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 relay = 2;
const int onHour = 10;
const int onMinute = 35;
const int offHour = 10;
const int offMinute = 33;
void setup() {
Serial.begin(115200);
Wire.begin();
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
if (!rtc.begin()) {
Serial.println("RTC tidak ada");
while (1);
}
if (!rtc.isrunning()) {
Serial.println(("RTC belum berajalan, 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(relay, HIGH);
Serial.println("Relay Nyala");
Blynk.virtualWrite(V6, 1);
}else if (now.hour() == offHour && now.minute() == offMinute) {
digitalWrite(relay, LOW);
Serial.println("Relay Mati");
Blynk.virtualWrite(V6, 0);
}
delay(1000);
}
BLYNK_WRITE(V6) {
int pinValue =param.asInt();
if (pinValue == 1) {
digitalWrite(relay, HIGH);
Serial.println("ON (Manual)");
}else {
digitalWrite(relay, LOW);
Serial.println("OFF (Manual)");
}
}