#include <WiFi.h> // Library untuk WiFi (ESP32)
#include <Wire.h> // Library untuk komunikasi I2C
#include <LiquidCrystal_I2C.h> // Library untuk LCD I2C
#include <RTClib.h> // Library untuk Real-time Clock
#include <HTTPClient.h>
RTC_DS3231 rtc;
// Inisialisasi koneksi WiFi jika digunakan
const char* ssid = "Wokwi-Guest";
const char* password = "";
const char* webAppUrl = "https://script.google.com/macros/s/AKfycbwqZkoH4HELQ6uBpRkK3SXCufCJtv2NzC6--lPDS_wG-rf-iKjN-yKGUuJmhWJr9xzT/exec"; // URL web app dari langkah sebelumnya
LiquidCrystal_I2C lcd(0x27, 16, 2); // Mengakses alamat LCD
const int BalkonDanTerasRelay = 5; // Pin untuk relay lampu balkon dan teras pada ESP32 (misalnya GPIO 4)
const int RuangTengahDanKamarRelay = 4; // Pin untuk relay lampu ruang tengah dan kamar pada ESP32 (misalnya GPIO 5)
void setup() {
lcd.init(); // Reset LCD
lcd.backlight(); // Menyalakan background LCD
rtc.begin(); // Mulai Real-time Clock
pinMode(BalkonDanTerasRelay, OUTPUT);
pinMode(RuangTengahDanKamarRelay, OUTPUT);
// Set waktu RTC jika diperlukan (tahun, bulan, tanggal, jam, menit, detik)
rtc.adjust(DateTime(2023, 11, 8, 06, 0, 0));
Serial.begin(115200);
delay(100);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Belum Konek");
}
Serial.println("Connected to WiFi");
}
void loop() {
DateTime now = rtc.now();
lcd.setCursor(0, 0);
lcd.print("Tgl : ");
lcd.print(now.day());
lcd.print("/");
lcd.print(now.month());
lcd.print("/");
lcd.print(now.year());
lcd.setCursor(0, 1);
lcd.print("Jam : ");
lcd.print(now.hour());
lcd.print(":");
lcd.print(now.minute());
lcd.print(":");
lcd.print(now.second());
if (now.hour() >= 18 || now.hour() < 6) {
// Saat pukul 18.00 - 06.00
digitalWrite(BalkonDanTerasRelay, HIGH); // Nyalakan lampu Teras dan Balkon
} else {
digitalWrite(BalkonDanTerasRelay, LOW); // Matikan lampu Teras dan Balkon
}
if (now.hour() >= 17 || now.hour() < 6) {
// Saat pukul 17.00 - 06.00
digitalWrite(RuangTengahDanKamarRelay, HIGH); // Nyalakan lampu Ruang Tengah dan Kamar
} else {
digitalWrite(RuangTengahDanKamarRelay, LOW); // Matikan lampu Ruang Tengah dan Kamar
}
delay(1000); // Tunggu 1 detik sebelum mengambil waktu lagi
}