Advertisement
HonokaXD

NewMainLotus

Nov 8th, 2020 (edited)
1,310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.03 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <FirebaseArduino.h>
  3. #include <OneWire.h>
  4. #include <DallasTemperature.h>
  5.  
  6. OneWire oneWire(D1); //กรณีเปลี่ยนบอร์ดหรือเสียบคนละช่องให้แก้ตรงนี้ สำหรับ Sensor วัดอุณหภูมินํ้า
  7. DallasTemperature sensors(&oneWire);
  8.  
  9. #define Relay1 14 //กรณีเปลี่ยนบอร์ดหรือเสียบคนละช่องให้แก้ตรงนี้ สำหรับ OUTPUT1
  10. #define Relay2 12 //กรณีเปลี่ยนบอร์ดหรือเสียบคนละช่องให้แก้ตรงนี้ สำหรับ OUTPUT2
  11. //#define Relay3 D5
  12. //#define Relay4 D6
  13. #define FIREBASE_HOST "smart-lotus.firebaseio.com" //สำหรับเปลี่ยนชื่อที่อยู่ของ Firebase
  14. #define FIREBASE_AUTH "FWemdSyo2AYaXPDGVxf6MNuH0s19TUKesP1apetA" //สำหรับเปลี่ยน Secret Key ของ Firebase
  15.  
  16. int firebaseState = 0;
  17. int all_funcStatus = 0;
  18. int count = 0;
  19. int analogPin = A0; //กรณีเปลี่ยนบอร์ดหรือเสียบคนละช่องให้แก้ตรงนี้ สำหรับ Sensor วัดระดับนํ้า
  20. int waterLevel;
  21. int Mode;
  22. int val1;
  23. int val2;
  24. int autoCondition;
  25. float temp = 0;
  26. String condition;
  27.  
  28. const char *ssid = "iPhone"; //สำหรับเปลี่ยนชื่อของ WiFi
  29. const char *password = "khunpong30"; //สำหรับเปลี่ยนรหัสของ WiFi
  30.  
  31. void setup()
  32. {
  33.   // put your setup code here, to run once:
  34.     pinMode(Relay1, OUTPUT);
  35.     pinMode(Relay2, OUTPUT);
  36.     Serial.begin(115200);
  37.     Serial.println("Starting...");
  38.  
  39.     WiFi.begin(ssid, password);
  40.     while (WiFi.status() != WL_CONNECTED)
  41.     {
  42.         delay(250);
  43.         Serial.print(".");
  44.     }
  45.  
  46.     Serial.println("WiFi connected");
  47.     Serial.println("IP address: ");
  48.     Serial.println(WiFi.localIP());
  49.     firebaseSetup();
  50. }
  51.  
  52. void loop()
  53. {
  54.   // put your main code here, to run repeatedly:
  55.   delay(1000);
  56.   //val1 = Firebase.getString("/UsageValue/Valve").toInt();
  57.   //val2 = Firebase.getString("/UsageValue/Valve2").toInt();
  58.   //Mode = Firebase.getString("/Mode").toInt();
  59.   Serial.println("");
  60.   readingWaterlv();
  61.   sendTemps();
  62.   waterLvcondition();
  63.   modeStatus();
  64.   /*valValue();
  65.   valValue2();*/
  66. }
  67.  
  68. bool firebaseReconnect()
  69. {
  70.     Serial.println("Firebase Connection Failed");
  71.     while (Firebase.failed())
  72.     {
  73.         delay(250);
  74.         Serial.println("Trying to reconnect");
  75.         Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  76.         Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 1);
  77.         Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 1);
  78.         Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 1);
  79.         firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST");
  80.         firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1");
  81.         firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2");
  82.         delay(2000);
  83.         if (firebaseState == 1)
  84.         {
  85.             Serial.println("Firebase Connected");
  86.             Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 0);
  87.             Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 0);
  88.             Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 0);
  89.             return firebaseState;
  90.             exit;
  91.         }
  92.     }
  93.     if (firebaseState == 1)
  94.     {
  95.         Serial.println("Firebase Connected");
  96.         return firebaseState;
  97.         exit;
  98.     }
  99. }
  100.  
  101. bool firebaseConnecttioncheck()
  102. {
  103.     while (firebaseState == 0)
  104.     {
  105.         Serial.println("Firebase Connecting...");
  106.         delay(250);
  107.         Serial.print("...");
  108.         Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  109.         Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 1);
  110.         Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 1);
  111.         Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 1);
  112.         delay(1000);
  113.         firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST");
  114.         firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1");
  115.         firebaseState = Firebase.getInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2");
  116.         delay(1000);
  117.         if (firebaseState == 1)
  118.         {
  119.             Serial.println("Firebase Connected");
  120.             Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 0);
  121.             Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 0);
  122.             Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 0);
  123.             return firebaseState;
  124.             exit;
  125.         }
  126.         if (Firebase.failed())
  127.         {
  128.             firebaseReconnect();
  129.         }
  130.         exit;
  131.     }
  132.     if (firebaseState == 1)
  133.     {
  134.         Serial.println("Firebase Connected");
  135.         return firebaseState;
  136.         exit;
  137.     }
  138. }
  139.  
  140. bool functionCheck()
  141. {
  142.     if (firebaseState == 1 && all_funcStatus == 0)
  143.     {
  144.         delay(50);
  145.         while (all_funcStatus == 0)
  146.         {
  147.             count++;
  148.             Firebase.setInt("/FirebaseStatus/Firebasepass_condition_board", count);
  149.             if (count >= 5)
  150.             {
  151.                 Firebase.setString("/FirebaseStatus/Firebasepass_condition_board", "PASS");
  152.                 condition = Firebase.getString("/FirebaseStatus/Firebasepass_condition_board");
  153.                 if (condition == "PASS")
  154.                 {
  155.                     Serial.println("Board PASS");
  156.                     all_funcStatus = 1;
  157.                 }
  158.             }
  159.         }
  160.     }
  161. }
  162.  
  163. void firebaseSetup()
  164. {
  165.     firebaseConnecttioncheck();
  166.     Serial.println("Firebase Setup Start!");
  167.     Firebase.setString("/UsageValue/Mode", "0");
  168.     Firebase.setInt("/UsageValue/WaterTemp", 0);
  169.     Firebase.setString("/UsageValue/Valve", "0");
  170.     Firebase.setString("/UsageValue/Valve2", "0");
  171.     Firebase.setString("/UsageValue/WaterLV", "0");
  172.     Firebase.setString("/UsageValue/AutoCond", "0");
  173.     Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST", 0);
  174.     Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST1", 0);
  175.     Firebase.setInt("/FirebaseStatus/FirebaseST_Board/FirebaseST2", 0);
  176.     Firebase.setInt("/FirebaseStatus/Firebasepass_condition_board", 0);
  177.     Firebase.stream("/FirebaseStatus/FirebaseST_Board/FirebaseST");
  178.     Firebase.stream("/FirebaseStatus/FirebaseST_Board/FirebaseST1");
  179.     Firebase.stream("/FirebaseStatus/FirebaseST_Board/FirebaseST2");
  180.     Firebase.stream("/UsageValue/Valve");
  181.     Firebase.stream("/UsageValue/Valve2");
  182.     Firebase.stream("/UsageValue/Mode");
  183.     functionCheck();
  184. }
  185.  
  186. bool readingWaterlv()
  187. {
  188.     waterLevel = analogRead(analogPin);
  189.     //Serial.println(waterLevel);
  190. }
  191.  
  192. bool waterLvcondition()
  193. {
  194.     if (waterLevel >= 1024)
  195.     {
  196.         //Serial.println("Normal Level");
  197.         Firebase.setString("/UsageValue/WaterLV", "Normal");
  198.     }
  199.     if (waterLevel < 1024)
  200.     {
  201.         //Serial.println("Overflow Level");
  202.         Firebase.setString("/UsageValue/WaterLV", "Overflow");
  203.     }
  204. }
  205.  
  206. bool sendTemps()
  207. {
  208.     sensors.requestTemperatures();
  209.     temp = sensors.getTempCByIndex(0);
  210.     Firebase.setInt("/UsageValue/WaterTemp", temp);
  211.     //Serial.println(String("Water temperature = ") + temp + String(" C"));
  212. }
  213.  
  214. bool modeStatus()
  215. {
  216.     delay(1000);
  217.     Mode = Firebase.getString("/UsageValue/Mode").toInt();
  218.     //Serial.println(mode);
  219.  
  220.     if (Mode == 0)
  221.     {
  222.         //Serial.println("idle");
  223.         valIdle();
  224.     }
  225.     else if (Mode == 1)
  226.     {
  227.         Serial.println("manualmode enabled");
  228.         valMainwork();
  229.     }
  230.     else if (Mode == 2)
  231.     {
  232.         Serial.println("automode enabled");
  233.         autoVale();
  234.     }
  235. }
  236.  
  237. bool valValue()
  238. {
  239.     val1 = Firebase.getString("/UsageValue/Valve").toInt();
  240.     if (val1 == 1) //get 1 valve open
  241.     {
  242.         digitalWrite(Relay1, LOW);
  243.         Firebase.setString("/UsageValue/Valve", "1");
  244.         Serial.println("วาว์ลน้ำเข้า = กำลังเปิด");
  245.     }
  246.     else if (val1 == 0) //get  0 valve close
  247.     {
  248.         digitalWrite(Relay1, HIGH);
  249.         Firebase.setString("/UsageValue/Valve", "0");
  250.         Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
  251.     }
  252. }
  253.  
  254. bool valValue2()
  255. {
  256.     val2 = Firebase.getString("/UsageValue/Valve2").toInt();
  257.     if (val2 == 1) //get 1 valve open
  258.     {
  259.         digitalWrite(Relay2, LOW);
  260.         Firebase.setString("/UsageValue/Valve2", "1");
  261.         Serial.println("วาว์ลน้ำออก = กำลังเปิด");
  262.     }
  263.     else if (val2 == 0) //get  0 valve close
  264.     {
  265.         digitalWrite(Relay2, HIGH);
  266.         Firebase.setString("/UsageValue/Valve2", "0");
  267.         Serial.println("วาว์ลน้ำออก = กำลังปิด");
  268.     }
  269. }
  270.  
  271. bool autoVale()
  272. {
  273.     autoCondition = Firebase.getString("/UsageValue/AutoCond").toInt();
  274.     if (autoCondition == 1)
  275.     {
  276.         Serial.println("Con. by Temp");
  277.         if (temp >= 50)
  278.         {
  279.             Firebase.setString("/UsageValue/Valve", "1");
  280.             digitalWrite(Relay1, LOW);
  281.             Serial.println("วาว์ลน้ำเข้า = กำลังเปิด");
  282.             Firebase.setString("/UsageValue/Valve2", "0");
  283.             digitalWrite(Relay2, HIGH);
  284.             Serial.println("วาว์ลน้ำออก = กำลังปิด");
  285.         }
  286.         if (temp > 25 && temp < 49)
  287.         {
  288.             Firebase.setString("/UsageValue/Valve", "0");
  289.             digitalWrite(Relay1, HIGH);
  290.             Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
  291.             Firebase.setString("/UsageValue/Valve2", "0");
  292.             digitalWrite(Relay2, HIGH);
  293.             Serial.println("วาว์ลน้ำออก = กำลังปิด");
  294.         }
  295.         if (temp <= 25)
  296.         {
  297.             Firebase.setString("/UsageValue/Valve", "0");
  298.             digitalWrite(Relay1, HIGH);
  299.             Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
  300.             Firebase.setString("/UsageValue/Valve2", "1");
  301.             digitalWrite(Relay2, LOW);
  302.             Serial.println("วาว์ลน้ำออก = กำลังเปิด");
  303.         }
  304.     }
  305.     else if (autoCondition == 2)
  306.     {
  307.         Serial.println("Con. by WaterLV");
  308.         if (waterLevel < 1024)
  309.         {
  310.             Firebase.setString("/UsageValue/Valve", "0");
  311.             digitalWrite(Relay1, HIGH);
  312.             Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
  313.             Firebase.setString("/UsageValue/Valve2", "1");
  314.             digitalWrite(Relay2, LOW);
  315.             Serial.println("วาว์ลน้ำออก = กำลังเปิด");
  316.         }
  317.         if (waterLevel >= 1024)
  318.         {
  319.             Firebase.setString("/UsageValue/Valve", "0");
  320.             digitalWrite(Relay1, HIGH);
  321.             Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
  322.             Firebase.setString("/UsageValue/Valve2", "0");
  323.             digitalWrite(Relay2, HIGH);
  324.             Serial.println("วาว์ลน้ำออก = กำลังปิด");
  325.         }
  326.     }
  327. }
  328.  
  329. bool valMainwork()
  330. {
  331.     valValue();
  332.     valValue2();
  333. }
  334.  
  335. bool valIdle()
  336. {
  337.     Serial.println("In Idle");
  338.     Firebase.setString("/UsageValue/Valve", "0");
  339.     //val1 = 0;
  340.     //digitalWrite(Relay1, HIGH);
  341.     //Serial.println("วาว์ลน้ำเข้า = กำลังปิด");
  342.     Firebase.setString("/UsageValue/Valve2", "0");
  343.     //val2 = 0;
  344.     //digitalWrite(Relay2, HIGH);
  345.     //Serial.println("วาว์ลน้ำออก = กำลังปิด");
  346.     valMainwork();
  347. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement