// untuk firebase
#include <Arduino.h>
#include <WiFi.h>
// #include <FirebaseESP32.h>
// #include "addons/TokenHelper.h"
// #include "addons/RTDBHelper.h"
// untuk wokwi
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <DHT.h>
// add credential
// #define WIFI_SSID ""
// #define WIFI_PASSWORD ""
// #define API_KEY "AIzaSyBRS2GWYraVW0XVHibGg5EQe1zx7r-5fWU"
// #define DATABASE_URL "https://hantu-815c4-default-rtdb.asia-southeast1.firebasedatabase.app"
// #define USER_EMAIL ""
// #define USER_PASSWORD ""
// // masuk Firebase
// FirebaseData fbdo;
// FirebaseAuth auth;
// FirebaseConfig config;
// bool signupOK = false;
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN,DHTTYPE);
const int buzzerPin = 21; // Pin yang sesuai untuk buzzer
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;
#define LED 2
int jam, menit, detik, hari, tanggal, bulan, tahun;
char temp[33];
char namahari[7][7] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
int kelembaban;
float suhu;
void setup() {
// Serial.begin(9600); // Tambahkan Serial untuk debugging
pinMode(LED, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// WiFi.begin(WIFI_SSID,WIFI_PASSWORD);
// Serial.print("Menghubungkan ke WiFi");
// while (WiFi.status() != WL_CONNECTED) {
// Serial.print(".");
// delay(300);
// }
// Serial.println();
// Serial.print("Terhubung ke WiFi");
// Serial.println(WiFi.localIP());
// Serial.println();
// config.api_key = API_KEY;
// auth.user.email = USER_EMAIL;
// auth.user.password = USER_PASSWORD;
// config.database_url = DATABASE_URL;
// if (Firebase.signUp(&config, &auth, "","")) {
// Serial.println("ok");
// signupOK = true;
// } else {
// Serial.printf("%s\n", config.signer.signupError.message);
// }
// config.token_status_callback = tokenStatusCallback;
// Firebase.begin(&config,&auth);
// Firebase.reconnectWiFi(True);
lcd.backlight();
lcd.init();
lcd.setCursor(0, 0);
lcd.print("BARISANJUANG");
if (!rtc.begin()) {
// Serial.println("Couldn't find RTC");
while (1);
}
rtc.adjust(DateTime(2024, 7, 24, 8, 28, 50));
delay(2000);
lcd.clear();
dht.begin();
}
void loop() {
// nada buzzer
// panggil sensor DHT
kelembaban = dht.readHumidity();
suhu = dht.readTemperature();
DateTime now = rtc.now();
jam = now.hour();
menit = now.minute();
detik = now.second();
tanggal = now.day();
bulan = now.month();
tahun = now.year();
hari = now.dayOfTheWeek();
// Serial.print("Waktu sekarang: ");
// Serial.print(jam);
// Serial.print(":");
// Serial.print(menit);
// Serial.print(":");
// Serial.println(detik);
// ASU ASU ASU
// Debugging LED status
if (jam == 8 && menit == 29 && detik >= 0 && detik <=20) {
digitalWrite(LED, HIGH);
// Serial.println("LED menyala");
} else {
digitalWrite(LED, LOW);
}
// if (jam == 8 && menit == 29 && detik == 20) {
// digitalWrite(LED, LOW);
// // Serial.println("LED mati");
// }
// else {
// digitalWrite(LED, LOW);
// Serial.println("Kondisi tidak terpenuhi untuk menyalakan/mematikan LED");
// }
sprintf(temp, "JAM %02d:%02d:%02d WIB", jam, menit, detik);
lcd.setCursor(0, 0);
lcd.print(temp);
if(detik < 30) {
sprintf(temp, "%s, %02d-%02d-%0d", namahari[hari], tanggal, bulan, tahun);
lcd.setCursor(0, 1);
lcd.print(temp);
}
else {
lcd.setCursor(0,1);
lcd.print("T="); lcd.print(suhu,1); lcd.write(0xdf); lcd.print("C ");
lcd.print("H="); lcd.print(kelembaban); lcd.print("% ");
}
// if(Firebase.ready() && signupOK ) {
// Firebase.setIntAsync(fbdo,"/SUHU", suhu);
// Firebase.setIntAsync(fbdo,"/KELEMBABAN", kelembaban);
// if(Firebase.RTDB.getInt(&fbdo,"/LED")) {
// if(fbdo.dataType() == "int") {
// int a = fbdo.intData();
// Serial.print(a);
// if (a == 1) {
// digitalWrite(LED, HIGH);
// }else {
// digitalWrite(LED, LOW);
// }
// }
// }
// else {
// Serial.println(fbdo.errorReason());
// }
// }
}