#include <WiFi.h>
#include <FirebaseESP32.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <ESP32Servo.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define API_KEY "AIzaSyAbA9SCKTYmgb2TBi5aPRDIG0x2nVJx7ss"
#define DATABASE_URL "https://aquarium-web-default-rtdb.firebaseio.com/"
OneWire oneWire(4);
DallasTemperature sensors(&oneWire);
Servo feederServo;
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
void setup() {
Serial.begin(115200);
sensors.begin();
feederServo.attach(18);
feederServo.write(0);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
config.api_key = API_KEY;
config.database_url = DATABASE_URL;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
Serial.println("\nSystem Ready!");
}
void loop() {
sensors.requestTemperatures();
float currentTemp = sensors.getTempCByIndex(0);
if (currentTemp != DEVICE_DISCONNECTED_C) {
Firebase.setFloat(fbdo, "/status/temperature", currentTemp);
}
if (Firebase.getBool(fbdo, "/controls/feed_now")) {
if (fbdo.boolData() == true) {
feederServo.write(90);
delay(1500);
feederServo.write(0);
Firebase.setBool(fbdo, "/controls/feed_now", false);
}
}
delay(10000);
}