Olá tenho esse código abaixo e a parte em vermelho é um HTML carregado pelo meu Arduíno, e como podem ver, ao clicar no botão LIGAR/DESLIGAR é enviado um retorno pelo <a href> porém eu gostaria de saber como posso apenas coletar esse retorno /L OU /H e carregar a pagina index / (barra vazia)? Ou se posso clicar no LIGAR/DESLIGAR e adicionar algo para que a pagina "atualize" ou vá para a /?
// \r\n no final de todos os códigos AT para pular linhas e reconhecer comando
#include "SDHT.h"
#include "WiFiEsp.h" //INCLUSÃO DA BIBLIOTECA
#include <SoftwareSerial.h>
//Pino do Tx no 6, pino Rx no 7
SoftwareSerial esp8266(6, 7);
SDHT dht;
char ssid[] = "2.4_GAMBATESHIMA"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO
char pass[] = "FACA2010";//VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO
//char ssid[] = "Ali"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO
//char pass[] = "01010101";//VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO
WiFiEspServer server(81); //CONEXÃO REALIZADA NA PORTA 80
RingBuffer buf(8); //BUFFER PARA AUMENTAR A VELOCIDADE E REDUZIR A ALOCAÇÃO DE MEMÓRIA
#define DEBUG true
int statusLed = LOW; //VARIÁVEL QUE ARMAZENA O ESTADO ATUAL DO LED (LIGADO / DESLIGADO)
String temperatura;
String umidade;
int status = WL_IDLE_STATUS;
void lerTempUmi(){
dht.broadcast(DHT11, A1);
delay(500);
temperatura = String (dht.celsius, 0);
umidade = String (dht.humidity, 0);
}
void setup()
{
Serial.begin(9600);
esp8266.begin(9600);
WiFi.init(&esp8266); // initialize ESP module
pinMode(12, OUTPUT);
digitalWrite(12, statusLed);
if (WiFi.status() == WL_NO_SHIELD) // check for the presence of the shield
{
Serial.println("WiFi shield not present");
// don't continue
while (true);
}
// attempt to connect to WiFi network
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network
status = WiFi.begin(ssid, pass);
}
Serial.println("You're connected to the network");
printWifiStatus();
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
WiFi.init(&esp8266);
WiFi.begin(ssid, pass);
Serial.println(ssid);
// Connect to WPA/WPA2 network
status = WiFi.begin(ssid, pass);
}
//sendData("AT+RST\r\n", 2000, DEBUG); // rst
//sendData("AT+CWMODE=1\r\n",2000, DEBUG);
//sendData("AT+CWJAP=\"2.4_GAMBATESHIMA\",\"FACA2010\"\r\n", 5000, DEBUG);
//sendData("AT+CIFSR\r\n", 2000, DEBUG);//You will get the IP Address of the ESP8266 from this command.
//sendData("AT+CIPMUX=1\r\n", 2000, DEBUG);
//sendData("AT+CIPSERVER=1,80\r\n", 2000, DEBUG);
//sendData("AT+CIPSTART=0,\"TCP\",\"192.168.0.120\",37777\r\n",1000, DEBUG); // escolhe entre conexao TCP ou UDP
//delay(1000);
//sendData("AT+CWDHCP=1,0\r\n",1000, DEBUG); // configura ESP8266 para receber um IP do roteador conectado
//delay(1000);
//sendData("AT+CIPSTA_DEF=\"192.168.2.5\",\"192.168.2.1\",\"255.255.255.0\"\r\n",1000, DEBUG); // configura novo IP a ser escolhido - IP fixo, IP do roteador, Mascara da Rede (lembrando que o IP a ser escolhido deve estar na mesma faixa do roteador);
//delay(1000);
//sendData("AT+CIFSR\r\n", 1000, DEBUG); // Mostra o endereco IP
//delay(3000);
// Configura para multiplas conexoes
//sendData("AT+CIPMUX=1\r\n", 1000, DEBUG); // Abre multiplas conexoes
//delay(2000);
//sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG);
delay(1000);
server.begin();
}
void loop()
{
WiFiEspClient client = server.available(); //ATENDE AS SOLICITAÇÕES DO CLIENTE
if (client) { //SE CLIENTE TENTAR SE CONECTAR, FAZ
buf.init(); //INICIALIZA O BUFFER
boolean currentLineIsBlank = true;
while (client.connected()){ //ENQU
if(client.available()){ //SE EXISTIR REQUISIÇÃO DO CLIENTE, FAZ
char c = client.read(); //LÊ A REQUISIÇÃO DO CLIENTE
buf.push(c); //BUFFER ARMAZENA A REQUISIÇÃO
//IDENTIFICA O FIM DA REQUISIÇÃO HTTP E ENVIA UMA RESPOSTA
if(buf.endsWith("\r\n\r\n") && currentLineIsBlank) {
// lerTempUmi();
WebPage2(client);
break;
}else if(buf.endsWith("GET /H")){ //SE O PARÂMETRO DA REQUISIÇÃO VINDO POR GET FOR IGUAL A "H", FAZ
digitalWrite(12, HIGH); //ACENDE O LED
statusLed = HIGH; //VARIÁVEL RECEBE VALOR 0(SIGNIFICA QUE O LED ESTÁ APAGADO)
}else if (buf.endsWith("GET /L")) { //SE O PARÂMETRO DA REQUISIÇÃO VINDO POR GET FOR IGUAL A "L", FAZ
digitalWrite(12, LOW); //APAGA O LED
statusLed = LOW; //VARIÁVEL RECEBE VALOR 0(SIGNIFICA QUE O LED ESTÁ APAGADO)
}
}
}
delay(10);
client.stop();
//sendData("AT+CIPCLOSE=0\r\n", 1000, DEBUG);
}
if (status != WL_CONNECTED) {
setup();}
} void WebPage2(WiFiEspClient client){
client.print(
"HTTP/1.1 200 OK\r\n"
"Content-Type: text/html\r\n"
// "Connection: close\r\n" // the connection will be closed after completion of the response
"\r\n");
client.println("");
client.println(F("<!DOCTYPE HTML>")); //INFORMA AO NAVEGADOR A ESPECIFICAÇÃO DO HTML
client.println(F("<html><head><meta charset=\"utf-8\">")); //ABRE A TAG "html"
client.println(F("<link rel='stylesheet' type='text/css' href='http://blogmasterwalkershop.com.br/arquivos/artigos/sub_wifi/webpagecss.css' />\n"
"<link rel=\"icon\" type=\"image/png\" href=\"webserver\" src=\"https://tse3.mm.bing.net/th?id=OIP.iEsBOeq78HtIighYnuVMRAHaHa&pid=Api&P=0&w=300&h=300.png\">\n"
" <title>GAMBATESHIMA ARDUINO WORK</title>"));
//AS LINHAS ABAIXO CRIAM A PÁGINA HTML
client.println(F("<body class=\"htmlNoPages\">\n"
" <img alt=\"webserver\" src=\"https://tse3.mm.bing.net/th?id=OIP.iEsBOeq78HtIighYnuVMRAHaHa&pid=Api&P=0&w=300&h=300.png\" style=\"width: 150px; height: 150px; margin-top: 50px;\">\n"
" <p style=\"line-height: 2;\" class=\"gwd-p-pzi3\"><font>WEBSERVER GAMBATESHIMA</font></p><p>ESTADO ATUAL DO LED: \n"));
if (statusLed == HIGH) {
client.println(F(" <strong><font color=\"green\">LIGADO</font></strong></p>\n"
"<a href=\"/L\" style=\"margin-bottom:50px;\">DESLIGAR</a>\n"));
}else {
if (statusLed == LOW) {
client.println(F(" <strong><font color=\"red\">DESLIGADO</font></strong></p>\n"
"<a href=\"/H\" style=\"margin-bottom:50px;\">ACENDER</a>\n"));
}}
lerTempUmi();
client.println(F(
" <hr width=\"250\">\n"
" <p style=\"line-height: 0;\"><font color=\"red\">TEMPERATURA: </font>"));
client.print(temperatura);
client.println(F(" ºC</p>\n <hr width=\"250\">\n"
" <p style=\"line-height: 0;\"><font color=\"red\">UMIDADE: </font>"));
client.print(umidade);
client.println(F(" %</p>\n <hr width=\"250\">\n"
"<a href=\"/\">ATUALIZAR</a>\n"
"</body>\n"
"</html>