Ir para conteúdo

Yiuky

Members
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por Yiuky


  1. 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&amp;pid=Api&amp;P=0&amp;w=300&amp;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&amp;pid=Api&amp;P=0&amp;w=300&amp;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>

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.