#include <WiFi.h>
#include <FirebaseESP32.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define WIFI_SSID "D3C4"
#define WIFI_PASSWORD "1122334455"
#define FIREBASE_HOST ""
#define FIREBASE_AUTH ""
#define DHTPIN 15 // Pin data DHT yang terhubung ke ESP32 (misalnya GPIO 4)
#define DHTTYPE DHT22 // Jenis sensor DHT yang digunakan (DHT11, DHT21, atau DHT22)
DHT dht(DHTPIN, DHTTYPE);
#define RELAY_PIN 25 // Pin yang terhubung ke relay
#define KIPAS_PIN 14
#define MISTMAKER_PIN 27
#define PEMANAS_PIN 26
FirebaseData firebaseData;
int lcdColumns = 16;
int lcdRows = 2;
int Koneksi = 0;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
void setup() {
Serial.begin(115200);
lcd.init();
// Mulai koneksi WiFi
// WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
lcd.backlight();
delay(1000);
lcd.setCursor(0, 0);
lcd.print("Koneksi Jaringan");
delay(2000);
lcd.clear();
Serial.println("Koneksi WiFi...");
}
lcd.setCursor(4, 0);
lcd.print("Terhubung");
lcd.setCursor(3, 1);
lcd.print("Ke Jaringan");
delay(2000);
Serial.println("Tersambung ke WiFi");
lcd.clear();
// Mulai koneksi ke Firebase
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
// Inisialisasi sensor DHT
dht.begin();
// Inisialisasi pin relay sebagai OUTPUT
pinMode(RELAY_PIN, OUTPUT);
pinMode(KIPAS_PIN, OUTPUT);
pinMode(MISTMAKER_PIN, OUTPUT);
pinMode(PEMANAS_PIN, OUTPUT);
lcd.setCursor(4, 0);
lcd.print("Halo Bos");
delay(500);
lcd.clear();
}
void loop() {
spinner();
sensordht22();
// Kendali();
StatusOnline();
}
void sensordht22() {
float temperature = dht.readTemperature(); // Baca suhu dalam Celsius
float humidity = dht.readHumidity(); // Baca kelembaban
if (!isnan(temperature) && !isnan(humidity)) {
// Kirim data ke Firebase
Firebase.setFloat(firebaseData, "Suhu/suhu/isi", temperature);
Firebase.setFloat(firebaseData, "Kelembaban/lembab/isi", humidity);
Firebase.setBool(firebaseData, "StatusSensorDHT22", 1);
if (firebaseData.dataAvailable()) {
if (firebaseData.dataType() == "float") {
Serial.print("Data berhasil dikirim ke Firebase - Suhu: ");
Serial.print(temperature);
Serial.print(" °C, Kelembaban: ");
Serial.print(humidity);
Serial.println(" %");
}
} else {
Serial.println("Gagal mengirim data ke Firebase!");
}
} else {
Firebase.setBool(firebaseData, "StatusSensorDHT22", 0);
Serial.println("Sensor Suhu tidak terdeteksi");
}
lcd.setCursor(0, 0);
lcd.print("Suhu : ");
lcd.setCursor(0, 1);
lcd.print("Hmdty : ");
lcd.setCursor(8, 0);
lcd.print(String(temperature) + " C");
lcd.setCursor(8, 1);
lcd.print(String(humidity) + " %");
}
void Kendali() {
Firebase.getBool(firebaseData, "/Kontrol");
int modeValue = firebaseData.intData();
if (firebaseData.dataAvailable()) {
if (modeValue == 1) {
Serial.println("Manual Aktif");
Aktuator();
// AktuatorMistmaker();
// AktuatorPemanas();
} else if (modeValue == 0) {
Serial.println("Otomatis AKtif");
} else {
Serial.println("Nilai Mode Tidak Valid");
}
} else {
Serial.println("Gagal Baca Data");
}
}