Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* New with XML */
- #include <Arduino.h>
- #include <Wire.h>
- #include <ESP8266WiFi.h>
- #include <DNSServer.h>
- #include <ESP8266WebServer.h>
- #include <WiFiManager.h>
- #include <ArduinoJson.h>
- #include <FS.h>
- #include <LittleFS.h>
- #include "Adafruit_MCP23017.h"
- Adafruit_MCP23017 mcp;
- #define S0 D0 /* Assign Multiplexer pin S0 connect to pin D0 of NodeMCU */
- #define S3 D3 /* Assign Multiplexer pin S3 connect to pin D3 of NodeMCU */
- #define S1 D7 /* Assign Multiplexer pin S1 connect to pin D1 of NodeMCU */
- #define S2 D8 /* Assign Multiplexer pin S2 connect to pin D2 of NodeMCU */
- #define SIG A0 /* Assign SIG pin Analog output for all Multiplexer's channels to A0 of NodeMCU */
- #define PUMP D6
- #define solenoid0 0 //Connect Solenoid0 for Sens0 GPA0 on mcp
- #define solenoid1 1 //Connect Solenoid1 for Sens1 GPA1 on mcp
- #define solenoid2 2 //Connect Solenoid2 for Sens2 GPA2 on mcp
- #define solenoid3 3 //Connect Solenoid3 for Sens3 GPA3 on mcp
- #define solenoid4 4 //Connect Solenoid4 for Sens4 GPA4 on mcp
- #define solenoid5 5 //Connect Solenoid5 for Sens5 GPA5 on mcp
- #define solenoid6 6 //Connect Solenoid6 for Sens6 GPA6 on mcp
- #define solenoid7 7 //Connect Solenoid7 for Sens7 GPB0 on mcp
- #define solenoid8 8 //Connect Solenoid8 for Sens8 GPB1 on mcp
- #define solenoid9 9 //Connect Solenoid9 for Sens9 GPB2 on mcp
- #define solenoid10 10 //Connect Solenoid10 for Sens10 GPB3 on mcp
- #define solenoid11 11 //Connect Solenoid11 for Sens11 GPB4 on mcp
- #define solenoid12 12 //Connect Solenoid11 for Sens11 GPB5 on mcp
- #define solenoid13 13 //Connect Solenoid11 for Sens11 GPB6 on mcp
- #define solenoid14 14 //Connect Solenoid11 for Sens11 GPB7 on mcp
- #define solenoid15 15 //Connect Solenoid11 for Sens11 GPB8 on mcp
- int sensor[15];
- /* Assign the name "sensor[0]" as analog output value from Channel C0 */
- /* Assign the name "sensor[1]" as analog output value from Channel C1 */
- /* Assign the name "sensor[2]" as analog output value from Channel C2 */
- /* Assign the name "sensor[3]" as analog output value from Channel C3 */
- /* Assign the name "sensor[4]" as analog output value from Channel C4 */
- /* Assign the name "sensor[5]" as analog output value from Channel C5 */
- /* Assign the name "sensor[6]" as analog output value from Channel C6 */
- /* Assign the name "sensor[7]" as analog output value from Channel C7 */
- /* Assign the name "sensor[8]" as analog output value from Channel C8 */
- /* Assign the name "sensor[9]" as analog output value from Channel C9 */
- /* Assign the name "sensor[10]" as analog output value from Channel C10 */
- /* Assign the name "sensor[11]" as analog output value from Channel C11 */
- /* Assign the name "sensor[12]" as analog output value from Channel C12 */
- /* Assign the name "sensor[13]" as analog output value from Channel C13 */
- /* Assign the name "sensor[14]" as analog output value from Channel C14 */
- /* Assign the name "sensor[15]" as analog output value from Channel C15 */
- String pumpstate = "OFF"; //pump for Status ON/OFF
- String solenoidState0 = "OFF"; //Solenoid0 for Status ON/OFF
- String solenoidState1 = "OFF"; //Solenoid1 for Status ON/OFF
- String solenoidState2 = "OFF"; //Solenoid2 for Status ON/OFF
- String solenoidState3 = "OFF"; //Solenoid3 for Status ON/OFF
- String solenoidState4 = "OFF"; //Solenoid4 for Status ON/OFF
- String solenoidState5 = "OFF"; //Solenoid5 for Status ON/OFF
- String solenoidState6 = "OFF"; //Solenoid6 for Status ON/OFF
- String solenoidState7 = "OFF"; //Solenoid7 for Status ON/OFF
- String solenoidState8 = "OFF"; //Solenoid8 for Status ON/OFF
- String solenoidState9 = "OFF"; //Solenoid9 for Status ON/OFF
- String solenoidState10 = "OFF"; //Solenoid10 for Status ON/OFF
- String solenoidState11 = "OFF"; //Solenoid11 for Status ON/OFF
- String solenoidState12 = "OFF"; //Solenoid11 for Status ON/OFF
- String solenoidState13 = "OFF"; //Solenoid11 for Status ON/OFF
- String solenoidState14 = "OFF"; //Solenoid11 for Status ON/OFF
- String solenoidState15 = "OFF"; //Solenoid11 for Status ON/OFF
- String XML; // pour envoyer le code XML a ma page web
- //User input from WebForm
- int Usermax0,Usermax1,Usermax2,Usermax3,Usermax4,Usermax5,Usermax6,Usermax7,Usermax8,Usermax9,Usermax10,Usermax11,Usermax12,Usermax13,Usermax14,Usermax15;
- int Usermin0,Usermin1,Usermin2,Usermin3,Usermin4,Usermin5,Usermin6,Usermin7,Usermin8,Usermin9,Usermin10,Usermin11,Usermin12,Usermin13,Usermin14,Usermin15;
- ESP8266WebServer server(80);
- #include "html.h"
- #include "readSensor.h"
- #include "jsonconfig1.h"
- void handleRoot(){
- server.send_P(200, "text/html", INDEX_HTML); //Send web page
- }
- void handleReadUserPlantSelected(){
- // Read Value from the User selected from the Html WebForm to String
- if(server.arg("S00max").toInt() != 0) {Usermax0 = server.arg("S00max").toInt();}
- if(server.arg("S00min").toInt() != 0) {Usermin0 = server.arg("S00min").toInt();}
- if(server.arg("S01max").toInt() != 0) {Usermax1 = server.arg("S01max").toInt();}
- if(server.arg("S01min").toInt() != 0) {Usermin1 = server.arg("S01min").toInt();}
- if(server.arg("S02max").toInt() != 0) {Usermax2 = server.arg("S02max").toInt();}
- if(server.arg("S02min").toInt() != 0) {Usermin2 = server.arg("S02min").toInt();}
- if(server.arg("S03max").toInt() != 0) {Usermax3 = server.arg("S03max").toInt();}
- if(server.arg("S03min").toInt() != 0) {Usermin3 = server.arg("S03min").toInt();}
- if(server.arg("S04max").toInt() != 0) {Usermax4 = server.arg("S04max").toInt();}
- if(server.arg("S04min").toInt() != 0) {Usermin4 = server.arg("S04min").toInt();}
- if(server.arg("S05max").toInt() != 0) {Usermax5 = server.arg("S05max").toInt();}
- if(server.arg("S05min").toInt() != 0) {Usermin5 = server.arg("S05min").toInt();}
- if(server.arg("S06max").toInt() != 0) {Usermax6 = server.arg("S06max").toInt();}
- if(server.arg("S06min").toInt() != 0) {Usermin6 = server.arg("S06min").toInt();}
- if(server.arg("S07max").toInt() != 0) {Usermax7 = server.arg("S07max").toInt();}
- if(server.arg("S07min").toInt() != 0) {Usermin7 = server.arg("S07min").toInt();}
- if(server.arg("S08max").toInt() != 0) {Usermax8 = server.arg("S08max").toInt();}
- if(server.arg("S08min").toInt() != 0) {Usermin8 = server.arg("S08min").toInt();}
- if(server.arg("S09max").toInt() != 0) {Usermax9 = server.arg("S09max").toInt();}
- if(server.arg("S09min").toInt() != 0) {Usermin9 = server.arg("S09min").toInt();}
- if(server.arg("S10max").toInt() != 0) {Usermax10 = server.arg("S10max").toInt();}
- if(server.arg("S10min").toInt() != 0) {Usermin10 = server.arg("S10min").toInt();}
- if(server.arg("S11max").toInt() != 0) {Usermax11 = server.arg("S11max").toInt();}
- if(server.arg("S11min").toInt() != 0) {Usermin11 = server.arg("S11min").toInt();}
- if(server.arg("S12max").toInt() != 0) {Usermax12 = server.arg("S12max").toInt();}
- if(server.arg("S12min").toInt() != 0) {Usermin12 = server.arg("S12min").toInt();}
- if(server.arg("S13max").toInt() != 0) {Usermax13 = server.arg("S13max").toInt();}
- if(server.arg("S13min").toInt() != 0) {Usermin13 = server.arg("S13min").toInt();}
- if(server.arg("S14max").toInt() != 0) {Usermax14 = server.arg("S14max").toInt();}
- if(server.arg("S14min").toInt() != 0) {Usermin14 = server.arg("S14min").toInt();}
- if(server.arg("S15max").toInt() != 0) {Usermax15 = server.arg("S15max").toInt();}
- if(server.arg("S15min").toInt() != 0) {Usermin15 = server.arg("S15min").toInt();}
- // Print Value to Serial Monitor
- Serial.println("Form Soil Humidity");
- Serial.print("Max0: "); Serial.print(Usermax0); Serial.print("\t Min0: "); Serial.println(Usermin0);
- Serial.print("Max1: "); Serial.print(Usermax1); Serial.print("\t Min1: "); Serial.println(Usermin1);
- Serial.print("Max2: "); Serial.print(Usermax2); Serial.print("\t Min2: "); Serial.println(Usermin2);
- Serial.print("Max3: "); Serial.print(Usermax3); Serial.print("\t Min3: "); Serial.println(Usermin3);
- Serial.print("Max4: "); Serial.print(Usermax4); Serial.print("\t Min4: "); Serial.println(Usermin4);
- Serial.print("Max5: "); Serial.print(Usermax5); Serial.print("\t Min5: "); Serial.println(Usermin5);
- Serial.print("Max6: "); Serial.print(Usermax6); Serial.print("\t Min6: "); Serial.println(Usermin6);
- Serial.print("Max7: "); Serial.print(Usermax7); Serial.print("\t Min7: "); Serial.println(Usermin7);
- Serial.print("Max8: "); Serial.print(Usermax8); Serial.print("\t Min8: "); Serial.println(Usermin8);
- Serial.print("Max9: "); Serial.print(Usermax9); Serial.print("\t Min9: "); Serial.println(Usermin9);
- Serial.print("Max10: "); Serial.print(Usermax10); Serial.print("\t Min10: "); Serial.println(Usermin10);
- Serial.print("Max11: "); Serial.print(Usermax11); Serial.print("\t Min11: "); Serial.println(Usermin11);
- Serial.print("Max12: "); Serial.print(Usermax12); Serial.print("\t Min12: "); Serial.println(Usermin12);
- Serial.print("Max13: "); Serial.print(Usermax13); Serial.print("\t Min13: "); Serial.println(Usermin13);
- Serial.print("Max14: "); Serial.print(Usermax14); Serial.print("\t Min14: "); Serial.println(Usermin14);
- Serial.print("Max15: "); Serial.print(Usermax15); Serial.print("\t Min15: "); Serial.println(Usermin15);
- if(!saveConfiguration) {
- Serial.println(F("failed to Save..."));
- }
- else {
- Serial.println(F("Saved OK..."));
- }
- server.sendHeader("Location","/"); // Add header to go to the home page again
- server.send(303); // Send it back to the browser with an HTTP status 303
- }
- void handleNotFound() {
- String message = "File Not Found\n\n";
- message += "URI: ";
- message += server.uri();
- message += "\nMethod: ";
- message += (server.method() == HTTP_GET) ? "GET" : "POST";
- message += "\nArguments: ";
- message += server.args();
- message += "\n";
- for (uint8_t i = 0; i < server.args(); i++) {
- message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
- }
- server.send(404, "text/plain", message);
- }
- // include read sensor
- // Drive the Solenoid
- String solenoidStatus(int sensor, int solenoidPin, int SoilHumidityMax, int SoilHumidityMin) {
- String solenoidState;
- if(sensor <= SoilHumidityMin) {
- solenoidState = "OFF";
- mcp.digitalWrite(solenoidPin,LOW);
- }
- else if(sensor >= SoilHumidityMax){
- solenoidState = "ON";
- mcp.digitalWrite(solenoidPin,HIGH);
- }
- return(solenoidState);
- }
- // Read Solenoid status and display status in html
- void driveSolenoid() {
- solenoidState0 = solenoidStatus(sensor[0], solenoid0, Usermax0, Usermin0);
- solenoidState1 = solenoidStatus(sensor[1], solenoid1, Usermax1, Usermin1);
- solenoidState2 = solenoidStatus(sensor[2], solenoid2, Usermax2, Usermin2);
- solenoidState3 = solenoidStatus(sensor[3], solenoid3, Usermax3, Usermin3);
- solenoidState4 = solenoidStatus(sensor[4], solenoid4, Usermax4, Usermin4);
- solenoidState5 = solenoidStatus(sensor[5], solenoid5, Usermax5, Usermin5);
- solenoidState6 = solenoidStatus(sensor[6], solenoid6, Usermax6, Usermin6);
- solenoidState7 = solenoidStatus(sensor[7], solenoid7, Usermax7, Usermin7);
- solenoidState8 = solenoidStatus(sensor[8], solenoid8, Usermax8, Usermin8);
- solenoidState9 = solenoidStatus(sensor[9], solenoid9, Usermax9, Usermin9);
- solenoidState10 = solenoidStatus(sensor[10], solenoid10, Usermax10, Usermin10);
- solenoidState11 = solenoidStatus(sensor[11], solenoid11, Usermax11, Usermin11);
- solenoidState12 = solenoidStatus(sensor[12], solenoid12, Usermax12, Usermin12);
- solenoidState13 = solenoidStatus(sensor[13], solenoid13, Usermax13, Usermin13);
- solenoidState14 = solenoidStatus(sensor[14], solenoid14, Usermax14, Usermin14);
- solenoidState15 = solenoidStatus(sensor[15], solenoid15, Usermax15, Usermin15);
- }
- // Drive the pump and display status in html
- void drivePump() {
- if(solenoidState0 == "OFF" && solenoidState1 == "OFF" && solenoidState2 == "OFF" && solenoidState3 == "OFF" &&
- solenoidState4 == "OFF" && solenoidState5 == "OFF" && solenoidState6 == "OFF" && solenoidState7 == "OFF" &&
- solenoidState8 == "OFF" && solenoidState9 == "OFF" && solenoidState10 == "OFF" && solenoidState11 == "OFF" &&
- solenoidState12 == "OFF" && solenoidState13 == "OFF" && solenoidState14 == "OFF" && solenoidState15 == "OFF") {
- if(pumpstate == "ON") {
- pumpstate = "OFF";
- digitalWrite(PUMP,LOW);
- }
- }
- else {
- if(pumpstate == "OFF") {
- pumpstate = "ON";
- digitalWrite(PUMP,HIGH);
- }
- }
- }
- void handleXML(){
- XML="<?xml version='1.0'?>";
- XML+="<xml>";
- XML+="<pumpstate>"; XML+= pumpstate; XML+="</pumpstate>";
- XML+="<sensor0>"; XML+= sensor[0]; XML+="</sensor0>";
- XML+="<sensor1>"; XML+= sensor[1]; XML+="</sensor1>";
- XML+="<sensor2>"; XML+= sensor[2]; XML+="</sensor2>";
- XML+="<sensor3>"; XML+= sensor[3]; XML+="</sensor3>";
- XML+="<sensor4>"; XML+= sensor[4]; XML+="</sensor4>";
- XML+="<sensor5>"; XML+= sensor[5]; XML+="</sensor5>";
- XML+="<sensor6>"; XML+= sensor[6]; XML+="</sensor6>";
- XML+="<sensor7>"; XML+= sensor[7]; XML+="</sensor7>";
- XML+="<sensor8>"; XML+= sensor[8]; XML+="</sensor8>";
- XML+="<sensor9>"; XML+= sensor[9]; XML+="</sensor9>";
- XML+="<sensor10>"; XML+= sensor[10]; XML+="</sensor10>";
- XML+="<sensor11>"; XML+= sensor[11]; XML+="</sensor11>";
- XML+="<sensor12>"; XML+= sensor[12]; XML+="</sensor12>";
- XML+="<sensor13>"; XML+= sensor[13]; XML+="</sensor13>";
- XML+="<sensor14>"; XML+= sensor[14]; XML+="</sensor14>";
- XML+="<sensor15>"; XML+= sensor[15]; XML+="</sensor15>";
- XML+="<solenoidState0>"; XML+= solenoidState0; XML+="</solenoidState0>";
- XML+="<solenoidState1>"; XML+= solenoidState1; XML+="</solenoidState1>";
- XML+="<solenoidState2>"; XML+= solenoidState2; XML+="</solenoidState2>";
- XML+="<solenoidState3>"; XML+= solenoidState3; XML+="</solenoidState3>";
- XML+="<solenoidState4>"; XML+= solenoidState4; XML+="</solenoidState4>";
- XML+="<solenoidState5>"; XML+= solenoidState5; XML+="</solenoidState5>";
- XML+="<solenoidState6>"; XML+= solenoidState6; XML+="</solenoidState6>";
- XML+="<solenoidState7>"; XML+= solenoidState7; XML+="</solenoidState7>";
- XML+="<solenoidState8>"; XML+= solenoidState8; XML+="</solenoidState8>";
- XML+="<solenoidState9>"; XML+= solenoidState9; XML+="</solenoidState9>";
- XML+="<solenoidState10>"; XML+= solenoidState10; XML+="</solenoidState10>";
- XML+="<solenoidState11>"; XML+= solenoidState11; XML+="</solenoidState11>";
- XML+="<solenoidState12>"; XML+= solenoidState12; XML+="</solenoidState12>";
- XML+="<solenoidState13>"; XML+= solenoidState13; XML+="</solenoidState13>";
- XML+="<solenoidState14>"; XML+= solenoidState14; XML+="</solenoidState14>";
- XML+="<solenoidState15>"; XML+= solenoidState15; XML+="</solenoidState15>";
- XML+="<max00>"; XML+= Usermax0; XML+="</max00>";
- XML+="<min00>"; XML+= Usermin0; XML+="</min00>";
- XML+="<max01>"; XML+= Usermax1; XML+="</max01>";
- XML+="<min01>"; XML+= Usermin1; XML+="</min01>";
- XML+="<max02>"; XML+= Usermax2; XML+="</max02>";
- XML+="<min02>"; XML+= Usermin2; XML+="</min02>";
- XML+="<max03>"; XML+= Usermax3; XML+="</max03>";
- XML+="<min03>"; XML+= Usermin3; XML+="</min03>";
- XML+="<max04>"; XML+= Usermax4; XML+="</max04>";
- XML+="<min04>"; XML+= Usermin4; XML+="</min04>";
- XML+="<max05>"; XML+= Usermax5; XML+="</max05>";
- XML+="<min05>"; XML+= Usermin5; XML+="</min05>";
- XML+="<max06>"; XML+= Usermax6; XML+="</max06>";
- XML+="<min06>"; XML+= Usermin6; XML+="</min06>";
- XML+="<max07>"; XML+= Usermax7; XML+="</max07>";
- XML+="<min07>"; XML+= Usermin7; XML+="</min07>";
- XML+="<max08>"; XML+= Usermax8; XML+="</max08>";
- XML+="<min08>"; XML+= Usermin8; XML+="</min08>";
- XML+="<max09>"; XML+= Usermax9; XML+="</max09>";
- XML+="<min09>"; XML+= Usermin9; XML+="</min09>";
- XML+="<max10>"; XML+= Usermax10; XML+="</max10>";
- XML+="<min10>"; XML+= Usermin10; XML+="</min10>";
- XML+="<max11>"; XML+= Usermax11; XML+="</max11>";
- XML+="<min11>"; XML+= Usermin11; XML+="</min11>";
- XML+="<max12>"; XML+= Usermax12; XML+="</max12>";
- XML+="<min12>"; XML+= Usermin12; XML+="</min12>";
- XML+="<max13>"; XML+= Usermax13; XML+="</max13>";
- XML+="<min13>"; XML+= Usermin13; XML+="</min13>";
- XML+="<max14>"; XML+= Usermax14; XML+="</max14>";
- XML+="<min14>"; XML+= Usermin14; XML+="</min14>";
- XML+="<max15>"; XML+= Usermax15; XML+="</max15>";
- XML+="<min15>"; XML+= Usermin15; XML+="</min15>";
- XML+="</xml>";
- server.send(200,"text/xml",XML);
- }
- void setup() {
- Serial.begin(115200);
- mcp.begin();
- pinMode(S0,OUTPUT); /* Define digital pin as output to the Multiplexer pin SO */
- pinMode(S1,OUTPUT); /* Define digital pin as output to the Multiplexer pin S1 */
- pinMode(S2,OUTPUT); /* Define digital pin as output to the Multiplexer pin S2 */
- pinMode(S3,OUTPUT); /* Define digital pin as output to the Multiplexer pin S3 */
- pinMode(SIG, INPUT); /* Define analog pin as input from the Multiplexer pin SIG */
- pinMode(PUMP,OUTPUT); /* Define digital pin os output to control pump */
- mcp.pinMode(solenoid0, OUTPUT);
- mcp.pinMode(solenoid1, OUTPUT);
- mcp.pinMode(solenoid2, OUTPUT);
- mcp.pinMode(solenoid3, OUTPUT);
- mcp.pinMode(solenoid4, OUTPUT);
- mcp.pinMode(solenoid5, OUTPUT);
- mcp.pinMode(solenoid6, OUTPUT);
- mcp.pinMode(solenoid7, OUTPUT);
- mcp.pinMode(solenoid8, OUTPUT);
- mcp.pinMode(solenoid9, OUTPUT);
- mcp.pinMode(solenoid10, OUTPUT);
- mcp.pinMode(solenoid11, OUTPUT);
- mcp.pinMode(solenoid12, OUTPUT);
- mcp.pinMode(solenoid13, OUTPUT);
- mcp.pinMode(solenoid14, OUTPUT);
- mcp.pinMode(solenoid15, OUTPUT);
- digitalWrite(PUMP,LOW);
- mcp.digitalWrite(solenoid0,LOW);
- mcp.digitalWrite(solenoid1,LOW);
- mcp.digitalWrite(solenoid2,LOW);
- mcp.digitalWrite(solenoid3,LOW);
- mcp.digitalWrite(solenoid4,LOW);
- mcp.digitalWrite(solenoid5,LOW);
- mcp.digitalWrite(solenoid6,LOW);
- mcp.digitalWrite(solenoid7,LOW);
- mcp.digitalWrite(solenoid8,LOW);
- mcp.digitalWrite(solenoid9,LOW);
- mcp.digitalWrite(solenoid10,LOW);
- mcp.digitalWrite(solenoid11,LOW);
- mcp.digitalWrite(solenoid12,LOW);
- mcp.digitalWrite(solenoid13,LOW);
- mcp.digitalWrite(solenoid14,LOW);
- mcp.digitalWrite(solenoid15,LOW);
- Serial.println("");
- delay(1000);
- Serial.println("Mounting FS...");
- if (!LittleFS.begin()) {
- Serial.println("Failed to mount file system");
- return;
- }
- if(!loadConfiguration) { Serial.println(F("Failed to load...")); }
- else { Serial.println(F("Load OK...")); }
- delay(1000);
- WiFiManager wifiManager;
- wifiManager.autoConnect("AutoConnectAP");
- Serial.println("Yourconnected...yeey :)");
- server.on("/", handleRoot);
- server.on("/reqEtatVariables",handleXML);
- server.on("/get",handleReadUserPlantSelected);
- server.onNotFound(handleNotFound); /* page not found */
- server.begin();
- Serial.println("HTTP server started");
- Serial.println(WiFi.localIP());
- }
- void loop() {
- server.handleClient();
- getSoilHumidity();
- driveSolenoid();
- drivePump();
- }
Advertisement
Add Comment
Please, Sign In to add comment