Code:
#include WiFi.h //add < before ----.h >
#include "time.h"
#include FirebaseESP32.h
#include addons/TokenHelper.h
#include addons/RTDBHelper.h
//watertemperature----------------------------------------------------
#include OneWire.h
#include DallasTemperature.h
#define ONE_WIRE_BUS 23
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
//RTC DS1302----------------------------------------------------------------------
#include LiquidCrystal_I2C.h
LiquidCrystal_I2C lcd(0x27, 20, 4);
//servo moter---------------------------------------------
#include ESP32Servo.h
Servo myservo;
const int OffHour1 = 11;
const int OffMin1 = 40;
const int OffSec1 = 30;
const int OnHour = 17;
const int OnMin = 41;
const int OnSec = 01;
const int OffHour = 17;
const int OffMin = 41;
const int OffSec = 11;
//-----------------------------------------------------------
FirebaseData firebaseData;
#define ssid "OPPOA54" //WiFi SSID
#define password "200031911" //WiFi Password
#define API_KEY "-------------------------"
#define FIREBASE_URL "---------------.firebaseio.com" //Your Firebase Project URL goes here without "http:" , "\" and "/"
#define FIREBASE_AUTH "-----------------------" //Your Firebase Auth Token
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long sendDataPrevMillis = 0;
bool signupOK = false;
unsigned long count = 0;
// define the GPIO connected with RELAYs and switches
#define RELAY1_PIN 32 //GPIO 16
#define RELAY2_PIN 33 //GPIO 5
#define RELAY3_PIN 25 //GPIO 4
#define RELAY4_PIN 26 //GPIO 0
#define servo_PIN 18
#define ButtonF 15
int cooler = 0, heater = 0, air = 0, waterp= 0 , feed= 0 ;
int val1=1,val2=1,val3=1,val4=1,valf=1;
int old_val1,old_val2,old_val3,old_val4,old_valf;
int state1 = LOW,state2 = LOW,state3 = LOW,state4 = LOW,statef = LOW;
const char* ntpServer = "kh.pool.ntp.org";
const long gmtOffset_sec = 0;
const int daylightOffset_sec = 25200;//GMT+7
void setup() {
Serial.begin(115200);
//servo-----------------------------------------------------------------
myservo.attach(servo_PIN);
//---------------------------------------------------------------------
WiFi.begin (ssid, password);
Serial.print("Connecting to Wi-Fi");
while(WiFi.status() != WL_CONNECTED){
Serial.print("."); delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);
config.api_key = API_KEY;
config.database_url = FIREBASE_URL;
if(Firebase.signUp(&config, &auth, "", "")){
Serial.println("signUp OK");
signupOK = true;
}else{
Serial.printf("%s\n", config.signer.signupError.message.c_str());
}
config.token_status_callback = tokenStatusCallback;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
//Firebase.setDoubRELAYigits(5);
pinMode(RELAY1_PIN, OUTPUT); digitalWrite(RELAY1_PIN, LOW);
pinMode(RELAY2_PIN, OUTPUT); digitalWrite(RELAY2_PIN, LOW);
pinMode(RELAY3_PIN, OUTPUT); digitalWrite(RELAY3_PIN, HIGH);
pinMode(RELAY4_PIN, OUTPUT); digitalWrite(RELAY4_PIN, HIGH);
pinMode(ButtonF, INPUT_PULLUP);
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
//printLocalTime();
//WiFi.disconnect(true);
//WiFi.mode(WIFI_OFF);
}
void loop() {
//waterTemperature--------------------------------------------
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
float datatempC = sensors.getTempCByIndex(0);
if(datatempC != DEVICE_DISCONNECTED_C){
Firebase.RTDB.setFloat(&firebaseData, "tempC_data", datatempC);
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(datatempC);
lcd.setCursor(0, 1);
lcd.print(datatempC);
}
else
{
Serial.println("Error: Could not read temperature data");
}
//relay--------------------------------------------------------------
if(Firebase.RTDB.getString(&firebaseData,"/C1")){
if (firebaseData.dataType() == "string") {
cooler = firebaseData.stringData().toInt();
}
}
if(datatempC >= 32){
digitalWrite(RELAY1_PIN, LOW);
}else if(cooler == 1){
digitalWrite(RELAY1_PIN, HIGH);
}else{
digitalWrite(RELAY1_PIN, LOW);
}
if(Firebase.RTDB.getString(&firebaseData,"/H1")){
if (firebaseData.dataType() == "string") {
heater = firebaseData.stringData().toInt();
}
}
if(datatempC < 30){
digitalWrite(RELAY2_PIN, LOW);
}else if(heater == 1){
digitalWrite(RELAY2_PIN, HIGH);
}else{
digitalWrite(RELAY2_PIN, LOW);
}
if(Firebase.RTDB.getString(&firebaseData,"/A1")){
if (firebaseData.dataType() == "string") {
air = firebaseData.stringData().toInt();
}
}
//Serial.printf("%d", cooler);
if(air == 1){
digitalWrite(RELAY3_PIN, HIGH);
}else{
digitalWrite(RELAY3_PIN, LOW);
}
if(Firebase.RTDB.getString(&firebaseData,"/W1")){
if (firebaseData.dataType() == "string") {
waterp = firebaseData.stringData().toInt();
}
}
if(waterp == 1){
digitalWrite(RELAY4_PIN, HIGH);
}else{
digitalWrite(RELAY4_PIN, LOW);
}
lcd.init();
lcd.backlight();
//delay(1000);
printLocalTime();
}
void printLocalTime(){
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Failed to obtain time");
return;
}
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
lcd.setCursor(6, 1);
lcd.print(&timeinfo,"%H:%M:%S");
char timeHour[3];
char timeMinutes[3];
char timeSeconds[3];
const int OffHour1 = 11;
const int OffMin1 = 40;
const int OffSec1 = 30;
const int OnHour = 17;
const int OnMin = 41;
const int OnSec = 01;
const int OffHour = 17;
const int OffMin = 41;
const int OffSec = 11;
strftime(timeHour,3,"%H",&timeinfo);
strftime(timeMinutes,3,"%M",&timeinfo);
strftime(timeSeconds,3,"%S",&timeinfo);
int h = atoi(timeHour);
int m = atoi(timeMinutes);
int s = atoi(timeSeconds);
if(Firebase.RTDB.getString(&firebaseData,"/F1")){
if (firebaseData.dataType() == "string") {
feed = firebaseData.stringData().toInt();
}
}
int state = digitalRead(ButtonF);
if(feed == 0 || state == LOW)
{
myservo.write(165);
}else{
myservo.write(15);
}
if(h == OffHour1 && m == OffMin1 && s == OffSec1)
{
myservo.write(15);
}
else if(h == OnHour && m == OnMin && s == OnSec)
{
myservo.write(165);
}
else if(h == OffHour && m == OffMin && s == OffSec)
{
myservo.write(15);
}
Serial.print(h);Serial.print(":"); Serial.print(m);Serial.print(":");Serial.println(s);
}

2 Comments
Love it 😀
ReplyDeleteLike it
ReplyDelete