Go Down

Topic: Refrescar página web (Read 421 times) previous topic - next topic

torke100

Hola a tod@s:

Necesito una pequeña ayuda, porque por más que he mirado y remirado, no encuentro la solución y creo que he entrado en bucle.

He programado un pequeño código para un estación meteorológica que conecta con la mi red local a través de un HLK-RM04, configurado como servidor WEB. Hasta aquí todo correcto y funcionando. Conecto a través de I2C un reloj y un BME280 y el HLK-RM04, a través de RX-TX.
El problema es que por más que lo intento con distintas líneas de HTML no logro que la página se refresque sola. No sé si me explico bien: quiero que la pagina web una vez conectada, vaya mostrando cada 15 segundos las nuevas mediciones que los sensores vayan haciendo (y el tiempo en este caso también), pero por lo que sea, se queda fija donde conecté la primera vez y hasta que no refresco yo con F5, no se actualiza.
Aquí pongo el código.
¿Alguna ayuda?






Code: [Select]

#include <RTClib.h>
#include <Wire.h>
#include <Adafruit_BME280.h>
#include <Adafruit_Sensor.h>
#include <SoftwareSerial.h>     
SoftwareSerial Serial3(3, 2); // RX | TX y  crea una instancia de Softwareserial

RTC_DS3231 rtc;
int segundo,minuto,hora,dia,mes;
long anio; //variable año
DateTime HoraFecha;


Adafruit_BME280 bme;



float presion=0;
float temp=0;
float tempmax=0;
float tempmin=0;
float sensacion;
float potencias;
float humedad=0;
unsigned long contadorMillis=0; // variable de tiempo inicio
unsigned long retardorelojMillis=0; // variable de retardo reloj
unsigned long retardobmeMillis=0;


void setup() {
 
 
 bme.begin(0x76);

 
 
     Serial.begin(57600);
     Serial3.begin(57600);
     delay (30000); // espera necesaria para que el módulo WIFI se conecte.
 
 rtc.begin();

// Si se ha perdido la corriente, fijar fecha y hora--------------------
   if (rtc.lostPower()) {
      // Fijar a fecha y hora de compilacion
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
     
      // Fijar a fecha y hora específica. En el ejemplo, 21 de Enero de 2016 a las 03:00:00
      // rtc.adjust(DateTime(2016, 1, 21, 3, 0, 0));
   
    }
   
 
   
 }

//------------------FUNCIÓN WEB-------------------
    void webserver(void)
   {   Serial3.println("HTTP/1.0 200 OK\r\n content-type:text/html\r\n\r\n");
       Serial3.println("<!DOCTYPE HTML>");
       Serial3.println("<html>");
       Serial3.println("<head><title>Estaci&oacute;n La Moheda.</title>");
       Serial3.println("<style> *{color:#0000FF;} </style>");
       Serial3.println("<meta http-equiv=\"refresh\" content=\"15;url:http://192.168.100.200:8080\"</head>");
       Serial3.println("<body style=background-color:#FFFF99;>");
       Serial3.println("<h1><center> Estaci&oacute;n La Moheda<center></h1>");
       Serial3.println("<p></br></p>");
       Serial3.print("<h3> TEMPERATURA:&nbsp;");
       Serial3.print(temp);
       Serial3.print (" °C");
       Serial3.println ("</h3>");
       Serial3.print("<h3>M&Aacute;X:&nbsp");
       Serial3.print(tempmax);
       Serial3.print (" °C");
       Serial3.println ("</h3>");
       Serial3.print("<h3>M&Iacute;N:&nbsp");
       Serial3.print(tempmin);
       Serial3.print (" °C");
       Serial3.println("</h3></br>");
       Serial3.print("<h3> HUMEDAD:&nbsp;");
       Serial3.print (humedad);
       Serial3.print (" %");
       Serial3.println ("</h3>");
       Serial3.print ("<h3> SENSACI&Oacute;N T&Eacute;RMICA:&nbsp;");
       Serial3.print (sensacion);
       Serial3.print (" °C");
       Serial3.println ("</h3>");
       Serial3.print ("<h3> PRESI&Oacute;N ATMOSF&Eacute;RICA:&nbsp;");
       Serial3.print (presion);
       Serial3.print (" mbar");
       Serial3.println ("</h3></br>");
       Serial3.print("<p><center>Fecha: ");
       Serial3.print (dia);
       Serial3.print ("/");
       Serial3.print (mes);
       Serial3.print ("/");
       Serial3.print (anio);
       Serial3.print ("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hora:&nbsp;");
       Serial3.print (hora);
       Serial3.print (":");
       Serial3.print (minuto);
       Serial3.println ("<center></p>");
       Serial3.println("<p><center>38&nbsp;56&nbsp;18&nbsp;N&nbsp;&nbsp;&nbsp;03&nbsp;14&nbsp;29&nbsp;W<center></p>");
       Serial3.print("<p><center>Altitud: 745 msnm");
       Serial3.print("<center></p></body></html>");
   }




