// Programa : Projeto Controla aparelho para mosquito // Autor : RotNet // NTP Funcionar #include #include #include #include #include #include //const int PinoD1 = 5; //const int PinoD2 = 4; //const int PinoD5 = 14; //const int PinoD6 = 12; //const int PinoD7 = 13; const int Pino0 = 0; // GPIO0 // Rele const int PinoTX = 1; // TX // pisca const int Pino2 = 2; // GPIO2 // ping const int PinoRX = 3; // RX // conexao const char *ssid = "RotNet V"; const char *password = "colorado"; const char titulo = "Controle de mata-mosquito!" WiFiUDP ntpUDP; ESP8266WebServer server(80); int16_t utc = -3; //UTC -3:00 Brazil uint32_t currentMillis = 0; uint32_t previousMillis = 0; uint32_t currentHour = 0; uint32_t previousHour = 0; uint32_t currentMillis2 = 0; uint32_t previousMillis2 = 0; int Ativa; int Desativa; void EEPROMWriteInt(int address, int value); //2 Bytes int EEPROMReadInt(int address); NTPClient timeClient(ntpUDP, "a.st1.ntp.br", utc*3600, 60000); int HORA = 0; String HCOMPLETA = ""; String estadorele = ""; String txtAtiva = ""; String txtDesativa = ""; String opcao = ""; int manual = 0; int comando = 0; IPAddress staticIP(192,168,9,103); IPAddress gateway(192,168,9,1); IPAddress subnet(255,255,255,0); IPAddress dns1(192,168,9,1); //Check if header is present and correct bool is_authentified(){ Serial.println("Enter is_authentified"); if (server.hasHeader("Cookie")){ Serial.print("Found cookie: "); String cookie = server.header("Cookie"); Serial.println(cookie); if (cookie.indexOf("ESPSESSIONID=1") != -1) { Serial.println("Authentification Successful"); return true; } } Serial.println("Authentification Failed"); return false; } //login page, also called for disconnect void handleLogin(){ String msg; if (server.hasHeader("Cookie")){ Serial.print("Found cookie: "); String cookie = server.header("Cookie"); Serial.println(cookie); } if (server.hasArg("DISCONNECT")){ Serial.println("Disconnection"); server.sendHeader("Location","/login"); server.sendHeader("Cache-Control","no-cache"); server.sendHeader("Set-Cookie","ESPSESSIONID=0"); server.send(301); return; } if (server.hasArg("USERNAME") && server.hasArg("PASSWORD")){ if (server.arg("USERNAME") == "luizcarlos" && server.arg("PASSWORD") == "colorado" ){ server.sendHeader("Location","/"); server.sendHeader("Cache-Control","no-cache"); server.sendHeader("Set-Cookie","ESPSESSIONID=1"); server.send(301); Serial.println("Log in Successful"); return; } msg = " O usuario/senha errado! tente de novo."; } String content = "Controle de mata-mosquito!"; content += ""; content += ""; content += "
Para entrar digite : usuario/senha

"; content += "User:

"; content += "Password:

"; content += "" + msg + "


"; content += "Para nao entrar clique aqui."; server.send(200, "text/html", content); } //root page can be accessed only if authentification is ok void handleRoot(){ Serial.println("Enter handleRoot"); //Ativa = EEPROMReadInt(1); //Desativa = EEPROMReadInt(4); String header; if (!is_authentified()){ server.sendHeader("Location","/login"); server.sendHeader("Cache-Control","no-cache"); server.send(301); return; } String content = "Controle de mata-mosquito!"; content += ""; content += ""; content += "

Controle de mata-mosquito!

"; content += "

Status do Microcontrolador

"; content += "O Estado atual do aparelho : " + estadorele + "

"; content += "Hora do controlador : " + HCOMPLETA + "

"; content += "
"; content += "

Ligar:

"; content += "Desligar:


"; ; content += " Ligar Manualmente
"; content += " Desligar Manualmente
"; content += " Nenhuma

"; content += """
"; content += "
"; content += "Clique para sair. logoff"; content += ""; server.send(200, "text/html", content); } //no need authentification void handleNotFound(){ String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i=0; i 90000) { previousMillis2 = currentMillis2; // Salva o tempo atual //Serial.println(WiFi.status()); if (WiFi.status() == WL_CONNECTED) { digitalWrite(PinoRX, HIGH); } else { digitalWrite(PinoRX, LOW); } bool ret = Ping.ping("www.google.com"); if (ret) { digitalWrite(Pino2, HIGH); } else { digitalWrite(Pino2, LOW); } } currentMillis = millis();//Tempo atual em ms if (currentMillis - previousMillis > 500) { previousMillis = currentMillis; // Salva o tempo atual //Serial.println(HORA); //Serial.println(HCOMPLETA); //Serial.println(Ativa); //Serial.println(Desativa); //Serial.println(manual); digitalWrite(PinoTX, !digitalRead(PinoTX)); } //Acerta a Hora a cada hora currentHour = HORA; if (currentHour - previousHour > 1) { previousHour = currentHour; // Salva o tempo atual Serial.println(HCOMPLETA); timeClient.forceUpdate(); Serial.println("Acertou a Hora!"); } if ( Ativa < Desativa ){ if (HORA >= Ativa && HORA <= Desativa ) { comando = 1; estadorele = "Ligado"; } else { comando = 0; estadorele = "Desligado"; } } if ( Ativa > Desativa ){ if ((HORA <= Ativa && HORA <= Desativa ) || (HORA >= Ativa && HORA >= Desativa )) { comando = 1; estadorele = "Ligado"; } else { comando = 0; estadorele = "Desligado"; } } switch (manual){ case 0: // nenhum // break; case 1: // ligar //comando = 1; break; case 2: // desligar //comando = 0; default: // break; } digitalWrite(Pino0, comando); server.handleClient(); } void EEPROMWriteInt(int address, int value) { byte hiByte = highByte(value); byte loByte = lowByte(value); EEPROM.write(address, hiByte); EEPROM.write(address + 1, loByte); EEPROM.commit(); } int EEPROMReadInt(int address) { byte hiByte = EEPROM.read(address); byte loByte = EEPROM.read(address + 1); return word(hiByte, loByte); }