#include <WiFi.h>
#include <DHT.h>
#include <FirebaseESP32.h>
// Data WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Firebase konfigurasi
FirebaseConfig config;
FirebaseAuth auth;
// Token Firebase
#define FIREBASE_HOST "https://esp8266-monitoring-dht11-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "AIzaSyDlkK8mPbALP0NKxCJuLq5jB2aNHv8Gi2I"
// Konfigurasi DHT
#define DHTPIN 13
#define DHTTYPE DHT22
// Pin LED
#define LED_PIN 2
FirebaseData fbdo;
DHT dht(DHTPIN, DHTTYPE);
void wifiConnection() {
Serial.print("Menghubungkan ke WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nWiFi Connected");
Serial.println("Local IP: " + String(WiFi.localIP()));
}
void firebaseInit() {
config.host = FIREBASE_HOST;
config.signer.tokens.legacy_token = FIREBASE_AUTH;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
Serial.println("Firebase Connected");
}
#define indikator_kipas 27
#define indikator_sprayer 26
#define indikator_heater 25
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
wifiConnection();
firebaseInit();
dht.begin();
pinMode(indikator_kipas, INPUT_PULLUP);
pinMode(indikator_sprayer, INPUT_PULLUP);
pinMode(indikator_heater, INPUT_PULLUP);
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Gagal membaca data dari sensor DHT!");
return;
}
if (Firebase.setFloat(fbdo, "Monitoring/Suhu", temperature)) {
Serial.print("Suhu berhasil dikirim: ");
Serial.println(temperature);
} else {
Serial.print("Gagal mengirim suhu: ");
Serial.println(fbdo.errorReason());
}
if (Firebase.setFloat(fbdo, "Monitoring/Kelembapan", humidity)) {
Serial.print("Kelembapan berhasil dikirim: ");
Serial.println(humidity);
} else {
Serial.print("Gagal mengirim kelembapan: ");
Serial.println(fbdo.errorReason());
}
int status_indikator_kipas = digitalRead(indikator_kipas);
int status_indikator_sprayer = digitalRead(indikator_sprayer);
int status_indikator_heater = digitalRead(indikator_heater);
//indikator_kipas
if (digitalRead(indikator_kipas) == 0) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
if (Firebase.setInt(fbdo, "Monitoring/indikator kipas", status_indikator_kipas)) {
Serial.print("Button kipas: ");
Serial.println(status_indikator_kipas);
} else {
Serial.print("Gagal mengirim Button_kipas: ");
Serial.println(fbdo.errorReason());
}
//indikator sprayer
if (digitalRead(indikator_sprayer) == 0) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
if (Firebase.setInt(fbdo, "Monitoring/indikator sprayer", status_indikator_sprayer)) {
Serial.print("Button sprayer: ");
Serial.println(status_indikator_sprayer);
} else {
Serial.print("Gagal mengirim Button_sprayer: ");
Serial.println(fbdo.errorReason());
}
//indikator heater
if (digitalRead(indikator_heater) == 0) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
if (Firebase.setInt(fbdo, "Monitoring/indikator heater", status_indikator_heater)) {
Serial.print("Button heater: ");
Serial.println(status_indikator_heater);
} else {
Serial.print("Gagal mengirim Button_heater: ");
Serial.println(fbdo.errorReason());
}
delay(500);
}