Olá ja pesquisei e não consegui usar meu nodemcu Webserver sem que ele trave, e não execute mais os comandos.

Por ultimo estou testando este que só modifiquei o necessário pra testar. 

#include <ESP8266WiFi.h> //INCLUSÃO DA BIBLIOTECA NECESSÁRIA PARA FUNCIONAMENTO DO CÓDIGO

#define Lampada 0 // D3
#define Ventilador 2 // D4

const char* ssid = "FFP0711"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO EM QUE VAI CONECTAR
const char* password = "ffp071113814"; //VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO EM QUE VAI CONECTAR

//DEFINIÇÃO DE IP FIXO PARA O NODEMCU
IPAddress ip(192,168,0,254); //COLOQUE UMA FAIXA DE IP DISPONÍVEL DO SEU ROTEADOR. EX: 192.168.1.110 **** ISSO VARIA, NO MEU CASO É: 192.168.0.175
IPAddress gateway(192,168,0,1); //GATEWAY DE CONEXÃO (ALTERE PARA O GATEWAY DO SEU ROTEADOR)
IPAddress subnet(255,255,255,0); //MASCARA DE REDE

WiFiServer server(80); //CASO OCORRA PROBLEMAS COM A PORTA 80, UTILIZE OUTRA (EX:8082,8089) E A CHAMADA DA URL FICARÁ IP:PORTA(EX: 192.168.0.15:8082)

void setup() {
Serial.begin(115200); //INICIALIZA A SERIAL
delay(10); //INTERVALO DE 10 MILISEGUNDOS

// prepare GPIO2
pinMode(Lampada, OUTPUT); // D3
pinMode(Ventilador, OUTPUT); // D4

Serial.println(""); //PULA UMA LINHA NA JANELA SERIAL
Serial.println(""); //PULA UMA LINHA NA JANELA SERIAL
Serial.print("Conectando a "); //ESCREVE O TEXTO NA SERIAL
Serial.print(ssid); //ESCREVE O NOME DA REDE NA SERIAL

WiFi.begin(ssid, password); //PASSA OS PARÂMETROS PARA A FUNÇÃO QUE VAI FAZER A CONEXÃO COM A REDE SEM FIO
WiFi.config(ip, gateway, subnet); //PASSA OS PARÂMETROS PARA A FUNÇÃO QUE VAI SETAR O IP FIXO NO NODEMCU

while (WiFi.status() != WL_CONNECTED) { //ENQUANTO STATUS FOR DIFERENTE DE CONECTADO
delay(500); //INTERVALO DE 500 MILISEGUNDOS
Serial.print("."); //ESCREVE O CARACTER NA SERIAL
}
Serial.println(""); //PULA UMA LINHA NA JANELA SERIAL
Serial.print("Conectado a rede sem fio "); //ESCREVE O TEXTO NA SERIAL
Serial.println(ssid); //ESCREVE O NOME DA REDE NA SERIAL
server.begin(); //INICIA O SERVIDOR PARA RECEBER DADOS NA PORTA DEFINIDA EM "WiFiServer server(porta);"
Serial.println("Servidor iniciado"); //ESCREVE O TEXTO NA SERIAL

Serial.print("IP para se conectar ao NodeMCU: "); //ESCREVE O TEXTO NA SERIAL
Serial.print("http://"); //ESCREVE O TEXTO NA SERIAL
Serial.println(WiFi.localIP()); //ESCREVE NA SERIAL O IP RECEBIDO DENTRO DA REDE SEM FIO (O IP NESSA PRÁTICA É RECEBIDO DE FORMA AUTOMÁTICA)
Serial.println("/");

}
void loop() {
WiFiClient client = server.available(); //VERIFICA SE ALGUM CLIENTE ESTÁ CONECTADO NO SERVIDOR
if (!client) { //SE NÃO EXISTIR CLIENTE CONECTADO, FAZ
return; //REEXECUTA O PROCESSO ATÉ QUE ALGUM CLIENTE SE CONECTE AO SERVIDOR
}
Serial.println("Novo cliente se conectou!"); //ESCREVE O TEXTO NA SERIAL
while(!client.available()){ //ENQUANTO CLIENTE ESTIVER CONECTADO
delay(1); //INTERVALO DE 1 MILISEGUNDO

}
String request = client.readStringUntil('\r'); //FAZ A LEITURA DA PRIMEIRA LINHA DA REQUISIÇÃO
Serial.println(request); //ESCREVE A REQUISIÇÃO NA SERIAL
client.flush(); //AGUARDA ATÉ QUE TODOS OS DADOS DE SAÍDA SEJAM ENVIADOS AO CLIENTE

client.println("HTTP/1.1 200 OK"); //ESCREVE PARA O CLIENTE A VERSÃO DO HTTP
client.println("Content-Type: text/html"); //ESCREVE PARA O CLIENTE O TIPO DE CONTEÚDO(texto/html)
client.println("");
client.println("<!DOCTYPE HTML>"); //INFORMA AO NAVEGADOR A ESPECIFICAÇÃO DO HTML
client.println("<html>"); //ABRE A TAG "html"
client.println("<h1><center>OLA FERNANDO!</center></h1>"); //ESCREVE "Ola cliente!" NA PÁGINA
client.println("<center><font size='5'>SEJA BEM VINDO!</center>"); //ESCREVE "Seja bem vindo!" NA PÁGINA
client.println("</html>"); //FECHA A TAG "html"
delay(1); //INTERVALO DE 1 MILISEGUNDO
Serial.println("Cliente desconectado"); //ESCREVE O TEXTO NA SERIAL
Serial.println(""); //PULA UMA LINHA NA JANELA SERIAL

if(request.indexOf("Lampada") != -1) {
digitalWrite(Lampada, ! digitalRead(Lampada));
}

if(request.indexOf("Ventilador") != -1) {
digitalWrite(Ventilador, ! digitalRead(Ventilador));
}

if(request.indexOf("todos") != -1) {
digitalWrite(Lampada, LOW);
digitalWrite(Ventilador, LOW);
}

//client.println("");

if(digitalRead(Lampada)){
client.print("<center><font '5'>Lampada.on</center>");
} else {
client.print("<center><font '5'>Lampada.off</center>");
client.println("");
}
//client.println("");

if(digitalRead(Ventilador)){
client.print("<center><font '5'>Ventilador.on</center>");
} else {
client.print("<center><font '5'>Ventilador.off</center>");
}

if(digitalRead(Lampada)){
client.print("<center><font '5'>todos</center>");
} else {
client.print("<center><font '5'>todos.off</center>");
}
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}