void loop() {
   
    contadorMillis = millis(); // graba el tiempo actual
   
   if ((contadorMillis-retardorelojMillis)>2000) {
   // Obtener fecha actual y asignar a variables
   HoraFecha = rtc.now(); //obtenemos la hora y fecha actual
   
    segundo=HoraFecha.second();
    minuto=HoraFecha.minute();
    hora=HoraFecha.hour();
    dia=HoraFecha.day();
    mes=HoraFecha.month();
    anio=HoraFecha.year();
    retardorelojMillis=contadorMillis;
   }
 
 
 
   

// --------------LECTURA SENSOR BME280-------1/2 MINUTO
 if ((contadorMillis-retardobmeMillis)>30000){
 
 presion= bme.readPressure()/100.0F;
 humedad= bme.readHumidity();
 temp= bme.readTemperature();

 if (temp>tempmax){
  tempmax=temp;
 }
 if (temp<tempmin){
  tempmin=temp;
 }

  //-------CÁLCULO DE LA SENSACIÓN TÉRMICA

sensacion=(13.12+(0.6215*temp)-(11.37*potencias)+(0.3965*temp*potencias));

retardobmeMillis=contadorMillis;

}

// Llamamos a webserver cuando detecta algo ----------PAGINA WEB

      while (Serial3.available() >0 )
          {char c = Serial3.read();
            if (c == 71)
                {   webserver();
                    delay(500);
                }
          }
}

Jopapa

#1
Jan 11, 2020, 02:17 pm Last Edit: Jan 11, 2020, 02:17 pm by Jopapa
Busca en Google Refresh web page html

La wikipedia te lo dice.
Jopapa
www.jopapa.me

torke100

Gracias por tu respuesta, pero si te das cuenta, el código ya contiene una de las líneas que indica la Wikipedia y no refresca la página. Además, también he probado con todas las demás opciones y nada.

Debe haber alguna forma...


torke100


surbyte

Ya te dijo @Jopapa como hacerlo, lo buscaste, porque acabo de hacerlo y la primer respuesta es la que necesitas.

torke100

#5
Jan 13, 2020, 09:26 pm Last Edit: Jan 18, 2020, 05:08 pm by surbyte Reason: No repitas lo que se lee arriba.
@surbyte
¿Pero alguien ha mirado mi código? Ya tiene una línea como la que me explica ese post. La he puesto para redirigir a la misma página, sin dirigir, he probado con http, con Serial3.println. Todo lo que dice la Wikipedia ya lo he probado y nada.

Algo estoy haciendo mal....

PeterKantTropus

#6
Jan 13, 2020, 10:00 pm Last Edit: Jan 13, 2020, 10:01 pm by PeterKantTropus
En los navegadores como Chrome tienes herramientas de desarrollo, las cuales poseen una ventana que indica si hay un error en el código al cargar la pagina. Ademas es posible que tu navegador bloquee las recargas por html.
"Si no entra como tornillo, entra como clavo"

torke100

Ademas es posible que tu navegador bloquee las recargas por html.
Pues si es así, son todos, incluyendo explorer. ¿Hay alguna forma de saber si bloquean las recargas?

PeterKantTropus

#8
Jan 15, 2020, 03:50 pm Last Edit: Jan 15, 2020, 03:57 pm by PeterKantTropus
Si mas de un  navegador no funciona, es poco probable que la causa este en un bloqueo, prueba con las herramientas de desarrollo del navegador,  en la salida del monitor,  podrás ver los errores al cargar la pagina y si están bloqueadas las recargas.
"Si no entra como tornillo, entra como clavo"

harkonnen

Has puesto ulr: en vez de url= en en meta refresh.

torke100

#10
Jan 15, 2020, 09:27 pm Last Edit: Jan 18, 2020, 05:09 pm by surbyte Reason: No repitas lo que se lee arriba.
@harkonnen
Gracias. Pero sigue sin funcionar.

@PeterKantTropus

Gracias también. He mirado ya con las herramientas de desarrollo (console) y no me marca ningún error. Incluso cuando tenía el url: en lugar del url=. Sigue funcionando igual.

No se, algo se me escapa.

Sereno

Podrías por favor explicarme el motivo de esa redirección??
Sin ella funciona perfectamente.
Si no me equivoco la redireccionas a los 15 segundos.
Code: [Select]
Serial3.println("<meta http-equiv=\"refresh\" content=\"15;\"</head>");

ElEspanol

Seguro que esta mal el uso de \
Mírate en tu tutorial como ha de ser la línea con el refresh tag.
Mira en el navegador el código fuente y compáralo.


torke100

#13
Jan 18, 2020, 11:23 am Last Edit: Jan 18, 2020, 05:09 pm by surbyte Reason: No repitas lo que se lee arriba.
@Sereno
¿Te refieres a esta línea?
Si. Llevar razón. Funciona igual de una forma o de otra. Es decir, lo de la url es una prueba de las mil que he hecho por ver si redireccionaba y en teroría debería funcionar igual que la línea que tú has puesto.

Pero a mí no me funciona ninguna en este código.

torke100

#14
Jan 18, 2020, 11:30 am Last Edit: Jan 18, 2020, 05:10 pm by surbyte
@ElEspanol
Como ya digo, he probado con esta línea que viene en el código (que por cierto, tiene algún error y funciona) y también con la -Serial3.println("<meta http-equiv=\"refresh\" content=\"15;\"</head>"); - que sólo tiene el \ del cierre del head. Y tampoco refresca. Bueno, por probar, he cambiado la línea mil veces y nada.

Go Up