Advertisement
RuiViana

New_4_Botoes

Jan 29th, 2017
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.44 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 = "xxxxxx";                              // Use sua credenciais de rede wifi
  9. const char* password = "yyyyyy";
  10. ESP8266WebServer server(80);                                // Instancia server
  11. //  Strings com HTML
  12.  
  13. String Tela_1 = "<!DOCTYPE HTML><html><head><meta http-equiv='refresh' content='1;URL=/Controle'/></head><h1><center>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Controle WiFi</center>";
  14. String Tela_2 = "</p></center><h3><BR></h3><html>\r\n";
  15.  
  16. String Out1On = "<p><center>Quarto&nbsp;<a href=\"/Controle?LuzQuarto=off \"><button style=\"background-color: rgb(255, 0, 0);height: 65px; width: 200px;\"><h1>Acesa</h1></button></a>";
  17. String Out2On = "<p><center>Sala&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/Controle?LuzSala=off \"><button style=\"background-color: rgb(255, 0, 0);height: 65px; width: 200px;\"><h1>Acesa</h1></button></a>";
  18. String Out3On =  "<p><center>Banho&nbsp;&nbsp;<a href=\"/Controle?LuzBanho=off \"><button style=\"background-color: rgb(255, 0, 0);height: 65px; width: 200px;\"><h1>Acesa</h1></button></a>";
  19. String Out4On =  "<p><center>Carga&nbsp;&nbsp;<a href=\"/Controle?Carga=off \"><button style=\"background-color: rgb(255, 0, 0);height: 65px; width: 200px;\"><h1>Acesa</h1></button></a>";
  20.  
  21. String Out1Off = "<p><center>Quarto&nbsp;<a href=\"/Controle?LuzQuarto=on \"><button style=\"background-color: rgb(0, 255, 0);height: 65px; width: 200px;\"><h1>Apagada</h1></button></a>";
  22. String Out2Off = "<p><center>Sala&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/Controle?LuzSala=on \"><button style=\"background-color: rgb(0, 255, 0);height: 65px; width: 200px;\"><h1>Apagada</h1></button></a>";
  23. String Out3Off = "<p><center>Banho&nbsp;&nbsp;<a href=\"/Controle?LuzBanho=on \"><button style=\"background-color: rgb(0, 255, 0);height: 65px; width: 200px;\"><h1>Apagada</h1></button></a>";
  24. String Out4Off = "<p><center>Carga&nbsp;&nbsp;<a href=\"/Controle?Carga=on \"><button style=\"background-color: rgb(0, 255, 0);height: 65px; width: 200px;\"><h1>Apagada</h1></button></a>";
  25.  
  26. String  QlSlBlCl = Tela_1  + Out1Off  + Out2Off  + Out3Off  + Out4Off;    // 0F  Quarto ligado    Sala ligada    Banheiro ligado    Carregador ligado
  27. String  QlSlBlCd = Tela_1  + Out1Off  + Out2Off  + Out3Off  + Out4On;     // 0E  Quarto ligado    Sala ligada    Banheiro ligado    Carregador desligado
  28. String  QlSlBdCl = Tela_1  + Out1Off  + Out2Off  + Out3On   + Out4Off;    // 0D  Quarto ligado    Sala ligada    Banheiro desligado Carregador ligado
  29. String  QlSlBdCd = Tela_1  + Out1Off  + Out2Off  + Out3On   + Out4On;     // 0C  Quarto ligado    Sala ligada    Banheiro desligado Carregador desligado
  30. String  QlSdBlCl = Tela_1  + Out1Off  + Out2On   + Out3Off  + Out4Off;    // 0B  Quarto ligado    Sala desligada Banheiro ligado    Carregador ligado
  31. String  QlSdBlCd = Tela_1  + Out1Off  + Out2On   + Out3Off  + Out4On;     // 0A  Quarto ligado    Sala desligada Banheiro ligado    Carregador desligado
  32. String  QlSdBdCl = Tela_1  + Out1Off  + Out2On   + Out3On   + Out4Off;    // 09  Quarto ligado    Sala desligada Banheiro desligado Carregador ligado
  33. String  QlSdBdCd = Tela_1  + Out1Off  + Out2On   + Out3On   + Out4On;     // 08  Quarto ligado    Sala desligada Banheiro desligado Carregador desligado
  34. String  QdSlBlCl = Tela_1  + Out1On   + Out2Off  + Out3Off  + Out4Off;    // 07  Quarto desligado Sala ligada    Banheiro ligado    Carregador ligado
  35. String  QdSlBlCd = Tela_1  + Out1On   + Out2Off  + Out3Off  + Out4On;     // 06  Quarto desligado Sala ligada    Banheiro ligado    Carregador desligado
  36. String  QdSlBdCl = Tela_1  + Out1On   + Out2Off  + Out3On   + Out4Off;    // 05  Quarto desligado Sala ligada    Banheiro desligado Carregador ligado
  37. String  QdSlBdCd = Tela_1  + Out1On   + Out2Off  + Out3On   + Out4On;     // 04  Quarto desligado Sala ligada    Banheiro desligado Carregador desligado
  38. String  QdSdBlCl = Tela_1  + Out1On   + Out2On   + Out3Off  + Out4Off;    // 03  Quarto desligado Sala desligada Banheiro ligado    Carregador ligado
  39. String  QdSdBlCd = Tela_1  + Out1On   + Out2On   + Out3Off  + Out4On;     // 02  Quarto desligado Sala desligada Banheiro ligado    Carregador desligado
  40. String  QdSdBdCl = Tela_1  + Out1On   + Out2On   + Out3On   + Out4Off;    // 01  Quarto desligado Sala desligada Banheiro desligado Carregador ligado
  41. String  QdSdBdCd = Tela_1  + Out1On   + Out2On   + Out3On   + Out4On;     // 00  Quarto desligado Sala desligada Banheiro desligado Carregador desligado
  42.  
  43. String Tela = "";
  44. String Telaf =  Tela_2;
  45. //String Telaf = "<p><center>Temperatura: " + String((float)temp_c) + "C </p>" + "<p><center>Umidade: " + String((int)humidity) + "% </p>" + Tela_2;
  46.  
  47. String LuzQuarto;
  48. String LuzSala;
  49. String LuzBanho;
  50. String Carga;
  51.  
  52. #define Diag   2                                              // GPIO2 Port somente para visualizacao durante teste. Pode ser comentado na versao para instalar
  53.  
  54. float temp_c;                                                 // Variavel para temperatura
  55. int humidity;                                                 // Variavel para umidade
  56. #define Saida1 4                                              // GPIO4 Port para ligar Controle do triac (Pino 2 do MOC3023)
  57. const int Switch1 = 5;                                        // GPIO5 Port para ligar o interruptor
  58.  
  59. #define Saida2   13                                           // GPIO13 Port para ligar Controle do triac (Pino 2 do MOC3023)
  60. const int Switch2 = 14;                                       // GPIO14 Port para ligar o interruptor
  61.  
  62. #define Saida3 16                                             // GPIO12 Port para ligar Controle do triac (Pino 2 do MOC3023)
  63. const int Switch3 = 12;                                       // GPIO16 Port para ligar o interruptor
  64.  
  65. #define Saida4 15                                             // GPIO0 Port para ligar Controle do triac (Pino 2 do MOC3023)
  66. const int Switch4 = 0;                                        // GPIO15 Port para ligar o interruptor
  67.  
  68. byte Switch1_atual = 0;                                       // Variavel para staus de GPIO5 (Status do interruptor)
  69. byte Switch2_atual = 0;                                       // Variavel para staus de GPIO14 (Status do interruptor)
  70. byte Switch3_atual = 0;                                       // Variavel para staus de GPIO16 (Status do interruptor)
  71. byte Switch4_atual = 0;                                       // Variavel para staus de GPIO15 (Status do interruptor)
  72.  
  73. byte Bit0 = 0;
  74. byte Bit1 = 0;
  75. byte Bit2 = 0;
  76. byte Bit3 = 0;
  77.  
  78. /*
  79.    unsigned long previousMillis = 0;                          // Variavel para medir periodos
  80.   const long interval = 2000;                                   // Periodo de leitura da temperatura e umidade
  81.   //---------------------------------------
  82.   void gettemperature()                                         // Funcoa para ler temperatura e umidade
  83.   {
  84.   if (millis() - previousMillis >= interval)                  // Se passou o intervalo
  85.   {
  86.     previousMillis = millis();                                // Restaura valor de previousMillis
  87.     humidity = sht1x.readHumidity();                          // Le umidade em SHT10
  88.     temp_c = sht1x.readTemperatureC();                        // Le temperatura em SHT10
  89.   }
  90.   }*/
  91. //---------------------------------------
  92. void setup(void)
  93. {
  94.   pinMode(Switch1, INPUT_PULLUP);                           // Define GPIO5 como entrada e liga o resistor de pullup
  95.   pinMode(Switch2, INPUT_PULLUP);                           // Define GPIO como entrada e liga o resistor de pullup
  96.   pinMode(Switch3, INPUT_PULLUP);                           // Define GPIO como entrada e liga o resistor de pullup
  97.   pinMode(Switch4, INPUT_PULLUP);                           // Define GPIO como entrada e liga o resistor de pullup
  98.   Switch1_atual = digitalRead(Switch1);                     // Atualisa status de GPIO5
  99.   Switch2_atual = digitalRead(Switch2);                     // Atualisa status de GPIO
  100.   Switch3_atual = digitalRead(Switch3);                     // Atualisa status de GPIO
  101.   Switch4_atual = digitalRead(Switch4);                     // Atualisa status de GPIO
  102.   pinMode(Diag, OUTPUT);                                    // Define GPIO2 como saida (So pra diagnostico)
  103.   pinMode(Saida1, OUTPUT);                                  // Define GPIO4 como saida
  104.   pinMode(Saida2, OUTPUT);                                  // Define GPIO como saida
  105.   pinMode(Saida3, OUTPUT);                                  // Define GPIO como saida
  106.   pinMode(Saida4, OUTPUT);                                  // Define GPIO como saida
  107.   digitalWrite(Saida1, HIGH);                               // Liga GPIO
  108.   digitalWrite(Saida2, HIGH);                               // Liga GPIO
  109.   digitalWrite(Saida3, HIGH);                               // Liga GPIO
  110.   digitalWrite(Saida4, HIGH);                               // Liga GPIO
  111.  
  112.   Serial.begin(115200);                                     // Inicialisa o serial port em 115200
  113.   WiFi.begin(ssid, password);                               // Inicialisa o wifi
  114.   Serial.println("");                                       // Imprime
  115.   while (WiFi.status() != WL_CONNECTED)                     // Aguarda conexΓ£o
  116.   {
  117.     delay(500);                                             // Delay
  118.     Serial.print(".");                                      // Imprime . enquanto nΓ£o conecta
  119.   }
  120.   Serial.println("");                                       // Imprime
  121.   Serial.print("Connected to ");
  122.   Serial.println(ssid);
  123.   Serial.print("IP address: ");
  124.   Serial.println(WiFi.localIP());
  125.   if (mdns.begin("esp8266", WiFi.localIP()))                // Se ......????
  126.   {
  127.     Serial.println("MDNS responder started");               // Imprime
  128.   }
  129.   server.on("/", []()                                       // Ao requeste
  130.   {
  131.     server.send(200, "text/html", QlSlBlCl);                    // Executa o HTML Ql (Quarto ligado)
  132.   });
  133.   server.on("/Controle", []()                               // Ao requeste /Quarto
  134.   {
  135.     //gettemperature();                                     // Le temperatura e umidade. Comentar se tiver sem sensor pois fica lento
  136.     LuzQuarto = server.arg("LuzQuarto");                    // Recupera o valor do parametro luz enviado
  137.     LuzSala = server.arg("LuzSala");                        // Recupera o valor do parametro luz enviado
  138.     LuzBanho = server.arg("LuzBanho");                      // Recupera o valor do parametro luz enviado
  139.     Carga = server.arg("Carga");                            // Recupera o valor do parametro luz enviado
  140.     if (LuzQuarto == "off") digitalWrite(Saida1, HIGH);     // Se o valor de luz e off desliga a saida
  141.     if (LuzQuarto == "on") digitalWrite(Saida1, LOW);       // Se o valor de luz e on liga a saida
  142.     if (LuzSala == "off") digitalWrite(Saida2, HIGH);       // Se o valor de luz e off desliga a saida
  143.     if (LuzSala == "on") digitalWrite(Saida2, LOW);         // Se o valor de luz e on liga a saida
  144.     if (LuzBanho == "off") digitalWrite(Saida3, HIGH);      // Se o valor de luz e off desliga a saida
  145.     if (LuzBanho == "on") digitalWrite(Saida3, LOW);        // Se o valor de luz e on liga a saida
  146.     if (Carga == "off") digitalWrite(Saida4, HIGH);         // Se o valor de luz e off desliga a saida
  147.     if (Carga == "on") digitalWrite(Saida4, LOW);           // Se o valor de luz e on liga a saida
  148.  
  149.     digitalWrite(Diag, digitalRead(Saida2));                // Gpio2 = Gpio4 Diagnostico
  150.  
  151.     Bit0 = digitalRead(Saida1);
  152.     Bit1 = digitalRead(Saida2);
  153.     Bit2 = digitalRead(Saida3);
  154.     Bit3 = digitalRead(Saida4);
  155.     byte Selecao = Bit3 + (Bit2 << 1) +  (Bit1 << 2) + (Bit0 << 3);
  156.  
  157.     switch (Selecao)
  158.     {
  159.       case 0:
  160.         Tela += QdSdBdCd + Telaf;                               // Monta tela nova
  161.         break;
  162.       case 1:
  163.         Tela += QdSdBdCl + Telaf;                               // Monta tela nova
  164.         break;
  165.       case 2:
  166.         Tela += QdSdBlCd + Telaf;                               // Monta tela nova
  167.         break;
  168.       case 3:
  169.         Tela += QdSdBlCl + Telaf;                               // Monta tela nova
  170.         break;
  171.       case 4:
  172.         Tela += QdSlBdCd + Telaf;                               // Monta tela nova
  173.         break;
  174.       case 5:
  175.         Tela += QdSlBdCl + Telaf;                               // Monta tela nova
  176.         break;
  177.       case 6:
  178.         Tela += QdSlBlCd + Telaf;                               // Monta tela nova
  179.         break;
  180.       case 7:
  181.         Tela += QdSlBlCl + Telaf;                               // Monta tela nova
  182.         break;
  183.       case 8:
  184.         Tela += QlSdBdCd + Telaf;                               // Monta tela nova
  185.         break;
  186.       case 9:
  187.         Tela += QlSdBdCl + Telaf;                               // Monta tela nova
  188.         break;
  189.       case 10:
  190.         Tela += QlSdBlCd + Telaf;                               // Monta tela nova
  191.         break;
  192.       case 11:
  193.         Tela += QlSdBlCl + Telaf;                               // Monta tela nova
  194.         break;
  195.       case 12:
  196.         Tela += QlSlBdCd + Telaf;                               // Monta tela nova
  197.         break;
  198.       case 13:
  199.         Tela += QlSlBdCl + Telaf;                               // Monta tela nova
  200.         break;
  201.       case 14:
  202.         Tela += QlSlBlCd + Telaf;                               // Monta tela nova
  203.         break;
  204.       case 15:
  205.         Tela += QlSlBlCl + Telaf;                               // Monta tela nova
  206.         break;
  207.     }
  208.     server.send(200, "text/html", Tela);                      // Mostra Quarto desligado
  209.     Tela = "";                                                // Limpa valor de temperatura e umidade
  210.     delay(100);                                             // Delay
  211.   });
  212.   server.begin();                                           // Inicaliza servidor
  213.   Serial.println("HTTP server started");                    // Imprime
  214. }
  215. //--------------------------------------------------
  216. void loop(void)
  217. {
  218.   server.handleClient();                                    // Executa instancia
  219.   if (digitalRead(Switch1) !=  Switch1_atual)               // Se o valor do SW alterou
  220.   {
  221.     delay(40);                                              // Delay
  222.     if (digitalRead(Switch1) !=  Switch1_atual)             // Se o valor do SW alterou
  223.     {
  224.       digitalWrite(Saida1, !digitalRead(Saida1));           // Inverte a saida lamp1
  225.       digitalWrite(Diag, digitalRead(Saida1));              // Gpio2 = Gpio4     Diagnostico
  226.       Switch1_atual = digitalRead(Switch1);                 // Atualisa o Gpio5 atual
  227.     }
  228.   }
  229.   if (digitalRead(Switch2) !=  Switch2_atual)                 // Se o valor do SW alterou
  230.   {
  231.     delay(40);                                              // Delay
  232.     if (digitalRead(Switch2) !=  Switch2_atual)             // Se o valor do SW alterou
  233.     {
  234.       digitalWrite(Saida2, !digitalRead(Saida2));           // Inverte a saida lamp2
  235.       Switch2_atual = digitalRead(Switch2);                 // Atualisa o Gpio14 atual
  236.     }
  237.   }
  238.   if (digitalRead(Switch3) !=  Switch3_atual)                 // Se o valor do SW alterou
  239.   {
  240.     delay(40);                                              // Delay
  241.     if (digitalRead(Switch3) !=  Switch3_atual)             // Se o valor do SW alterou
  242.     {
  243.       digitalWrite(Saida3, !digitalRead(Saida3));           // Inverte a saida lamp3
  244.       Switch3_atual = digitalRead(Switch3);                 // Atualisa o Gpio atual
  245.     }
  246.   }
  247.   if (digitalRead(Switch4) !=  Switch4_atual)                 // Se o valor do SW alterou
  248.   {
  249.     delay(40);                                              // Delay
  250.     if (digitalRead(Switch4) !=  Switch4_atual)             // Se o valor do SW alterou
  251.     {
  252.       digitalWrite(Saida4, !digitalRead(Saida4));           // Inverte a saida lamp2
  253.       Switch4_atual = digitalRead(Switch4);                 // Atualisa o Gpio14 atual
  254.     }
  255.   }
  256. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement