/* New with JSON */
#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#include <Wire.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 SoilHumidity 430 /* Assign the level of the soil humidity to irrigate the plant */
#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";
String solenoidState0 = "OFF";
String solenoidState1 = "OFF";
String solenoidState2 = "OFF";
String solenoidState3 = "OFF";
String solenoidState4 = "OFF";
String solenoidState5 = "OFF";
String solenoidState6 = "OFF";
String solenoidState7 = "OFF";
String solenoidState8 = "OFF";
String solenoidState9 = "OFF";
String solenoidState10 = "OFF";
String solenoidState11 = "OFF";
String solenoidState12 = "OFF";
String solenoidState13 = "OFF";
String solenoidState14 = "OFF";
String solenoidState15 = "OFF";
String XML; // pour envoyer le code XML a ma page web
ESP8266WebServer server(80);
static const char PROGMEM INDEX_HTML[] = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Irrigation Viewer</title>
<style type="text/css">
td, th {
border: 1px solid white;
}
table {
margin: 15px 0;
border: 1px solid black;
table-layout: fixed;
width: 100%; /* must have this set */
border-spacing: 18px;
}
html {
background: black;
}
body {
font-family: sans-serif;
color: #FFFFFF;
max-width: 600px;
margin: 0 auto;
background: black;
padding: 10px;
}
h1{
text-align: center;
}
.wider td {
width: 218px;
}
</style>
</head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<body onload="obtenirVariables()">
<h1>Irrigation System Viewer</h1>
<table class="wider">
<tr>
<td colspan="2" id="pumpstate"></td>
</tr>
<tr>
<td id="sensor0"></td>
<td id="solenoidState0"></td>
</tr>
<tr>
<td id="sensor1"></td>
<td id="solenoidState1"></td>
</tr>
<tr>
<td id="sensor2"></td>
<td id="solenoidState2"></td>
</tr>
<tr>
<td id="sensor3"></td>
<td id="solenoidState3"></td>
</tr>
<tr>
<td id="sensor4"></td>
<td id="solenoidState4"></td>
</tr>
<tr>
<td id="sensor5"></td>
<td id="solenoidState5"></td>
</tr>
<tr>
<td id="sensor6"></td>
<td id="solenoidState6"></td>
</tr>
<tr>
<td id="sensor7"></td>
<td id="solenoidState7"></td>
</tr>
<tr>
<td id="sensor8"></td>
<td id="solenoidState8"></td>
</tr>
<tr>
<td id="sensor9"></td>
<td id="solenoidState9"></td>
</tr>
<tr>
<td id="sensor10"></td>
<td id="solenoidState10"></td>
</tr>
<tr>
<td id="sensor11"></td>
<td id="solenoidState11"></td>
</tr>
<tr>
<td id="sensor12"></td>
<td id="solenoidState12"></td>
</tr>
<tr>
<td id="sensor13"></td>
<td id="solenoidState13"></td>
</tr>
<tr>
<td id="sensor14"></td>
<td id="solenoidState14"></td>
</tr>
<tr>
<td id="sensor15"></td>
<td id="solenoidState15"></td>
</tr>
<tr>
<td><i class="fa fa-refresh fa-spin"></i></td>
<td>ssss</td>
</tr>
</table>
<script type="text/javascript">
function obtenirVariables(){
var uniqueURL = "/reqEtatVariables" + "?aleatoire=" + Math.trunc(Math.random() * 1000000);
var request = new XMLHttpRequest(); // http://www.toutjavascript.com/reference/ref-xmlhttprequest.php
// la fonction à appeler lors d'un changement d'avancement de la requête AJAX
request.onreadystatechange = function()
{
if (request.readyState == 4) {
// Indicateur de l'avancement de l'appel AJAX == 4 => Données complètement accessibles
if (request.status == 200) {
document.getElementById("pumpstate").innerHTML = "Pump: " + this.responseXML.getElementsByTagName('pumpstate')[0].childNodes[0].nodeValue;
document.getElementById("sensor0").innerHTML = "SoilHumidity Sensor 0: " + this.responseXML.getElementsByTagName('sensor0')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor1").innerHTML = "SoilHumidity Sensor 1: " + this.responseXML.getElementsByTagName('sensor1')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor2").innerHTML = "SoilHumidity Sensor 2: " + this.responseXML.getElementsByTagName('sensor2')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor3").innerHTML = "SoilHumidity Sensor 3: " + this.responseXML.getElementsByTagName('sensor3')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor4").innerHTML = "SoilHumidity Sensor 4: " + this.responseXML.getElementsByTagName('sensor4')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor5").innerHTML = "SoilHumidity Sensor 5: " + this.responseXML.getElementsByTagName('sensor5')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor6").innerHTML = "SoilHumidity Sensor 6: " + this.responseXML.getElementsByTagName('sensor6')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor7").innerHTML = "SoilHumidity Sensor 7: " + this.responseXML.getElementsByTagName('sensor7')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor8").innerHTML = "SoilHumidity Sensor 8: " + this.responseXML.getElementsByTagName('sensor8')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor9").innerHTML = "SoilHumidity Sensor 9: " + this.responseXML.getElementsByTagName('sensor9')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor10").innerHTML = "SoilHumidity Sensor 10: " + this.responseXML.getElementsByTagName('sensor10')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor11").innerHTML = "SoilHumidity Sensor 11: " + this.responseXML.getElementsByTagName('sensor11')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor12").innerHTML = "SoilHumidity Sensor 12: " + this.responseXML.getElementsByTagName('sensor12')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor13").innerHTML = "SoilHumidity Sensor 13: " + this.responseXML.getElementsByTagName('sensor13')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor14").innerHTML = "SoilHumidity Sensor 14: " + this.responseXML.getElementsByTagName('sensor14')[0].childNodes[0].nodeValue + "%";
document.getElementById("sensor15").innerHTML = "SoilHumidity Sensor 15: " + this.responseXML.getElementsByTagName('sensor15')[0].childNodes[0].nodeValue + "%";
document.getElementById("solenoidState0").innerHTML = "Solenoid0 State 0: " + this.responseXML.getElementsByTagName('solenoidState0')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState1").innerHTML = "Solenoid0 State 1: " + this.responseXML.getElementsByTagName('solenoidState1')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState2").innerHTML = "Solenoid0 State 2: " + this.responseXML.getElementsByTagName('solenoidState2')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState3").innerHTML = "Solenoid0 State 3: " + this.responseXML.getElementsByTagName('solenoidState3')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState4").innerHTML = "Solenoid0 State 4: " + this.responseXML.getElementsByTagName('solenoidState4')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState5").innerHTML = "Solenoid0 State 5: " + this.responseXML.getElementsByTagName('solenoidState5')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState6").innerHTML = "Solenoid0 State 6: " + this.responseXML.getElementsByTagName('solenoidState6')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState7").innerHTML = "Solenoid0 State 7: " + this.responseXML.getElementsByTagName('solenoidState7')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState8").innerHTML = "Solenoid0 State 8: " + this.responseXML.getElementsByTagName('solenoidState8')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState9").innerHTML = "Solenoid0 State 9: " + this.responseXML.getElementsByTagName('solenoidState9')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState10").innerHTML = "Solenoid0 State 10: " + this.responseXML.getElementsByTagName('solenoidState10')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState11").innerHTML = "Solenoid0 State 11: " + this.responseXML.getElementsByTagName('solenoidState11')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState12").innerHTML = "Solenoid0 State 12: " + this.responseXML.getElementsByTagName('solenoidState12')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState13").innerHTML = "Solenoid0 State 13: " + this.responseXML.getElementsByTagName('solenoidState13')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState14").innerHTML = "Solenoid0 State 14: " + this.responseXML.getElementsByTagName('solenoidState14')[0].childNodes[0].nodeValue;
document.getElementById("solenoidState15").innerHTML = "Solenoid0 State 15: " + this.responseXML.getElementsByTagName('solenoidState15')[0].childNodes[0].nodeValue;
}
}
}
request.open("GET", uniqueURL , true); // ici on envoie la requête GET sur l'URL /reqEtatVariables
request.send(null);
setTimeout("obtenirVariables()", 1000); // on rappelle obtenirVariables()
}
</script>
</body>
</html>
)rawliteral";
void handleRoot(){
server.send_P(200, "text/html", INDEX_HTML);
}
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);
}
// read soil humiduty and display in html
void getSoilHumidity() {
// Channel 0 (C0 pin - binary output 0,0,0,0)
digitalWrite(S0,LOW); digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,LOW);
sensor[0] = analogRead(SIG);
// Channel 1 (C1 pin - binary output 1,0,0,0)
digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,LOW);
sensor[1] = analogRead(SIG);
// Channel 2 (C2 pin - binary output 0,1,0,0)
digitalWrite(S0,LOW); digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,LOW);
sensor[2] = analogRead(SIG);
// Channel 3 (C3 pin - binary output 1,1,0,0)
digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,LOW);
sensor[3] = analogRead(SIG);
// Channel 4 (C4 pin - binary output 0,0,1,0)
digitalWrite(S0,LOW); digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,LOW);
sensor[4] = analogRead(SIG);
// Channel 5 (C5 pin - binary output 1,0,1,0)
digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,LOW);
sensor[5] = analogRead(SIG);
// Channel 6 (C6 pin - binary output 0,1,1,0)
digitalWrite(S0,LOW); digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,LOW);
sensor[6] = analogRead(SIG);
// Channel 7 (C7 pin - binary output 1,1,1,0)
digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,LOW);
sensor[7] = analogRead(SIG);
// Channel 8 (C8 pin - binary output 0,0,0,1)
digitalWrite(S0,LOW); digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,HIGH);
sensor[8] = analogRead(SIG);
// Channel 9 (C9 pin - binary output 1,0,0,1)
digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,HIGH);
sensor[9] = analogRead(SIG);
// Channel 10 (C10 pin - binary output 0,1,0,1)
digitalWrite(S0,LOW); digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,HIGH);
sensor[10] = analogRead(SIG);
// Channel 11 (C11 pin - binary output 1,1,0,1)
digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,HIGH);
sensor[11] = analogRead(SIG);
// Channel 12 (C12 pin - binary output 0,0,1,1)
digitalWrite(S0,LOW); digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH);
sensor[12] = analogRead(SIG);
// Channel 13 (C13 pin - binary output 1,0,1,1)
digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH);
sensor[13] = analogRead(SIG);
// Channel 14 (C14 pin - binary output 0,1,1,1)
digitalWrite(S0,LOW); digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH);
sensor[14] = analogRead(SIG);
// Channel 15 (C15 pin - binary output 1,1,1,1)
digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH);
sensor[15] = analogRead(SIG);
}
// Drive the Solenoid
String solenoidStatus(int sensor, int solenoidPin) {
String solenoidState;
if(sensor <= SoilHumidity) {
solenoidState = "OFF";
mcp.digitalWrite(solenoidPin,LOW);
}
else {
solenoidState = "ON";
mcp.digitalWrite(solenoidPin,HIGH);
}
return(solenoidState);
}
// Read Solenoid status and display status in html
void driveSolenoid() {
solenoidState0 = solenoidStatus(sensor[0], solenoid0);
solenoidState1 = solenoidStatus(sensor[1], solenoid1);
solenoidState2 = solenoidStatus(sensor[2], solenoid2);
solenoidState3 = solenoidStatus(sensor[3], solenoid3);
solenoidState4 = solenoidStatus(sensor[4], solenoid4);
solenoidState5 = solenoidStatus(sensor[5], solenoid5);
solenoidState6 = solenoidStatus(sensor[6], solenoid6);
solenoidState7 = solenoidStatus(sensor[7], solenoid7);
solenoidState8 = solenoidStatus(sensor[8], solenoid8);
solenoidState9 = solenoidStatus(sensor[9], solenoid9);
solenoidState12 = solenoidStatus(sensor[10], solenoid10);
solenoidState11 = solenoidStatus(sensor[11], solenoid11);
solenoidState12 = solenoidStatus(sensor[12], solenoid12);
solenoidState13 = solenoidStatus(sensor[13], solenoid13);
solenoidState14 = solenoidStatus(sensor[14], solenoid14);
solenoidState15 = solenoidStatus(sensor[15], solenoid15);
}
// 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+="</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);
WiFiManager wifiManager;
wifiManager.autoConnect("AutoConnectAP");
Serial.println("Yourconnected...yeey :)");
server.on("/", handleRoot);
server.on("/reqEtatVariables",handleXML);
server.onNotFound(handleNotFound); /* page not found */
server.begin();
Serial.println("HTTP server started");
Serial.println(WiFi.localIP());
}
void loop() {
server.handleClient();
getSoilHumidity();
driveSolenoid();
drivePump();
}
Comments