Exibições: 2796

Responder esta

Respostas a este tópico

De fato o esp trava o carregamento da pagina, eu tenho um funcionando a quase um ano ou um pouco mais na alimentação de meus peixes, depois q configuro os horários, ele funciona corretamente nos horários programados, mas não consigo conectar nele as vezes, precisando dar um reset manual para voltar a funcionar o webserver.

Acredito que deve ser algo da programação mesmo, ou até mesmo do hardware que desativa o webserver depois de um tempo, para preservar a placa imagino eu.

mesmo eu colocando um reset no código via software e um watchdog percebi q o problema persiste, mas como a placa continua funcionando acabei não dando muita importância ao erro

Boa noite!

Obrigado por compartilhar valeu.

OBS. fiz uns testes e verifiquei que o web server feito com a lib ESP8266WebServer.h não trava tão facilmente, estou montando um novo com ela e é bem mais estável.

Segue uns links dos melhores exemplos que encontrei

http://renatoaloi.blogspot.com.br/2016/05/tratando-post-no-web-serv...

http://www.esp8266.com/viewtopic.php?f=8&t=4345

https://gist.github.com/bbx10/5a2885a700f30af75fc5

Valeu vou verificar os links.

Fernando;

Eu é que peço ajuda.

Usei um sketch muito parecido com o seu mas funcionou "duas vezes"!!!!!!!!!!!!!!!!!!!!!!!!!????????????????????

Mas queria sua ajuda no seguinte:

Minha SSID é Intelbras mas a senha não  consigo encontrar.

A própria Intelbras não conseguiu me ajudar (ou não quiz).

Você podeira me ajudar ( sem te prejudicar)?

Muito grato e grande abraço.

Dificil, ai nesse caso teria que mudar a senha do roteador.

se você tem acesso ao roteador é só digitar o ip de acesso dele, tipo 192.168.1.1, ou algum outro, geralmente esta em baixo do roteador esse ip, ou no manual, o login e senha do roteador tem no manual do mesmo.

Em ultimo caso, tem rotadores que o firewall bloqueia o acesso do Esp8266 a rede, ai tem que dar uma checada.

Grato Fernando e Tiago.

Fernando, continuo esperando sua ajuda.

A sugestão do Tiago eu já havia tentado mas não deu certo.

Você  poderia me dizer como chegou à sua senha (ffp071113814) ou a que deu certo.

Muito Grato.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço