Advertisement
RuiViana

Agua_Planta

Jun 12th, 2017
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.73 KB | None | 0 0
  1. /*  Este sketch aciona o sistema de irrigação
  2.   O sistema é ligado automaticamente a cada tempo calculado por
  3.   numero de segundos / 40 segundos
  4.   Está programado para ligar a cada 86400 segundos (24 Horas) 2160 ciclos de 40 segundos
  5.   O valor é definido para variavel count.
  6.   O sistema fica ligado pelo tempo definido pela variavel Tempo em usegundos.
  7.   A tecla ajuste deine o horario de inicio do ciclo de aguar.
  8.  
  9.   Sistem rodando a partir de 09/06/2017
  10.  
  11. */
  12. extern "C"
  13. {
  14. #include "user_interface.h"
  15. }
  16. os_timer_t mTimer;
  17. unsigned int Count = 1;
  18. byte Flag2;
  19.  
  20. #include <ESP8266WebServer.h>                                 // Bibioteca para Servidor Web ESP8266  
  21. //#include "setting.h"
  22. const char* ssid = "sss";           // Sua rede                      
  23. const char* password = "pppp";      // Sua senha
  24. ESP8266WebServer server(80);                                  // Instancia server
  25. unsigned long Intervalo = 0;    // Tempo decorrido
  26. unsigned long Tempo = 60000;  // 60 Segundos
  27.  
  28. //  Strings com HTML
  29. String A_1 = "<!DOCTYPE HTML><html><head><meta http-equiv='refresh' content='1;URL=/Controle'/></head><h1><center> Controle de Agua</center>";
  30. String A_2 = "</p></center><h3><BR></h3><html>\r\n";
  31. String Al = "";                                               // Agua ligada
  32. String Ad = "";                                               // Agua desligada
  33. String Ail = "";
  34. String Aid = "";
  35. String Agua;
  36. String Hora;
  37. String Min;
  38. int HoraT = 0;
  39. int MinT = 0;
  40.  
  41. #define Saida1 2                                              // GPIO Port para ligar Controle do triac (Pino 2 do MOC3023)
  42. const int Switch1 = 4;                                        // GPIO Port para ligar o interruptor
  43. byte Switch1_atual = 0;                                       // Variavel para staus de GPIO (Status do interruptor)
  44. int Flag1 = 0;
  45. //---------------------------
  46. void tCallback(void *tCall)
  47. {
  48.   Count++;
  49.   Flag2 = 0;
  50. }
  51. //---------------------------
  52. void usrInit(void)
  53. {
  54.   os_timer_disarm(&mTimer);
  55.   os_timer_setfn(&mTimer, tCallback, NULL);
  56.   os_timer_arm(&mTimer, 30000, true);             // Interrupt a cada 30.000ms (30 seg)
  57. }
  58. //---------------------------------------
  59. void setup(void)
  60. {
  61.   usrInit();    //iniciar a interrupcao
  62.   Al += A_1;                                                  // Monta tela pra informar que a luz
  63.   Al += "<p><center>Agua</p><p><a href=\"/Controle?Agua=off \"><button style=\"background-color: rgb(255, 0,   0);height: 100px; width: 200px;\"><h1> ON</h1></button></a>";
  64.   Al += "<p><center>&nbsp;</p>";
  65.   Al += "<p><center>&nbsp;</p>";
  66.   Al += "<p><a href=\"/Controle?Hora=on \"><button style=\"background-color: rgb(255, 0,   0);height: 50px; width: 150px;\"><h1>Acerta+1H</h1></button></a>";
  67.   Al += "<p><a href=\"/Controle?Min=on \"><button style=\"background-color: rgb(255, 0,   0);height: 50px; width: 150px;\"><h1>Acerta+1M</h1></button></a>";
  68.  
  69.   Ad += A_1;                                                  // Monta tela pra informar que a luz
  70.   Ad += "<p><center>Agua</p><p><a href=\"/Controle?Agua=on \"><button style=\"background-color: rgb(0, 255,   0);height: 100px; width: 200px;\"><h1> OFF</h1></button></a>";
  71.   Ad += "<p><center>&nbsp;</p>";
  72.   Ad += "<p><center>&nbsp;</p>";
  73.   Ad += "<p><a href=\"/Controle?Hora=on \"><button style=\"background-color: rgb(255, 0,   0);height: 50px; width: 150px;\"><h1>Acerta+1H</h1></button></a>";
  74.   Ad += "<p><a href=\"/Controle?Min=on \"><button style=\"background-color: rgb(255, 0,   0);height: 50px; width: 150px;\"><h1>Acerta+1M</h1></button></a>";
  75.   pinMode(Switch1, INPUT_PULLUP);                             // Define GPIO5 como entrada e liga o resistor de pullup
  76.   Switch1_atual = digitalRead(Switch1);                       // Atualisa status de GPIO
  77.   pinMode(Saida1, OUTPUT);                                    // Define GPIO como saida
  78.   digitalWrite(Saida1, LOW);                                  // Liga GPIO
  79.   Serial.begin(115200);                                       // Inicialisa o serial port em 115200
  80.   WiFi.begin(ssid, password);                                 // Inicialisa o wifi
  81.   IPAddress subnet(255, 255, 255, 0);                                             // Acrescentei para fixar o IP  12/5/2017
  82.   WiFi.config(IPAddress(192, 168, 0, 28), IPAddress(192, 168, 0, 1), subnet);     // Idem
  83.  
  84.   Serial.println("");                                         // Imprime
  85.   while (WiFi.status() != WL_CONNECTED)                       // Aguarda conexão
  86.   {
  87.     delay(500);                                               // Delay
  88.     Serial.print(".");                                        // Imprime . enquanto não conecta
  89.   }
  90.   Serial.println("");                                         // Imprime
  91.   Serial.print("Connected to ");
  92.   Serial.println(ssid);
  93.   Serial.print("IP address: ");
  94.   Serial.println(WiFi.localIP());
  95.  
  96.   server.on("/", []()                                         // Ao requeste
  97.   { server.send(200, "text/html", Al);                        // Executa o HTML Al (Agua ligada)
  98.   });
  99.   server.on("/Controle", []()                                 // Ao requeste /Agua
  100.   {
  101.     Agua = server.arg("Agua");                                // Recupera o valor do parametro luz enviado
  102.     Hora = server.arg("Hora");
  103.     Min = server.arg("Min");
  104.     if (Agua == "off") digitalWrite(Saida1, LOW);             // Se o valor de Agua e off desliga a saida
  105.     if (Agua == "on") digitalWrite(Saida1, HIGH);             // Se o valor de Agua e on liga a saida
  106.     if (Hora == "on") Count = Count + 120;                            // Se o valor de Tempo e off muda horario de ligar
  107.     if (Min == "on") Count = Count + 2;                            // Se o valor de Tempo e off muda horario de ligar
  108.     if (digitalRead(Saida1) == HIGH)                          // Se a saida esta ligada, carrega a pagina "ligada"
  109.     {
  110.       Ail += Al;                                            // Monta tela nova Agua ligada
  111.       Ail +=  "<p><center>Horas: " + String(HoraT) + ":" + String(MinT) + " </p>";
  112.       Ail += A_2;
  113.       server.send(200, "text/html", Ail);                   // Mostra Agua ligada
  114.       Ail = "";                                             // Limpa valor de temperatura e umidade
  115.     }
  116.     if (digitalRead(Saida1) == LOW)    // Se a saida esta desligada, carrega a pagina "desligada"
  117.     {
  118.       Aid += Ad;                                            // Monta tela nova Agua desligada
  119.       Aid +=  "<p><center>Horas: " + String(HoraT) + ":" + String(MinT) + " </p>";
  120.       Aid += A_2;
  121.       server.send(200, "text/html", Aid);                   // Mostra Agua desligada
  122.       Aid = "";                                             // Limpa valor de temperatura e umidade
  123.     }
  124.     delay(100);                                               // Delay
  125.   });
  126.   server.begin();                                             // Inicaliza servidor
  127.   Serial.println("HTTP server started");                      // Imprime
  128.   Intervalo = millis();
  129. }
  130. //--------------------------------------------------
  131. void loop(void)
  132. {
  133.   server.handleClient();                                      // Executa instancia
  134.   if (digitalRead(Saida1) ==  HIGH)
  135.   {
  136.     if (Flag1 == 0)
  137.     {
  138.       Flag1 = 1;
  139.       Intervalo = millis();
  140.     }
  141.     if ( millis() - Intervalo >= Tempo)
  142.     {
  143.       digitalWrite(Saida1, LOW);
  144.     }
  145.   }
  146.   if (digitalRead(Saida1) ==  LOW)
  147.   {
  148.     Flag1 = 0;
  149.   }
  150.   if (Flag2 == 0)
  151.   {
  152.     Flag2 = 1;
  153.     if (Count >= 2880)          // 24 Horas  86400 seg 86400/30 = 2880
  154.     {
  155.       digitalWrite(Saida1, HIGH);
  156.       Count = 0;
  157.     }
  158.   }
  159.   HoraT = Count / 120;
  160.   MinT  = (Count / 2) - (HoraT * 60);
  161.   yield();                  //um putosegundo soh pra respirar
  162.   //unsigned long  MeuID = ESP.getFlashChipSize();
  163.   //Serial.println(MeuID,HEX);
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement