// Library yang dibutuhkan
#include <FirebaseESP32.h>
String data;
#define API_KEY "REPLACE_WITH_YOUR_FIREBASE_PROJECT_API_KEY"
// Insert RTDB URLefine the RTDB URL */
#define DATABASE_URL "REPLACE_WITH_YOUR_FIREBASE_DATABASE_URL"
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long lastTime = 0;
unsigned long timerDelay = 5000;
FirebaseData firebaseData;// mendeklarasikan objek data dari FirebaseESP8266
FirebaseData c,d,f;//iniasial nilai c dan d
long I, kekeruhan, PH_Output, Temperaturet, Nilai_DO;
// String thingSpeakAddress = "api.thingspeak.com";
// String writeAPIKey;
// String tsfield1Name;
// String request_string;
// String value1;
// String value2;
// String value3;
// SUHU
#include "DHT.h"
#define DHTPIN 23
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// JARAK
const int TRIG_PIN = 13;
const int ECHO_PIN = 12;
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.3937601
long duration;
float distanceCm, distanceInch;
// KEKERUHAN
const int pinkekeruhan = 34;
// PH
const int pinph = 35;
#define LED 2
#define LED2 4
const int buzzer = 33;
void setup(){
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(buzzer, OUTPUT);
//Serial.println(F("DHTxx test"));
pinMode(pinkekeruhan, INPUT);
pinMode(pinph, INPUT);
dht.begin();
Firebase.begin("https://aquarium-34642-default-rtdb.firebaseio.com//", "tTPDhpPADhnVm7LsnnBeLhB5XvlavEsK3Hz5jl2N");
Serial2.begin(9600);
}
void loop(){
digitalWrite(buzzer, LOW);
digitalWrite(LED2, LOW);
// kekeruhan Air
int potvalue = analogRead(pinkekeruhan);
float kekeruhan = map(potvalue, 0, 4095, 1, 100);
Serial.print("Kekeruhan Air: ");
Serial.print(kekeruhan);
Serial.print(" | ");
// Suhu Air
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return; }
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Suhu Air: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(" | ");
//Ketinggian Air
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distanceCm = duration * SOUND_SPEED/2;
distanceInch = distanceCm * CM_TO_INCH;
Serial.print("Tinggi Air: ");
Serial.print(distanceCm);
Serial.print("cm ");
Serial.print(" | ");
// Serial.print("Distance (inch) : ");
// Serial.println(distanceInch);
//PH AIR
int potValue = analogRead(pinph);
float ph = map(potValue, 0, 4095, 1, 15);
Serial.print("PH: ");
Serial.println(ph);
if ((ph < 4 || t > 8) && distanceCm > 250) {tone(buzzer, HIGH);
}else{ digitalWrite(buzzer, LOW);
}
if ( (t < 20 || t > 33) && kekeruhan > 50) {digitalWrite(LED2, HIGH);
}else{ digitalWrite(LED2, LOW);
}
delay(1000);
Firebase.setFloat(firebaseData, "/Hasil_Pembacaan/Kekeruhan", kekeruhan);//mengirim nilai kekeruhan ke firebase
Firebase.setFloat(firebaseData, "/Hasil_Pembacaan/pH",t);//mengirim nilai pH ke firebase
Firebase.setFloat(firebaseData, "/Hasil_Pembacaan/suhu",distanceCm);//mengirim nilai pH ke firebase
Firebase.setFloat(firebaseData, "/Hasil_Pembacaan/DO",ph);//mengirim nilai DO ke firebase
// Firebase.getString(f, "/Hasil_Pembacaan/KONTROL");//
// value1 = String(Temperaturet)+" // "+String(kekeruhan);
// value2 = String(PH_Output)+" // "+String(I);
// value3 = String(Nilai_DO);
// sendDataToSheet();
// Serial.println("Suhu: "+String(Temperaturet)+" C\t|| "+"Salinitas: "+String(I)+" ppt\t|| "+"Kekeruhan: "+String(kekeruhan)+" NTU || "+"pH: "+String(PH_Output)+" pH\t ||" + "DO:\t" + String(readDO(ADC_Voltage, Temperaturet)/t) + "\t "+"mg/L" +"\t"); // Menampilkan kepada serial monitor
// if (f.stringData()=="1")
// {
// Serial.println("OTOMATIS KONTROL");
// if (Firebase.setFloat(firebaseData, "/Hasil_Pembacaan/DO",Nilai_DO))//menampilkan suhu pada firebase
// {
// if (Nilai_DO<=2)
// {
// Serial.println("Relay1 ON");
// digitalWrite(relay1, HIGH);
// Firebase.setString(firebaseData, "/Hasil_Pembacaan/relay1", a);//menampilkan ON pada firebase//string "kata"
// }
// else
// {
// Serial.println("Relay1 OFF");
// digitalWrite(relay1, LOW);
// Firebase.setString(firebaseData, "/Hasil_Pembacaan/relay1", b);
// }
// }
// if (kekeruhan>=17.26|PH_Output<=7|I<10|Temperaturet>32)//gerbang OR dari 3 sensor
// {
// Serial.println("Relay3 ON");
// digitalWrite(relay3, HIGH);
// Firebase.setString(firebaseData, "/Hasil_Pembacaan/relay3", a);//menampilkan ON pada firebase//string "kata"
// }
// else //gerbang OR dari 3 sensor
// {
// Serial.println("Relay3 OFF");
// digitalWrite(relay3, LOW);
// Firebase.setString(firebaseData, "/Hasil_Pembacaan/relay3", b);
// }
// }
// else if(f.stringData()=="0")
// {
// Serial.println("MANUAL KONTROL");
// if(Firebase.getString(c, "/Hasil_Pembacaan/Manual_airpump"))//membaca nilai pada Manual_airpump)
// {
// if(c.stringData()=="1")
// {
// Serial.println("Relay1 ON");
// digitalWrite(relay1, HIGH);
// }
// else if(c.stringData() == "0")
// {
// Serial.println("Relay1 OFF");
// digitalWrite(relay1, LOW);
// }
// }
// if(Firebase.getString(d, "/Hasil_Pembacaan/Manual_waterpump"))//membaca nilai pada Manual_airpump)
// {
// if(d.stringData()=="1")
// {
// Serial.println("Relay3 ON");
// digitalWrite(relay3, HIGH);
// }
// else if(d.stringData() == "0")
// {
// Serial.println("Relay3 OFF");
// digitalWrite(relay3, LOW);
// }
// }
// }
// else
// {
// Serial.println("Suhu tidak terkirim");
// Serial.println("Karena: " + firebaseData.errorReason());
// }
// kirim_thingspeak(Temperaturet, PH_Output, kekeruhan, Nilai_DO, I);
// delay(10);
// }
// void kirim_thingspeak(float SUHU, float PH, float KEKERUHAN, float DO, int Salinity)
// {
// if (client.connect("api.thingspeak.com", 80)) {
// request_string = "/update?";
// request_string += "key=";
// request_string += "FC0CLDNVWY0DCMZZ";//VSQ1UVHKJEMKCHWW
// request_string += "&";
// request_string += "field1";
// request_string += "=";
// request_string += SUHU;
// request_string += "&";
// request_string += "field2";
// request_string += "=";
// request_string += PH;
// request_string += "&";
// request_string += "field3";
// request_string += "=";
// request_string += KEKERUHAN;
// request_string += "&";
// request_string += "field4";
// request_string += "=";
// request_string += DO;
// request_string += "&";
// request_string += "field5";
// request_string += "=";
// request_string += Salinity;
// //Serial.println(String("GET ") + request_string + " HTTP/1.1\r\n" +"Host: " + thingSpeakAddress + "\r\n" +"Connection: close\r\n\r\n");
// client.print(String("GET ") + request_string + " HTTP/1.1\r\n" + "Host: " + thingSpeakAddress + "\r\n" + "Connection: close\r\n\r\n");
// unsigned long timeout = millis();
// while (client.available() == 0) {
// if (millis() - timeout > 5000) {
// Serial.println(">>> Client Timeout !");
// client.stop();
// return;
// }
// }
// while (client.available()) {
// String line = client.readStringUntil('\r');
// Serial.print(line);
// }
// Serial.println();
// Serial.println("closing connection");
// }
delay(10000);
}