Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <FirebaseArduino.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- OneWire oneWire(D1); //กรณีเปลี่ยนบอร์ดหรือเสียบคนละช่องให้แก้ตรงนี้ สำหรับ Sensor วัดอุณหภูมินํ้า
- DallasTemperature sensors(&oneWire);
- #define Relay1 14 //กรณีเปลี่ยนบอร์ดหรือเสียบคนละช่องให้แก้ตรงนี้ สำหรับ OUTPUT1
- #define Relay2 12 //กรณีเปลี่ยนบอร์ดหรือเสียบคนละช่องให้แก้ตรงนี้ สำหรับ OUTPUT2
- //#define Relay3 D5
- //#define Relay4 D6
- #define FIREBASE_HOST "smart-lotus.firebaseio.com" //สำหรับเปลี่ยนชื่อที่อยู่ของ Firebase
- #define FIREBASE_AUTH "FWemdSyo2AYaXPDGVxf6MNuH0s19TUKesP1apetA" //สำหรับเปลี่ยน Secret Key ของ Firebase
- int firebaseState = 0;
- int all_funcStatus = 0;
- int count = 0;
- int analogPin = A0; //กรณีเปลี่ยนบอร์ดหรือเสียบคนละช่องให้แก้ตรงนี้ สำหรับ Sensor วัดระดับนํ้า
- int waterLevel;
- int Mode;
- int val1;
- int val2;
- int autoCondition;
- float temp = 0;
- String condition;
- const char *ssid = "iPhone"; //สำหรับเปลี่ยนชื่อของ WiFi
- const char *password = "khunpong30"; //สำหรับเปลี่ยนรหัสของ WiFi
- void setup()
- {
- // put your setup code here, to run once:
- pinMode(Relay1, OUTPUT);
- pinMode(Relay2, OUTPUT);
- Serial.begin(115200);
- Serial.println("Starting...");
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED)
- {
- delay(250);
- Serial.print(".");
- }
- Serial.println("WiFi connected");
- Serial.println("IP address: ");
- Serial.println(WiFi.localIP());
- firebaseSetup();
- }
- void loop()
- {
- // put your main code here, to run repeatedly:
- delay(1000);
- //val1 = Firebase.getString("/UsageValue/Valve").toInt();
- //val2 = Firebase.getString("/UsageValue/Valve2").toInt();
- //Mode = Firebase.getString("/Mode").toInt();
- Serial.println("");
- readingWaterlv();
- sendTemps();
- waterLvcondition();
- modeStatus();
- /*valValue();
- valValue2();*/
- }
- bool firebaseReconnect()
- {
- Serial.println("Firebase Connection Failed");
- while (Firebase.failed())
- {
- delay(250);
- Serial.println("Trying to reconnect");
- Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 1);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 1);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 1);
- firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST");
- firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1");
- firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2");
- delay(2000);
- if (firebaseState == 1)
- {
- Serial.println("Firebase Connected");
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 0);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 0);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 0);
- return firebaseState;
- exit;
- }
- }
- if (firebaseState == 1)
- {
- Serial.println("Firebase Connected");
- return firebaseState;
- exit;
- }
- }
- bool firebaseConnecttioncheck()
- {
- while (firebaseState == 0)
- {
- Serial.println("Firebase Connecting...");
- delay(250);
- Serial.print("...");
- Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 1);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 1);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 1);
- delay(1000);
- firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST");
- firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1");
- firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2");
- delay(1000);
- if (firebaseState == 1)
- {
- Serial.println("Firebase Connected");
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 0);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 0);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 0);
- return firebaseState;
- exit;
- }
- if (Firebase.failed())
- {
- firebaseReconnect();
- }
- exit;
- }
- if (firebaseState == 1)
- {
- Serial.println("Firebase Connected");
- return firebaseState;
- exit;
- }
- }
- bool functionCheck()
- {
- if (firebaseState == 1 && all_funcStatus == 0)
- {
- delay(50);
- while (all_funcStatus == 0)
- {
- count++;
- Firebase.setInt("/FirebaseStatus/Firebasepass_condition_board", count);
- if (count >= 5)
- {
- Firebase.setString("/FirebaseStatus/Firebasepass_condition_board", "PASS");
- condition = Firebase.getString("/FirebaseStatus/Firebasepass_condition_board");
- if (condition == "PASS")
- {
- Serial.println("Board PASS");
- all_funcStatus = 1;
- }
- }
- }
- }
- }
- void firebaseSetup()
- {
- firebaseConnecttioncheck();
- Serial.println("Firebase Setup Start!");
- Firebase.setString("/UsageValue/Mode", "0");
- Firebase.setInt("/UsageValue/WaterTemp", 0);
- Firebase.setString("/UsageValue/Valve", "0");
- Firebase.setString("/UsageValue/Valve2", "0");
- Firebase.setString("/UsageValue/WaterLV", "0");
- Firebase.setString("/UsageValue/AutoCond", "0");
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 0);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 0);
- Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 0);
- Firebase.setInt("/FirebaseStatus/Firebasepass_condition_board", 0);
- Firebase.stream("/FirebaseStatus/FirebaseST_Board/FirebaseST");
- Firebase.stream("/FirebaseStatus/FirebaseST_Board/FirebaseST1");
- Firebase.stream("/FirebaseStatus/FirebaseST_Board/FirebaseST2");
- Firebase.stream("/UsageValue/Valve");
- Firebase.stream("/UsageValue/Valve2");
- Firebase.stream("/UsageValue/Mode");
- functionCheck();
- }
- bool readingWaterlv()
- {
- waterLevel = analogRead(analogPin);
- //Serial.println(waterLevel);
- }
- bool waterLvcondition()
- {
- if (waterLevel >= 1024)
- {
- //Serial.println("Normal Level");
- Firebase.setString("/UsageValue/WaterLV", "Normal");
- }
- if (waterLevel < 1024)
- {
- //Serial.println("Overflow Level");
- Firebase.setString("/UsageValue/WaterLV", "Overflow");
- }
- }
- bool sendTemps()
- {
- sensors.requestTemperatures();
- temp = sensors.getTempCByIndex(0);
- Firebase.setInt("/UsageValue/WaterTemp", temp);
- //Serial.println(String("Water temperature = ") + temp + String(" C"));
- }
- bool modeStatus()
- {
- delay(1000);
- Mode = Firebase.getString("/UsageValue/Mode").toInt();
- //Serial.println(mode);
- if (Mode == 0)
- {
- //Serial.println("idle");
- valIdle();
- }
- else if (Mode == 1)
- {
- Serial.println("manualmode enabled");
- valMainwork();
- }
- else if (Mode == 2)
- {
- Serial.println("automode enabled");
- autoVale();
- }
- }
- bool valValue()
- {
- val1 = Firebase.getString("/UsageValue/Valve").toInt();
- if (val1 == 1) //get 1 valve open
- {
- digitalWrite(Relay1, LOW);
- Firebase.setString("/UsageValue/Valve", "1");
- Serial.println("วาว์ลน้ำเข้า = กำลังเปิด");
- }
- else if (val1 == 0) //get 0 valve close
- {
- digitalWrite(Relay1, HIGH);
- Firebase.setString("/UsageValue/Valve", "0");
- Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
- }
- }
- bool valValue2()
- {
- val2 = Firebase.getString("/UsageValue/Valve2").toInt();
- if (val2 == 1) //get 1 valve open
- {
- digitalWrite(Relay2, LOW);
- Firebase.setString("/UsageValue/Valve2", "1");
- Serial.println("วาว์ลน้ำออก = กำลังเปิด");
- }
- else if (val2 == 0) //get 0 valve close
- {
- digitalWrite(Relay2, HIGH);
- Firebase.setString("/UsageValue/Valve2", "0");
- Serial.println("วาว์ลน้ำออก = กำลังปิด");
- }
- }
- bool autoVale()
- {
- autoCondition = Firebase.getString("/UsageValue/AutoCond").toInt();
- if (autoCondition == 1)
- {
- Serial.println("Con. by Temp");
- if (temp >= 50)
- {
- Firebase.setString("/UsageValue/Valve", "1");
- digitalWrite(Relay1, LOW);
- Serial.println("วาว์ลน้ำเข้า = กำลังเปิด");
- Firebase.setString("/UsageValue/Valve2", "0");
- digitalWrite(Relay2, HIGH);
- Serial.println("วาว์ลน้ำออก = กำลังปิด");
- }
- if (temp > 25 && temp < 49)
- {
- Firebase.setString("/UsageValue/Valve", "0");
- digitalWrite(Relay1, HIGH);
- Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
- Firebase.setString("/UsageValue/Valve2", "0");
- digitalWrite(Relay2, HIGH);
- Serial.println("วาว์ลน้ำออก = กำลังปิด");
- }
- if (temp <= 25)
- {
- Firebase.setString("/UsageValue/Valve", "0");
- digitalWrite(Relay1, HIGH);
- Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
- Firebase.setString("/UsageValue/Valve2", "1");
- digitalWrite(Relay2, LOW);
- Serial.println("วาว์ลน้ำออก = กำลังเปิด");
- }
- }
- else if (autoCondition == 2)
- {
- Serial.println("Con. by WaterLV");
- if (waterLevel < 1024)
- {
- Firebase.setString("/UsageValue/Valve", "0");
- digitalWrite(Relay1, HIGH);
- Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
- Firebase.setString("/UsageValue/Valve2", "1");
- digitalWrite(Relay2, LOW);
- Serial.println("วาว์ลน้ำออก = กำลังเปิด");
- }
- if (waterLevel >= 1024)
- {
- Firebase.setString("/UsageValue/Valve", "0");
- digitalWrite(Relay1, HIGH);
- Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
- Firebase.setString("/UsageValue/Valve2", "0");
- digitalWrite(Relay2, HIGH);
- Serial.println("วาว์ลน้ำออก = กำลังปิด");
- }
- }
- }
- bool valMainwork()
- {
- valValue();
- valValue2();
- }
- bool valIdle()
- {
- Serial.println("In Idle");
- Firebase.setString("/UsageValue/Valve", "0");
- //val1 = 0;
- //digitalWrite(Relay1, HIGH);
- //Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
- Firebase.setString("/UsageValue/Valve2", "0");
- //val2 = 0;
- //digitalWrite(Relay2, HIGH);
- //Serial.println("วาว์ลน้ำออก = กำลังปิด");
- valMainwork();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement