Advertisement
RuiViana

ESP_2_Lamps

Jan 16th, 2017
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.51 KB | None | 0 0
  1. #include <SHT1x.h>                                        // https://github.com/practicalarduino/SHT1x
  2. #define dataPin  0                                        // GPIO 0  D3  Port para o Data do SHT10
  3. #define clockPin 15                                       // GPIO 15 D8  Port para o Clock do SHT10
  4. SHT1x sht1x(dataPin, clockPin);                           // Instancia shtx1
  5. #include <ESP8266WebServer.h>                             // Bibioteca para Servidor Web ESP8266
  6. #include <ESP8266mDNS.h>                                  // Bibioteca para ..... ESP8266
  7. MDNSResponder mdns;                                       // ......
  8. const char* ssid = "xxxxx";                               // Use sua credenciais de rede wifi
  9. const char* password = "yyyyy";
  10. ESP8266WebServer server(80);                              // Instancia server
  11. //  Strings com HTML
  12. String Q_1 = "<!DOCTYPE HTML><html><head><meta http-equiv='refresh' content='1;URL=/Controle'/></head><h1><center>ESP8266 Controle de luz</center>";
  13. String Q_2 = "</p></center><h3><BR></h3><html>\r\n";
  14. String QlSl = "";                                         // Quarto ligado Sala ligada
  15. String QdSl = "";                                         // Quarto desligado Sala ligada
  16. String QlSd = "";                                         // Quarto ligado Sala desligada
  17. String QdSd = "";                                         // Quarto desligado Sala desligada
  18. String Qil = "";
  19. String Qid = "";
  20. String LuzQuarto;
  21. String LuzSala;
  22. float temp_c;                                               // Variavel para temperatura
  23. int humidity;                                               // Variavel para umidade
  24. int gpio4 = 4;                                              // Port para ligar Controle do triac (Pino 2 do MOC3023)
  25. int gpio2 = 2;                                              // Port somente para visualizacao durante teste. Pode ser comentado na versao para instalar
  26. const int gpio5 = 5;                                        // Port para ligar o interruptor
  27. int gpio13 = 13;                                            // Port para ligar Controle do triac (Pino 2 do MOC3023)
  28. const int gpio14 = 14;                                      // Port para ligar o interruptor
  29. byte gpio5_atual = 0;                                       // Variavel para staus de GPIO5 (Status do interruptor)
  30. byte gpio14_atual = 0;                                      // Variavel para staus de GPIO14 (Status do interruptor)
  31. unsigned long previousMillis = 0;                           // Variavel para medir periodos
  32. const long interval = 2000;                                 // Periodo de leitura da temperatura e umidade
  33. //---------------------------------------
  34. void gettemperature()                                       // Funcoa para ler temperatura e umidade
  35. {
  36.   if (millis() - previousMillis >= interval)                // Se passou o intervalo
  37.   {
  38.     previousMillis = millis();                              // Restaura valor de previousMillis
  39.     humidity = sht1x.readHumidity();                        // Le umidade em SHT10
  40.     temp_c = sht1x.readTemperatureC();                      // Le temperatura em SHT10
  41.   }
  42. }
  43. //---------------------------------------
  44. void setup(void)
  45. {
  46.   QlSl += Q_1;                                              // Monta tela pra informar que a luz
  47.   QlSl += "<p><center>Quarto</p><p><a href=\"/Controle?LuzQuarto=off \"><button style=\"background-color: rgb(255, 0,   0);height: 100px; width: 200px;\"><h1> Acesa</h1></button></a>";
  48.   QlSl += "<p><center>Sala</p><p><a href=\"/Controle?LuzSala=on \"><button style=\"background-color: rgb(0, 0,   255);height: 100px; width: 200px;\"><h1> Apagada</h1></button></a>";
  49.  
  50.   QdSl += Q_1;                                              // Monta tela pra informar que a luz
  51.   QdSl += "<p><center>Quarto</p><p><a href=\"/Controle?LuzQuarto=on \"><button style=\"background-color: rgb(0, 255,   0);height: 100px; width: 200px;\"><h1> Apagada</h1></button></a>";
  52.   QdSl += "<p><center>Sala</p><p><a href=\"/Controle?LuzSala=on \"><button style=\"background-color: rgb(0, 0, 255);height: 100px; width: 200px;\"><h1> Apagada</h1></button></a>";
  53.  
  54.   QlSd += Q_1;                                              // Monta tela pra informar que a luz
  55.   QlSd += "<p><center>Quarto</p><p><a href=\"/Controle?LuzQuarto=off \"><button style=\"background-color: rgb(255, 0,   0);height: 100px; width: 200px;\"><h1> Acesa</h1></button></a>";
  56.   QlSd += "<p><center>Sala</p><p><a href=\"/Controle?LuzSala=off \"><button style=\"background-color: rgb(255, 255,   0);height: 100px; width: 200px;\"><h1> Acesa</h1></button></a>";
  57.  
  58.   QdSd += Q_1;                                              // Monta tela pra informar que a luz
  59.   QdSd += "<p><center>Quarto</p><p><a href=\"/Controle?LuzQuarto=on \"><button style=\"background-color: rgb(0, 255,   0);height: 100px; width: 200px;\"><h1> Apagada</h1></button></a>";
  60.   QdSd += "<p><center>Sala</p><p><a href=\"/Controle?LuzSala=off \"><button style=\"background-color: rgb(255, 255,   0);height: 100px; width: 200px;\"><h1> Acesa</h1></button></a>";
  61.  
  62.   pinMode(gpio5, INPUT_PULLUP);                             // Define GPIO5 como entrada e liga o resistor de pullup
  63.   pinMode(gpio14, INPUT_PULLUP);                            // Define GPIO5 como entrada e liga o resistor de pullup
  64.   gpio5_atual = digitalRead(gpio5);                         // Atualisa status de GPIO5
  65.   gpio14_atual = digitalRead(gpio14);                       // Atualisa status de GPIO5
  66.   pinMode(gpio2, OUTPUT);                                   // Define GPIO2 como saida (So pra diagnostico)
  67.   pinMode(gpio4, OUTPUT);;                                  // Define GPIO4 como saida
  68.   pinMode(gpio13, OUTPUT);;                                 // Define GPIO4 como saida
  69.   digitalWrite(gpio4, HIGH);                                // Liga GPIO2  (So pra diagnostico)
  70.   digitalWrite(gpio13, HIGH);                               // Liga GPIO4 Acende a Luz
  71.   Serial.begin(115200);                                     // Inicialisa o serial port em 115200
  72.   WiFi.begin(ssid, password);                               // Inicialisa o wifi
  73.   Serial.println("");                                       // Imprime
  74.   while (WiFi.status() != WL_CONNECTED)                     // Aguarda conexão
  75.   {
  76.     delay(500);                                             // Delay
  77.     Serial.print(".");                                      // Imprime . enquanto não conecta
  78.   }
  79.   Serial.println("");                                       // Imprime
  80.   Serial.print("Connected to ");
  81.   Serial.println(ssid);
  82.   Serial.print("IP address: ");
  83.   Serial.println(WiFi.localIP());
  84.   if (mdns.begin("esp8266", WiFi.localIP()))                // Se ......????
  85.   {
  86.     Serial.println("MDNS responder started");               // Imprime
  87.   }
  88.   server.on("/", []()                                       // Ao requeste
  89.   {
  90.     server.send(200, "text/html", QlSl);                    // Executa o HTML Ql (Quarto ligado)
  91.   });
  92.   server.on("/Controle", []()                               // Ao requeste /Quarto
  93.   {
  94.     //gettemperature();                                     // Le temperatura e umidade. Comentar se tiver sem sensor pois fica lento
  95.     LuzQuarto = server.arg("LuzQuarto");                    // Recupera o valor do parametro luz enviado
  96.     LuzSala = server.arg("LuzSala");                        // Recupera o valor do parametro luz enviado
  97.     if (LuzQuarto == "off") digitalWrite(gpio4, HIGH);      // Se o valor de luz e off desliga a saida
  98.     if (LuzQuarto == "on") digitalWrite(gpio4, LOW);        // Se o valor de luz e on liga a saida
  99.     if (LuzSala == "off") digitalWrite(gpio13, HIGH);       // Se o valor de luz e off desliga a saida
  100.     if (LuzSala == "on") digitalWrite(gpio13, LOW);         // Se o valor de luz e on liga a saida
  101.     digitalWrite(gpio2, digitalRead(gpio13));                // Gpio2 = Gpio4 Diagnostico
  102.     if ((digitalRead(gpio4) == LOW)  && (digitalRead(gpio13) == HIGH) )   // Se a saida esta ligada, carrega a pagina "ligada"
  103.     {
  104.       Qil += QlSl;                                          // Monta tela nova quarto ligado
  105.       Qil +=  "<p><center>Temperatura: " + String((float)temp_c) + "C </p>";
  106.       Qil +=  "<p><center>Umidade: " + String((int)humidity) + "% </p>";
  107.       Qil += Q_2;
  108.       server.send(200, "text/html", Qil);                   // Mostra Quarto ligado
  109.       Qil = "";                                             // Limpa valor de temperatura e umidade
  110.     }
  111.     if ((digitalRead(gpio4) == HIGH) && (digitalRead(gpio13) == HIGH) )   // Se a saida esta desligada, carrega a pagina "desligada"
  112.     {
  113.       Qid += QdSl;                                          // Monta tela nova quarto desligado
  114.       Qid += "<p><center>Temperatura: " + String((float)temp_c) + "C </p>";
  115.       Qid += "<p><center>Umidade: " + String((int)humidity) + "% </p>";
  116.       Qid += Q_2;
  117.       server.send(200, "text/html", Qid);                   // Mostra Quarto desligado
  118.       Qid = "";                                             // Limpa valor de temperatura e umidade
  119.     }
  120.     if ((digitalRead(gpio4) == LOW)   && (digitalRead(gpio13) == LOW) )   // Se a saida esta ligada, carrega a pagina "ligada"
  121.     {
  122.       Qil += QlSd;                                          // Monta tela nova quarto ligado
  123.       Qil +=  "<p><center>Temperatura: " + String((float)temp_c) + "C </p>";
  124.       Qil +=  "<p><center>Umidade: " + String((int)humidity) + "% </p>";
  125.       Qil += Q_2;
  126.       server.send(200, "text/html", Qil);                   // Mostra Quarto ligado
  127.       Qil = "";                                             // Limpa valor de temperatura e umidade
  128.     }
  129.     if ((digitalRead(gpio4) == HIGH)    && (digitalRead(gpio13) == LOW) )   // Se a saida esta desligada, carrega a pagina "desligada"
  130.     {
  131.       Qid += QdSd;                                          // Monta tela nova quarto desligado
  132.       Qid += "<p><center>Temperatura: " + String((float)temp_c) + "C </p>";
  133.       Qid += "<p><center>Umidade: " + String((int)humidity) + "% </p>";
  134.       Qid += Q_2;
  135.       server.send(200, "text/html", Qid);                   // Mostra Quarto desligado
  136.       Qid = "";                                             // Limpa valor de temperatura e umidade
  137.     }
  138.     delay(100);                                             // Delay
  139.   });
  140.   server.begin();                                           // Inicaliza servidor
  141.   Serial.println("HTTP server started");                    // Imprime
  142. }
  143. //--------------------------------------------------
  144. void loop(void)
  145. {
  146.   server.handleClient();                                    // Executa instancia
  147.   if (digitalRead(gpio5) !=  gpio5_atual)                   // Se o valor do SW alterou
  148.   {
  149.     delay(40);                                              // Delay
  150.     if (digitalRead(gpio5) !=  gpio5_atual)                 // Se o valor do SW alterou
  151.     {
  152.       digitalWrite(gpio4, !digitalRead(gpio4));             // Inverte a saida
  153.       digitalWrite(gpio2, digitalRead(gpio4));              // Gpio2 = Gpio4     Diagnostico
  154.       gpio5_atual = digitalRead(gpio5);                     // Atualisa o Gpio5 atual
  155.     }
  156.   }
  157.   if (digitalRead(gpio14) !=  gpio14_atual)                 // Se o valor do SW alterou
  158.   {
  159.     delay(40);                                              // Delay
  160.     if (digitalRead(gpio14) !=  gpio14_atual)               // Se o valor do SW alterou
  161.     {
  162.       digitalWrite(gpio13, !digitalRead(gpio13));           // Inverte a saida
  163.       gpio14_atual = digitalRead(gpio14);                   // Atualisa o Gpio14 atual
  164.     }
  165.   }
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement