RuiViana

Teste BD ESP8266

Apr 22nd, 2018
146
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Extarido e modificado do AutoConnectWithFSParametersAndCustomIP da biblioteca WiFiManager
  2. // Era AutoConnectWithFSParametersAndCustomIP_V03
  3. #include <FS.h>                           //this needs to be first, or it all crashes and burns...
  4. #include <ESP8266WiFi.h>                  //https://github.com/esp8266/Arduino
  5. #include <ESP8266WebServer.h>
  6. #include <WiFiManager.h>                  //https://github.com/tzapu/WiFiManager
  7. #include <ArduinoJson.h>                  //https://github.com/bblanchon/ArduinoJson
  8.  
  9. char static_ip[16] = "10.0.1.56";         //default custom static IP
  10. char static_gw[16] = "10.0.1.1";
  11. char static_sn[16] = "255.255.255.0";
  12. bool shouldSaveConfig = false;            //flag for saving data
  13.  
  14. ESP8266WebServer server(80);                                // Instancia server
  15. //  Strings com HTML
  16. String Q_1 = "<!DOCTYPE HTML><html><head><meta http-equiv='refresh' content='1;URL=/Controle'/></head><h1><center>Controle de luz, Temperatura e Umidade</center>";
  17. String Q_2 = "</p></center><h3><BR></h3><html>\r\n";
  18. String Ql = "";                                             // Quarto ligado
  19. String Qd = "";                                             // Quarto desligado
  20. String Qil = "";
  21. String Qid = "";
  22. String LuzQuarto;                                           // String para controle
  23. float temp_c;                                               // Variavel para temperatura
  24. int humidity;                                               // Variavel para umidade
  25. #define botReset 13                                         // Entrada botao reset do ssid e pw
  26. #define LedRst 5                                            // Led indicativo de AP mode
  27. #define Saida1 2                                            // GPIO2 Port para ligar Controle do triac (Pino 2 do MOC3023)
  28. #define Switch1 4                                           // GPIO4 Port para ligar o interruptor
  29. byte Switch1_atual = 0;                                     // Variavel para staus de GPIO5 (Status do interruptor)
  30. unsigned long previousMillis = 0;                           // Variavel para medir periodos
  31. const long interval = 2000;                                 // Periodo de leitura da temperatura e umidade
  32. //-------------------------------
  33. void saveConfigCallback ()                //callback notifying us of the need to save config
  34. {
  35.   Serial.println("Should save config");
  36.   shouldSaveConfig = true;
  37. }
  38. //-------------------------------
  39. void setup()
  40. {
  41.   Ql += Q_1;                                                // Monta tela pra informar que a luz
  42.   Ql += "<p><center>Luz</p><p><a href=\"/Controle?LuzQuarto=off \"><button style=\"background-color: rgb(255, 0,   0);height: 100px; width: 200px;\"><h1> Acesa</h1></button></a>";
  43.   Qd += Q_1;                                                // Monta tela pra informar que a luz
  44.   Qd += "<p><center>Luz</p><p><a href=\"/Controle?LuzQuarto=on \"><button style=\"background-color: rgb(0, 255,   0);height: 100px; width: 200px;\"><h1> Apagada</h1></button></a>";
  45.  
  46.   Serial.begin(115200);
  47.   Serial.println();
  48.   pinMode(botReset, INPUT_PULLUP);                          // botReset como entrada e pullup
  49.   pinMode(LedRst, OUTPUT);                                  // LedRst como saida
  50.   digitalWrite(LedRst, LOW);                                // Apaga o LED
  51.   pinMode(Switch1, INPUT_PULLUP);                           // Switch1 como entrada e liga o resistor de pullup
  52.   Switch1_atual = digitalRead(Switch1);                     // Atualisa status de GPIO5
  53.   pinMode(Saida1, OUTPUT);                                  // Saida1 como saida
  54.   digitalWrite(Saida1, LOW);                                // Liga saída
  55.  
  56.   //SPIFFS.format();                                        //clean FS, for testing
  57.   Serial.println("mounting FS...");                         //read configuration from FS json
  58.   if (SPIFFS.begin())
  59.   {
  60.     Serial.println("mounted file system");
  61.     if (SPIFFS.exists("/config.json"))                      // if file exists, reading and loading
  62.     {
  63.       Serial.println("reading config file");
  64.       File configFile = SPIFFS.open("/config.json", "r");
  65.       if (configFile) {
  66.         Serial.println("opened config file");
  67.         size_t size = configFile.size();
  68.         std::unique_ptr<char[]> buf(new char[size]);        // Allocate a buffer to store contents of the file.
  69.         configFile.readBytes(buf.get(), size);
  70.         DynamicJsonBuffer jsonBuffer;
  71.         JsonObject& json = jsonBuffer.parseObject(buf.get());
  72.         json.printTo(Serial);
  73.         if (json.success())
  74.         {
  75.           Serial.println("\nparsed json");
  76.           if (json["ip"])
  77.           {
  78.             Serial.println("setting custom ip from config");
  79.             strcpy(static_ip, json["ip"]);
  80.             strcpy(static_gw, json["gateway"]);
  81.             strcpy(static_sn, json["subnet"]);
  82.             Serial.println(static_ip);
  83.           }
  84.           else
  85.           {
  86.             Serial.println("no custom ip in config");
  87.           }
  88.         }
  89.         else
  90.         {
  91.           Serial.println("failed to load json config");
  92.         }
  93.       }
  94.     }
  95.   }
  96.   else
  97.   {
  98.     Serial.println("failed to mount FS");
  99.   }
  100.   Serial.println(static_ip);                                  // end read
  101.   WiFiManager wifiManager;
  102.  
  103.   if (digitalRead(botReset) == LOW)                           // Se reset foi pressionado
  104.   {
  105.     delay(3000);                                              // Aguarda 3 minutos segundos
  106.     if (digitalRead(botReset) == LOW)                         // Se reset continua pressionado
  107.     {
  108.       wifiManager.resetSettings();                            // Reseta SSID e PW
  109.     }
  110.   }
  111.   digitalWrite(LedRst, HIGH);                                 // Acende o Led indicativo de AP
  112.  
  113.   wifiManager.setSaveConfigCallback(saveConfigCallback);      //set config save notify callback
  114.   IPAddress _ip, _gw, _sn;                                    //set static ip
  115.   _ip.fromString(static_ip);
  116.   _gw.fromString(static_gw);
  117.   _sn.fromString(static_sn);
  118.   wifiManager.setSTAStaticIPConfig(_ip, _gw, _sn);
  119.  
  120.   wifiManager.setMinimumSignalQuality();                        //set minimu quality of signal so it ignores AP's under that quality    //defaults to 8%
  121.   if (!wifiManager.autoConnect("AutoConnectAP", "password"))
  122.   {
  123.     Serial.println("failed to connect and hit timeout");
  124.     delay(3000);
  125.  
  126.     ESP.reset();                                                //reset and try again, or maybe put it to deep sleep
  127.     delay(5000);
  128.   }
  129.   digitalWrite(LedRst, LOW);                                    // Apaga o Led indicativo de AP
  130.   if (shouldSaveConfig)                                         //save the custom parameters to FS
  131.   {
  132.     Serial.println("saving config");
  133.     DynamicJsonBuffer jsonBuffer;
  134.     JsonObject& json = jsonBuffer.createObject();
  135.     json["ip"] = WiFi.localIP().toString();
  136.     json["gateway"] = WiFi.gatewayIP().toString();
  137.     json["subnet"] = WiFi.subnetMask().toString();
  138.     File configFile = SPIFFS.open("/config.json", "w");
  139.     if (!configFile)
  140.     {
  141.       Serial.println("failed to open config file for writing");
  142.     }
  143.     json.prettyPrintTo(Serial);
  144.     json.printTo(configFile);
  145.     configFile.close();    //end save
  146.   }
  147.   Serial.println("local ip");
  148.   Serial.println(WiFi.localIP());
  149.   Serial.println(WiFi.gatewayIP());
  150.   Serial.println(WiFi.subnetMask());
  151.  
  152.   server.on("/", []()                                       // Ao request
  153.   {
  154.     server.send(200, "text/html", Ql);                      // Executa o HTML Ql (Quarto ligado)
  155.   });
  156.   server.on("/Controle", []()                               // Ao requeste
  157.   {
  158.     LuzQuarto = server.arg("LuzQuarto");                    // Recupera o valor do parametro luz enviado
  159.     if (LuzQuarto == "off") digitalWrite(Saida1, LOW);      // Se o valor de luz e off desliga a saida
  160.     if (LuzQuarto == "on") digitalWrite(Saida1, HIGH);      // Se o valor de luz e on liga a saida
  161.  
  162.     if (digitalRead(Saida1) == HIGH)                        // Se a saida esta ligada, carrega a pagina "ligada"
  163.     {
  164.       Qil += Ql;                                            // Monta tela nova quarto ligado
  165.       Qil += Q_2;
  166.       server.send(200, "text/html", Qil);                   // Mostra Quarto ligado
  167.       Qil = "";                                             // Limpa valor de temperatura e umidade
  168.     }
  169.     if (digitalRead(Saida1) == LOW)                         // Se a saida esta desligada, carrega a pagina "desligada"
  170.     {
  171.       Qid += Qd;                                            // Monta tela nova quarto desligado
  172.       Qid += Q_2;
  173.       server.send(200, "text/html", Qid);                   // Mostra Quarto desligado
  174.       Qid = "";                                             // Limpa valor de temperatura e umidade
  175.     }
  176.     delay(100);                                             // Delay
  177.   });
  178.   server.begin();                                           // Inicaliza servidor
  179.   Serial.println("HTTP server started");                    // Imprime
  180. }
  181. //-------------------------------
  182. void loop()
  183. {
  184.   server.handleClient();                                    // Executa instancia
  185.   if (digitalRead(Switch1) !=  Switch1_atual)               // Se o valor do SW alterou
  186.   {
  187.     delay(40);                                              // Delay
  188.     if (digitalRead(Switch1) !=  Switch1_atual)             // Se o valor do SW alterou
  189.     {
  190.       digitalWrite(Saida1, !digitalRead(Saida1));           // Inverte a saida lamp1
  191.       Switch1_atual = digitalRead(Switch1);                 // Atualisa o Gpio5 atual
  192.     }
  193.   }
  194. }
RAW Paste Data