noam76

complete code

Feb 23rd, 2021 (edited)
983
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 22.10 KB | None | 0 0
  1. /* New with JSON */
  2. #include <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino
  3. #include <DNSServer.h>
  4. #include <ESP8266WebServer.h>
  5. #include <WiFiManager.h>
  6. #include <Wire.h>
  7. #include "Adafruit_MCP23017.h"
  8. Adafruit_MCP23017 mcp;
  9.  
  10. #define S0 D0   /* Assign Multiplexer pin S0 connect to pin D0 of NodeMCU */
  11. #define S3 D3   /* Assign Multiplexer pin S3 connect to pin D3 of NodeMCU */
  12. #define S1 D7   /* Assign Multiplexer pin S1 connect to pin D1 of NodeMCU */
  13. #define S2 D8   /* Assign Multiplexer pin S2 connect to pin D2 of NodeMCU */
  14. #define SIG A0  /* Assign SIG pin Analog output for all Multiplexer's channels to A0 of NodeMCU */
  15. #define SoilHumidity 430 /* Assign the level of the soil humidity to irrigate the plant */
  16.  
  17. #define PUMP D6
  18. #define solenoid0 0   //Connect Solenoid0 for Sens0 GPA0 on mcp
  19. #define solenoid1 1   //Connect Solenoid1 for Sens1 GPA1 on mcp
  20. #define solenoid2 2   //Connect Solenoid2 for Sens2 GPA2 on mcp
  21. #define solenoid3 3   //Connect Solenoid3 for Sens3 GPA3 on mcp
  22. #define solenoid4 4   //Connect Solenoid4 for Sens4 GPA4 on mcp
  23. #define solenoid5 5   //Connect Solenoid5 for Sens5 GPA5 on mcp
  24. #define solenoid6 6   //Connect Solenoid6 for Sens6 GPA6 on mcp
  25. #define solenoid7 7   //Connect Solenoid7 for Sens7 GPB0 on mcp
  26. #define solenoid8 8   //Connect Solenoid8 for Sens8 GPB1 on mcp
  27. #define solenoid9 9   //Connect Solenoid9 for Sens9 GPB2 on mcp
  28. #define solenoid10 10 //Connect Solenoid10 for Sens10 GPB3 on mcp
  29. #define solenoid11 11 //Connect Solenoid11 for Sens11 GPB4 on mcp
  30. #define solenoid12 12 //Connect Solenoid11 for Sens11 GPB5 on mcp
  31. #define solenoid13 13 //Connect Solenoid11 for Sens11 GPB6 on mcp
  32. #define solenoid14 14 //Connect Solenoid11 for Sens11 GPB7 on mcp
  33. #define solenoid15 15 //Connect Solenoid11 for Sens11 GPB8 on mcp
  34.  
  35. int sensor[15];
  36. /* Assign the name "sensor[0]" as analog output value from Channel C0 */
  37. /* Assign the name "sensor[1]" as analog output value from Channel C1 */
  38. /* Assign the name "sensor[2]" as analog output value from Channel C2 */
  39. /* Assign the name "sensor[3]" as analog output value from Channel C3 */
  40. /* Assign the name "sensor[4]" as analog output value from Channel C4 */
  41. /* Assign the name "sensor[5]" as analog output value from Channel C5 */
  42. /* Assign the name "sensor[6]" as analog output value from Channel C6 */
  43. /* Assign the name "sensor[7]" as analog output value from Channel C7 */
  44. /* Assign the name "sensor[8]" as analog output value from Channel C8 */
  45. /* Assign the name "sensor[9]" as analog output value from Channel C9 */
  46. /* Assign the name "sensor[10]" as analog output value from Channel C10 */
  47. /* Assign the name "sensor[11]" as analog output value from Channel C11 */
  48. /* Assign the name "sensor[12]" as analog output value from Channel C12 */
  49. /* Assign the name "sensor[13]" as analog output value from Channel C13 */
  50. /* Assign the name "sensor[14]" as analog output value from Channel C14 */
  51. /* Assign the name "sensor[15]" as analog output value from Channel C15 */
  52.  
  53. String pumpstate = "OFF";
  54. String solenoidState0 = "OFF";
  55. String solenoidState1 = "OFF";
  56. String solenoidState2 = "OFF";
  57. String solenoidState3 = "OFF";
  58. String solenoidState4 = "OFF";
  59. String solenoidState5 = "OFF";
  60. String solenoidState6 = "OFF";
  61. String solenoidState7 = "OFF";
  62. String solenoidState8 = "OFF";
  63. String solenoidState9 = "OFF";
  64. String solenoidState10 = "OFF";
  65. String solenoidState11 = "OFF";
  66. String solenoidState12 = "OFF";
  67. String solenoidState13 = "OFF";
  68. String solenoidState14 = "OFF";
  69. String solenoidState15 = "OFF";
  70.  
  71. String XML; // pour envoyer le code XML a ma page web
  72.  
  73. ESP8266WebServer server(80);
  74.  
  75. static const char PROGMEM INDEX_HTML[] = R"rawliteral(
  76. <!DOCTYPE html>
  77. <html>
  78. <head>
  79. <meta charset="utf-8" />
  80. <title>Irrigation Viewer</title>
  81. <style type="text/css">
  82. td, th {
  83.  border: 1px solid white;
  84. }
  85. table {
  86.  margin: 15px 0;
  87.  border: 1px solid black;
  88.  table-layout: fixed;
  89.  width: 100%; /* must have this set */
  90.  border-spacing: 18px;
  91. }
  92. html {
  93.  background: black;
  94. }
  95. body {
  96.  font-family: sans-serif;
  97.  color: #FFFFFF;
  98.  max-width: 600px;
  99.  margin: 0 auto;
  100.  background: black;
  101.  padding: 10px;
  102. }
  103.  
  104. h1{
  105.  text-align: center;
  106. }
  107.  
  108. .wider td {
  109.  width: 218px;
  110. }
  111. </style>
  112. </head>
  113. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
  114. <body onload="obtenirVariables()">
  115. <h1>Irrigation System Viewer</h1>
  116.  
  117. <table class="wider">
  118.   <tr>
  119.     <td colspan="2" id="pumpstate"></td>
  120.   </tr>
  121.   <tr>
  122.     <td id="sensor0"></td>
  123.     <td id="solenoidState0"></td>
  124.   </tr>
  125.    <tr>
  126.     <td id="sensor1"></td>
  127.     <td id="solenoidState1"></td>
  128.   </tr>
  129.   <tr>
  130.     <td id="sensor2"></td>
  131.     <td id="solenoidState2"></td>
  132.   </tr>
  133.    <tr>
  134.     <td  id="sensor3"></td>
  135.     <td id="solenoidState3"></td>
  136.   </tr>
  137.   <tr>
  138.     <td  id="sensor4"></td>
  139.     <td id="solenoidState4"></td>
  140.   </tr>
  141.   <tr>
  142.     <td  id="sensor5"></td>
  143.     <td id="solenoidState5"></td>
  144.   </tr>
  145.   <tr>
  146.     <td  id="sensor6"></td>
  147.     <td id="solenoidState6"></td>
  148.   </tr>
  149.   <tr>
  150.     <td  id="sensor7"></td>
  151.     <td id="solenoidState7"></td>
  152.   </tr>
  153.   <tr>
  154.     <td  id="sensor8"></td>
  155.     <td id="solenoidState8"></td>
  156.   </tr>
  157.   <tr>
  158.     <td  id="sensor9"></td>
  159.     <td id="solenoidState9"></td>
  160.   </tr>
  161.   <tr>
  162.     <td  id="sensor10"></td>
  163.     <td id="solenoidState10"></td>
  164.   </tr>
  165.   <tr>
  166.     <td  id="sensor11"></td>
  167.     <td id="solenoidState11"></td>
  168.   </tr>
  169.   <tr>
  170.     <td  id="sensor12"></td>
  171.     <td id="solenoidState12"></td>
  172.   </tr>
  173.   <tr>
  174.     <td  id="sensor13"></td>
  175.     <td id="solenoidState13"></td>
  176.   </tr>
  177.   <tr>
  178.     <td  id="sensor14"></td>
  179.     <td id="solenoidState14"></td>
  180.   </tr>
  181.   <tr>
  182.     <td  id="sensor15"></td>
  183.     <td id="solenoidState15"></td>
  184.   </tr>
  185.   <tr>
  186.     <td><i class="fa fa-refresh fa-spin"></i></td>
  187.     <td>ssss</td>
  188.   </tr>
  189. </table>
  190.   <script type="text/javascript">
  191.     function obtenirVariables(){
  192.     var uniqueURL = "/reqEtatVariables" + "?aleatoire=" + Math.trunc(Math.random() * 1000000);
  193.     var request = new XMLHttpRequest(); // http://www.toutjavascript.com/reference/ref-xmlhttprequest.php
  194.     // la fonction à appeler lors d'un changement d'avancement de la requête AJAX
  195.     request.onreadystatechange = function()
  196.     {
  197.      if (request.readyState == 4) {
  198.       // Indicateur de l'avancement de l'appel AJAX == 4 => Données complètement accessibles
  199.       if (request.status == 200) {
  200.      document.getElementById("pumpstate").innerHTML =  "Pump: " + this.responseXML.getElementsByTagName('pumpstate')[0].childNodes[0].nodeValue;
  201.      document.getElementById("sensor0").innerHTML = "SoilHumidity Sensor 0: " + this.responseXML.getElementsByTagName('sensor0')[0].childNodes[0].nodeValue + "%";
  202.      document.getElementById("sensor1").innerHTML = "SoilHumidity Sensor 1: " + this.responseXML.getElementsByTagName('sensor1')[0].childNodes[0].nodeValue + "%";
  203.      document.getElementById("sensor2").innerHTML = "SoilHumidity Sensor 2: " + this.responseXML.getElementsByTagName('sensor2')[0].childNodes[0].nodeValue + "%";
  204.      document.getElementById("sensor3").innerHTML = "SoilHumidity Sensor 3: " + this.responseXML.getElementsByTagName('sensor3')[0].childNodes[0].nodeValue + "%";
  205.      document.getElementById("sensor4").innerHTML = "SoilHumidity Sensor 4: " + this.responseXML.getElementsByTagName('sensor4')[0].childNodes[0].nodeValue + "%";
  206.      document.getElementById("sensor5").innerHTML = "SoilHumidity Sensor 5: " + this.responseXML.getElementsByTagName('sensor5')[0].childNodes[0].nodeValue + "%";
  207.      document.getElementById("sensor6").innerHTML = "SoilHumidity Sensor 6: " + this.responseXML.getElementsByTagName('sensor6')[0].childNodes[0].nodeValue + "%";
  208.      document.getElementById("sensor7").innerHTML = "SoilHumidity Sensor 7: " + this.responseXML.getElementsByTagName('sensor7')[0].childNodes[0].nodeValue + "%";
  209.      document.getElementById("sensor8").innerHTML = "SoilHumidity Sensor 8: " + this.responseXML.getElementsByTagName('sensor8')[0].childNodes[0].nodeValue + "%";
  210.      document.getElementById("sensor9").innerHTML = "SoilHumidity Sensor 9: " + this.responseXML.getElementsByTagName('sensor9')[0].childNodes[0].nodeValue + "%";
  211.      document.getElementById("sensor10").innerHTML = "SoilHumidity Sensor 10: " + this.responseXML.getElementsByTagName('sensor10')[0].childNodes[0].nodeValue + "%";
  212.      document.getElementById("sensor11").innerHTML = "SoilHumidity Sensor 11: " + this.responseXML.getElementsByTagName('sensor11')[0].childNodes[0].nodeValue + "%";
  213.      document.getElementById("sensor12").innerHTML = "SoilHumidity Sensor 12: " + this.responseXML.getElementsByTagName('sensor12')[0].childNodes[0].nodeValue + "%";
  214.      document.getElementById("sensor13").innerHTML = "SoilHumidity Sensor 13: " + this.responseXML.getElementsByTagName('sensor13')[0].childNodes[0].nodeValue + "%";
  215.      document.getElementById("sensor14").innerHTML = "SoilHumidity Sensor 14: " + this.responseXML.getElementsByTagName('sensor14')[0].childNodes[0].nodeValue + "%";
  216.      document.getElementById("sensor15").innerHTML = "SoilHumidity Sensor 15: " + this.responseXML.getElementsByTagName('sensor15')[0].childNodes[0].nodeValue + "%";
  217.      document.getElementById("solenoidState0").innerHTML = "Solenoid0 State 0: " + this.responseXML.getElementsByTagName('solenoidState0')[0].childNodes[0].nodeValue;
  218.      document.getElementById("solenoidState1").innerHTML = "Solenoid0 State 1: " + this.responseXML.getElementsByTagName('solenoidState1')[0].childNodes[0].nodeValue;
  219.      document.getElementById("solenoidState2").innerHTML = "Solenoid0 State 2: " + this.responseXML.getElementsByTagName('solenoidState2')[0].childNodes[0].nodeValue;
  220.      document.getElementById("solenoidState3").innerHTML = "Solenoid0 State 3: " + this.responseXML.getElementsByTagName('solenoidState3')[0].childNodes[0].nodeValue;
  221.      document.getElementById("solenoidState4").innerHTML = "Solenoid0 State 4: " + this.responseXML.getElementsByTagName('solenoidState4')[0].childNodes[0].nodeValue;
  222.      document.getElementById("solenoidState5").innerHTML = "Solenoid0 State 5: " + this.responseXML.getElementsByTagName('solenoidState5')[0].childNodes[0].nodeValue;
  223.      document.getElementById("solenoidState6").innerHTML = "Solenoid0 State 6: " + this.responseXML.getElementsByTagName('solenoidState6')[0].childNodes[0].nodeValue;
  224.      document.getElementById("solenoidState7").innerHTML = "Solenoid0 State 7: " + this.responseXML.getElementsByTagName('solenoidState7')[0].childNodes[0].nodeValue;
  225.      document.getElementById("solenoidState8").innerHTML = "Solenoid0 State 8: " + this.responseXML.getElementsByTagName('solenoidState8')[0].childNodes[0].nodeValue;
  226.      document.getElementById("solenoidState9").innerHTML = "Solenoid0 State 9: " + this.responseXML.getElementsByTagName('solenoidState9')[0].childNodes[0].nodeValue;
  227.      document.getElementById("solenoidState10").innerHTML = "Solenoid0 State 10: " + this.responseXML.getElementsByTagName('solenoidState10')[0].childNodes[0].nodeValue;
  228.      document.getElementById("solenoidState11").innerHTML = "Solenoid0 State 11: " + this.responseXML.getElementsByTagName('solenoidState11')[0].childNodes[0].nodeValue;
  229.      document.getElementById("solenoidState12").innerHTML = "Solenoid0 State 12: " + this.responseXML.getElementsByTagName('solenoidState12')[0].childNodes[0].nodeValue;
  230.      document.getElementById("solenoidState13").innerHTML = "Solenoid0 State 13: " + this.responseXML.getElementsByTagName('solenoidState13')[0].childNodes[0].nodeValue;
  231.      document.getElementById("solenoidState14").innerHTML = "Solenoid0 State 14: " + this.responseXML.getElementsByTagName('solenoidState14')[0].childNodes[0].nodeValue;
  232.      document.getElementById("solenoidState15").innerHTML = "Solenoid0 State 15: " + this.responseXML.getElementsByTagName('solenoidState15')[0].childNodes[0].nodeValue;
  233.        }
  234.      }
  235.     }
  236.     request.open("GET", uniqueURL , true); // ici on envoie la requête GET sur l'URL /reqEtatVariables
  237.     request.send(null);
  238.     setTimeout("obtenirVariables()", 1000); // on rappelle obtenirVariables()
  239.    }
  240.  </script>
  241. </body>
  242. </html>
  243. )rawliteral";
  244.  
  245. void handleRoot(){
  246.  server.send_P(200, "text/html", INDEX_HTML);
  247. }
  248.  
  249. void handleNotFound() {
  250.  String message = "File Not Found\n\n";
  251.  message += "URI: ";
  252.  message += server.uri();
  253.  message += "\nMethod: ";
  254.  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  255.  message += "\nArguments: ";
  256.  message += server.args();
  257.  message += "\n";
  258.  for (uint8_t i = 0; i < server.args(); i++) {
  259.    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  260.  }
  261.  server.send(404, "text/plain", message);
  262. }
  263.  
  264. // read soil humiduty and display in html
  265. void getSoilHumidity() {
  266.  // Channel 0 (C0 pin - binary output 0,0,0,0)
  267.  digitalWrite(S0,LOW); digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,LOW);
  268.  sensor[0] = analogRead(SIG);
  269.  
  270.  // Channel 1 (C1 pin - binary output 1,0,0,0)
  271.  digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,LOW);
  272.  sensor[1] = analogRead(SIG);
  273.  
  274.  // Channel 2 (C2 pin - binary output 0,1,0,0)
  275.  digitalWrite(S0,LOW); digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,LOW);
  276.  sensor[2] = analogRead(SIG);
  277.  
  278.  // Channel 3 (C3 pin - binary output 1,1,0,0)
  279.  digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,LOW);
  280.  sensor[3] = analogRead(SIG);
  281.  
  282.  // Channel 4 (C4 pin - binary output 0,0,1,0)
  283.  digitalWrite(S0,LOW); digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,LOW);
  284.  sensor[4] = analogRead(SIG);
  285.  
  286.  // Channel 5 (C5 pin - binary output 1,0,1,0)
  287.  digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,LOW);
  288.  sensor[5] = analogRead(SIG);
  289.  
  290.  // Channel 6 (C6 pin - binary output 0,1,1,0)
  291.  digitalWrite(S0,LOW); digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,LOW);
  292.  sensor[6] = analogRead(SIG);
  293.  
  294.  // Channel 7 (C7 pin - binary output 1,1,1,0)
  295.  digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,LOW);
  296.  sensor[7] = analogRead(SIG);
  297.  
  298.  // Channel 8 (C8 pin - binary output 0,0,0,1)
  299.  digitalWrite(S0,LOW); digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,HIGH);
  300.  sensor[8] = analogRead(SIG);
  301.  
  302.  // Channel 9 (C9 pin - binary output 1,0,0,1)
  303.  digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,HIGH);
  304.  sensor[9] = analogRead(SIG);
  305.  
  306.  // Channel 10 (C10 pin - binary output 0,1,0,1)
  307.  digitalWrite(S0,LOW); digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,HIGH);
  308.  sensor[10] = analogRead(SIG);
  309.  
  310.  // Channel 11 (C11 pin - binary output 1,1,0,1)
  311.  digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,HIGH);
  312.  sensor[11] = analogRead(SIG);
  313.  
  314.  // Channel 12 (C12 pin - binary output 0,0,1,1)
  315.  digitalWrite(S0,LOW); digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH);
  316.  sensor[12] = analogRead(SIG);
  317.  
  318.  // Channel 13 (C13 pin - binary output 1,0,1,1)
  319.  digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH);
  320.  sensor[13] = analogRead(SIG);
  321.  
  322.  // Channel 14 (C14 pin - binary output 0,1,1,1)
  323.  digitalWrite(S0,LOW); digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH);
  324.  sensor[14] = analogRead(SIG);
  325.  
  326.  // Channel 15 (C15 pin - binary output 1,1,1,1)
  327.  digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH);
  328.  sensor[15] = analogRead(SIG);
  329. }
  330.  
  331. // Drive the Solenoid
  332. String solenoidStatus(int sensor, int solenoidPin) {
  333.  String solenoidState;
  334.  if(sensor <= SoilHumidity) {
  335.    solenoidState = "OFF";
  336.    mcp.digitalWrite(solenoidPin,LOW);
  337.  }
  338.  else {
  339.  solenoidState = "ON";
  340.  mcp.digitalWrite(solenoidPin,HIGH);
  341.  }
  342.  return(solenoidState);
  343. }
  344.  
  345. // Read Solenoid status and display status in html
  346. void driveSolenoid() {
  347.  solenoidState0 = solenoidStatus(sensor[0], solenoid0);
  348.  solenoidState1 = solenoidStatus(sensor[1], solenoid1);
  349.  solenoidState2 = solenoidStatus(sensor[2], solenoid2);
  350.  solenoidState3 = solenoidStatus(sensor[3], solenoid3);
  351.  solenoidState4 = solenoidStatus(sensor[4], solenoid4);
  352.  solenoidState5 = solenoidStatus(sensor[5], solenoid5);
  353.  solenoidState6 = solenoidStatus(sensor[6], solenoid6);
  354.  solenoidState7 = solenoidStatus(sensor[7], solenoid7);
  355.  solenoidState8 = solenoidStatus(sensor[8], solenoid8);
  356.  solenoidState9 = solenoidStatus(sensor[9], solenoid9);
  357.  solenoidState12 = solenoidStatus(sensor[10], solenoid10);
  358.  solenoidState11 = solenoidStatus(sensor[11], solenoid11);
  359.  solenoidState12 = solenoidStatus(sensor[12], solenoid12);
  360.  solenoidState13 = solenoidStatus(sensor[13], solenoid13);
  361.  solenoidState14 = solenoidStatus(sensor[14], solenoid14);
  362.  solenoidState15 = solenoidStatus(sensor[15], solenoid15);
  363. }
  364.  
  365. // Drive the pump and display status in html
  366. void drivePump() {
  367.  if(solenoidState0 == "OFF" && solenoidState1 == "OFF" && solenoidState2 == "OFF" && solenoidState3 == "OFF" &&
  368.     solenoidState4 == "OFF" && solenoidState5 == "OFF" && solenoidState6 == "OFF" && solenoidState7 == "OFF" &&
  369.     solenoidState8 == "OFF" && solenoidState9 == "OFF" && solenoidState10 == "OFF" && solenoidState11 == "OFF" &&
  370.     solenoidState12 == "OFF" && solenoidState13 == "OFF" && solenoidState14 == "OFF" && solenoidState15 == "OFF") {
  371.    if(pumpstate == "ON") {
  372.      pumpstate = "OFF";
  373.      digitalWrite(PUMP,LOW);
  374.    }
  375.  }
  376.  else {
  377.    if(pumpstate == "OFF") {
  378.    pumpstate = "ON";
  379.    digitalWrite(PUMP,HIGH);
  380.    }
  381.  }
  382. }
  383.  
  384. void handleXML(){
  385.  XML="<?xml version='1.0'?>";
  386.  XML+="<xml>";
  387.  XML+="<pumpstate>";
  388.  XML+= pumpstate;
  389.  XML+="</pumpstate>";
  390.  XML+="<sensor0>";
  391.  XML+= sensor[0];
  392.  XML+="</sensor0>";  
  393.  XML+="<sensor1>";
  394.  XML+= sensor[1];
  395.  XML+="</sensor1>";
  396.  XML+="<sensor2>";
  397.  XML+= sensor[2];
  398.  XML+="</sensor2>";
  399.  XML+="<sensor3>";
  400.  XML+= sensor[3];
  401.  XML+="</sensor3>";
  402.  XML+="<sensor4>";
  403.  XML+= sensor[4];
  404.  XML+="</sensor4>";
  405.  XML+="<sensor5>";
  406.  XML+= sensor[5];
  407.  XML+="</sensor5>";
  408.  XML+="<sensor6>";
  409.  XML+= sensor[6];
  410.  XML+="</sensor6>";
  411.  XML+="<sensor7>";
  412.  XML+= sensor[7];
  413.  XML+="</sensor7>";
  414.  XML+="<sensor8>";
  415.  XML+= sensor[8];
  416.  XML+="</sensor8>";
  417.  XML+="<sensor9>";
  418.  XML+= sensor[9];
  419.  XML+="</sensor9>";
  420.  XML+="<sensor10>";
  421.  XML+= sensor[10];
  422.  XML+="</sensor10>";
  423.  XML+="<sensor11>";
  424.  XML+= sensor[11];
  425.  XML+="</sensor11>";
  426.  XML+="<sensor12>";
  427.  XML+= sensor[12];
  428.  XML+="</sensor12>";
  429.  XML+="<sensor13>";
  430.  XML+= sensor[13];
  431.  XML+="</sensor13>";
  432.  XML+="<sensor14>";
  433.  XML+= sensor[14];
  434.  XML+="</sensor14>";
  435.  XML+="<sensor15>";
  436.  XML+= sensor[15];
  437.  XML+="</sensor15>";
  438.  XML+="<solenoidState0>";
  439.  XML+= solenoidState0;
  440.  XML+="</solenoidState0>";
  441.  XML+="<solenoidState1>";
  442.  XML+= solenoidState1;
  443.  XML+="</solenoidState1>";
  444.  XML+="<solenoidState2>";
  445.  XML+= solenoidState2;
  446.  XML+="</solenoidState2>";
  447.  XML+="<solenoidState3>";
  448.  XML+= solenoidState3;
  449.  XML+="</solenoidState3>";
  450.  XML+="<solenoidState4>";
  451.  XML+= solenoidState4;
  452.  XML+="</solenoidState4>";
  453.  XML+="<solenoidState5>";
  454.  XML+= solenoidState5;
  455.  XML+="</solenoidState5>";
  456.  XML+="<solenoidState6>";
  457.  XML+= solenoidState6;
  458.  XML+="</solenoidState6>";
  459.  XML+="<solenoidState7>";
  460.  XML+= solenoidState7;
  461.  XML+="</solenoidState7>";
  462.  XML+="<solenoidState8>";
  463.  XML+= solenoidState8;
  464.  XML+="</solenoidState8>";
  465.  XML+="<solenoidState9>";
  466.  XML+= solenoidState9;
  467.  XML+="</solenoidState9>";
  468.  XML+="<solenoidState10>";
  469.  XML+= solenoidState10;
  470.  XML+="</solenoidState10>";
  471.  XML+="<solenoidState11>";
  472.  XML+= solenoidState11;
  473.  XML+="</solenoidState11>";
  474.  XML+="<solenoidState12>";
  475.  XML+= solenoidState12;
  476.  XML+="</solenoidState12>";
  477.  XML+="<solenoidState13>";
  478.  XML+= solenoidState13;
  479.  XML+="</solenoidState13>";
  480.  XML+="<solenoidState14>";
  481.  XML+= solenoidState14;
  482.  XML+="</solenoidState14>";
  483.  XML+="<solenoidState15>";
  484.  XML+= solenoidState15;
  485.  XML+="</solenoidState15>";
  486.  XML+="</xml>";
  487. server.send(200,"text/xml",XML);
  488. }
  489.  
  490. void setup() {
  491.  Serial.begin(115200);
  492.  mcp.begin();
  493.  pinMode(S0,OUTPUT);   /* Define digital pin as output to the Multiplexer pin SO */
  494.  pinMode(S1,OUTPUT);   /* Define digital pin as output to the Multiplexer pin S1 */
  495.  pinMode(S2,OUTPUT);   /* Define digital pin as output to the Multiplexer pin S2 */
  496.  pinMode(S3,OUTPUT);   /* Define digital pin as output to the Multiplexer pin S3 */
  497.  pinMode(SIG, INPUT);  /* Define analog pin as input from the Multiplexer pin SIG */
  498.  pinMode(PUMP,OUTPUT); /* Define digital pin os output to control pump */
  499.  mcp.pinMode(solenoid0, OUTPUT);
  500.  mcp.pinMode(solenoid1, OUTPUT);
  501.  mcp.pinMode(solenoid2, OUTPUT);
  502.  mcp.pinMode(solenoid3, OUTPUT);
  503.  mcp.pinMode(solenoid4, OUTPUT);
  504.  mcp.pinMode(solenoid5, OUTPUT);
  505.  mcp.pinMode(solenoid6, OUTPUT);
  506.  mcp.pinMode(solenoid7, OUTPUT);
  507.  mcp.pinMode(solenoid8, OUTPUT);
  508.  mcp.pinMode(solenoid9, OUTPUT);
  509.  mcp.pinMode(solenoid10, OUTPUT);
  510.  mcp.pinMode(solenoid11, OUTPUT);
  511.  mcp.pinMode(solenoid12, OUTPUT);
  512.  mcp.pinMode(solenoid13, OUTPUT);
  513.  mcp.pinMode(solenoid14, OUTPUT);
  514.  mcp.pinMode(solenoid15, OUTPUT);
  515.  digitalWrite(PUMP,LOW);
  516.  mcp.digitalWrite(solenoid0,LOW);
  517.  mcp.digitalWrite(solenoid1,LOW);
  518.  mcp.digitalWrite(solenoid2,LOW);
  519.  mcp.digitalWrite(solenoid3,LOW);
  520.  mcp.digitalWrite(solenoid4,LOW);
  521.  mcp.digitalWrite(solenoid5,LOW);
  522.  mcp.digitalWrite(solenoid6,LOW);
  523.  mcp.digitalWrite(solenoid7,LOW);
  524.  mcp.digitalWrite(solenoid8,LOW);
  525.  mcp.digitalWrite(solenoid9,LOW);
  526.  mcp.digitalWrite(solenoid10,LOW);
  527.  mcp.digitalWrite(solenoid11,LOW);
  528.  mcp.digitalWrite(solenoid12,LOW);
  529.  mcp.digitalWrite(solenoid13,LOW);
  530.  mcp.digitalWrite(solenoid14,LOW);
  531.  mcp.digitalWrite(solenoid15,LOW);
  532.  WiFiManager wifiManager;
  533.  wifiManager.autoConnect("AutoConnectAP");
  534.  Serial.println("Yourconnected...yeey :)");
  535.  
  536.  server.on("/", handleRoot);
  537.  server.on("/reqEtatVariables",handleXML);
  538.  server.onNotFound(handleNotFound);   /* page not found */
  539.  
  540.  server.begin();
  541.  Serial.println("HTTP server started");
  542.  Serial.println(WiFi.localIP());
  543. }
  544.  
  545. void loop() {
  546.  server.handleClient();
  547.  getSoilHumidity();
  548.  driveSolenoid();
  549.  drivePump();
  550. }
Add Comment
Please, Sign In to add comment