Advertisement
RuiViana

Control_Lamp_Ver5

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