Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SHT1x.h> // https://github.com/practicalarduino/SHT1x
- #define dataPin 0 // GPIO 0 D3 Port para o Data do SHT10
- #define clockPin 15 // GPIO 15 D8 Port para o Clock do SHT10
- SHT1x sht1x(dataPin, clockPin); // Instancia shtx1
- #include <ESP8266WebServer.h> // Bibioteca para Servidor Web ESP8266
- #include <ESP8266mDNS.h> // Bibioteca para ..... ESP8266
- MDNSResponder mdns; // ......
- const char* ssid = "xxxxx"; // Use sua credenciais de rede wifi
- const char* password = "yyyyy";
- ESP8266WebServer server(80); // Instancia server
- // Strings com HTML
- String Q_1 = "<!DOCTYPE HTML><html><head><meta http-equiv='refresh' content='1;URL=/Controle'/></head><h1><center>ESP8266 Controle de luz</center>";
- String Q_2 = "</p></center><h3><BR></h3><html>\r\n";
- String QlSl = ""; // Quarto ligado Sala ligada
- String QdSl = ""; // Quarto desligado Sala ligada
- String QlSd = ""; // Quarto ligado Sala desligada
- String QdSd = ""; // Quarto desligado Sala desligada
- String Qil = "";
- String Qid = "";
- String LuzQuarto;
- String LuzSala;
- float temp_c; // Variavel para temperatura
- int humidity; // Variavel para umidade
- int gpio4 = 4; // Port para ligar Controle do triac (Pino 2 do MOC3023)
- int gpio2 = 2; // Port somente para visualizacao durante teste. Pode ser comentado na versao para instalar
- const int gpio5 = 5; // Port para ligar o interruptor
- int gpio13 = 13; // Port para ligar Controle do triac (Pino 2 do MOC3023)
- const int gpio14 = 14; // Port para ligar o interruptor
- byte gpio5_atual = 0; // Variavel para staus de GPIO5 (Status do interruptor)
- byte gpio14_atual = 0; // Variavel para staus de GPIO14 (Status do interruptor)
- unsigned long previousMillis = 0; // Variavel para medir periodos
- const long interval = 2000; // Periodo de leitura da temperatura e umidade
- //---------------------------------------
- void gettemperature() // Funcoa para ler temperatura e umidade
- {
- if (millis() - previousMillis >= interval) // Se passou o intervalo
- {
- previousMillis = millis(); // Restaura valor de previousMillis
- humidity = sht1x.readHumidity(); // Le umidade em SHT10
- temp_c = sht1x.readTemperatureC(); // Le temperatura em SHT10
- }
- }
- //---------------------------------------
- void setup(void)
- {
- QlSl += Q_1; // Monta tela pra informar que a luz
- 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>";
- 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>";
- QdSl += Q_1; // Monta tela pra informar que a luz
- 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>";
- 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>";
- QlSd += Q_1; // Monta tela pra informar que a luz
- 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>";
- 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>";
- QdSd += Q_1; // Monta tela pra informar que a luz
- 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>";
- 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>";
- pinMode(gpio5, INPUT_PULLUP); // Define GPIO5 como entrada e liga o resistor de pullup
- pinMode(gpio14, INPUT_PULLUP); // Define GPIO5 como entrada e liga o resistor de pullup
- gpio5_atual = digitalRead(gpio5); // Atualisa status de GPIO5
- gpio14_atual = digitalRead(gpio14); // Atualisa status de GPIO5
- pinMode(gpio2, OUTPUT); // Define GPIO2 como saida (So pra diagnostico)
- pinMode(gpio4, OUTPUT);; // Define GPIO4 como saida
- pinMode(gpio13, OUTPUT);; // Define GPIO4 como saida
- digitalWrite(gpio4, HIGH); // Liga GPIO2 (So pra diagnostico)
- digitalWrite(gpio13, HIGH); // Liga GPIO4 Acende a Luz
- Serial.begin(115200); // Inicialisa o serial port em 115200
- WiFi.begin(ssid, password); // Inicialisa o wifi
- Serial.println(""); // Imprime
- while (WiFi.status() != WL_CONNECTED) // Aguarda conexão
- {
- delay(500); // Delay
- Serial.print("."); // Imprime . enquanto não conecta
- }
- Serial.println(""); // Imprime
- Serial.print("Connected to ");
- Serial.println(ssid);
- Serial.print("IP address: ");
- Serial.println(WiFi.localIP());
- if (mdns.begin("esp8266", WiFi.localIP())) // Se ......????
- {
- Serial.println("MDNS responder started"); // Imprime
- }
- server.on("/", []() // Ao requeste
- {
- server.send(200, "text/html", QlSl); // Executa o HTML Ql (Quarto ligado)
- });
- server.on("/Controle", []() // Ao requeste /Quarto
- {
- //gettemperature(); // Le temperatura e umidade. Comentar se tiver sem sensor pois fica lento
- LuzQuarto = server.arg("LuzQuarto"); // Recupera o valor do parametro luz enviado
- LuzSala = server.arg("LuzSala"); // Recupera o valor do parametro luz enviado
- if (LuzQuarto == "off") digitalWrite(gpio4, HIGH); // Se o valor de luz e off desliga a saida
- if (LuzQuarto == "on") digitalWrite(gpio4, LOW); // Se o valor de luz e on liga a saida
- if (LuzSala == "off") digitalWrite(gpio13, HIGH); // Se o valor de luz e off desliga a saida
- if (LuzSala == "on") digitalWrite(gpio13, LOW); // Se o valor de luz e on liga a saida
- digitalWrite(gpio2, digitalRead(gpio13)); // Gpio2 = Gpio4 Diagnostico
- if ((digitalRead(gpio4) == LOW) && (digitalRead(gpio13) == HIGH) ) // Se a saida esta ligada, carrega a pagina "ligada"
- {
- Qil += QlSl; // Monta tela nova quarto ligado
- Qil += "<p><center>Temperatura: " + String((float)temp_c) + "C </p>";
- Qil += "<p><center>Umidade: " + String((int)humidity) + "% </p>";
- Qil += Q_2;
- server.send(200, "text/html", Qil); // Mostra Quarto ligado
- Qil = ""; // Limpa valor de temperatura e umidade
- }
- if ((digitalRead(gpio4) == HIGH) && (digitalRead(gpio13) == HIGH) ) // Se a saida esta desligada, carrega a pagina "desligada"
- {
- Qid += QdSl; // Monta tela nova quarto desligado
- Qid += "<p><center>Temperatura: " + String((float)temp_c) + "C </p>";
- Qid += "<p><center>Umidade: " + String((int)humidity) + "% </p>";
- Qid += Q_2;
- server.send(200, "text/html", Qid); // Mostra Quarto desligado
- Qid = ""; // Limpa valor de temperatura e umidade
- }
- if ((digitalRead(gpio4) == LOW) && (digitalRead(gpio13) == LOW) ) // Se a saida esta ligada, carrega a pagina "ligada"
- {
- Qil += QlSd; // Monta tela nova quarto ligado
- Qil += "<p><center>Temperatura: " + String((float)temp_c) + "C </p>";
- Qil += "<p><center>Umidade: " + String((int)humidity) + "% </p>";
- Qil += Q_2;
- server.send(200, "text/html", Qil); // Mostra Quarto ligado
- Qil = ""; // Limpa valor de temperatura e umidade
- }
- if ((digitalRead(gpio4) == HIGH) && (digitalRead(gpio13) == LOW) ) // Se a saida esta desligada, carrega a pagina "desligada"
- {
- Qid += QdSd; // Monta tela nova quarto desligado
- Qid += "<p><center>Temperatura: " + String((float)temp_c) + "C </p>";
- Qid += "<p><center>Umidade: " + String((int)humidity) + "% </p>";
- Qid += Q_2;
- server.send(200, "text/html", Qid); // Mostra Quarto desligado
- Qid = ""; // Limpa valor de temperatura e umidade
- }
- delay(100); // Delay
- });
- server.begin(); // Inicaliza servidor
- Serial.println("HTTP server started"); // Imprime
- }
- //--------------------------------------------------
- void loop(void)
- {
- server.handleClient(); // Executa instancia
- if (digitalRead(gpio5) != gpio5_atual) // Se o valor do SW alterou
- {
- delay(40); // Delay
- if (digitalRead(gpio5) != gpio5_atual) // Se o valor do SW alterou
- {
- digitalWrite(gpio4, !digitalRead(gpio4)); // Inverte a saida
- digitalWrite(gpio2, digitalRead(gpio4)); // Gpio2 = Gpio4 Diagnostico
- gpio5_atual = digitalRead(gpio5); // Atualisa o Gpio5 atual
- }
- }
- if (digitalRead(gpio14) != gpio14_atual) // Se o valor do SW alterou
- {
- delay(40); // Delay
- if (digitalRead(gpio14) != gpio14_atual) // Se o valor do SW alterou
- {
- digitalWrite(gpio13, !digitalRead(gpio13)); // Inverte a saida
- gpio14_atual = digitalRead(gpio14); // Atualisa o Gpio14 atual
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement