Refrescar página web

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?

#include 
#include 
#include 
#include 
#include      
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("");
       Serial3.println("");
       Serial3.println("Estación La Moheda.");
       Serial3.println("");
       Serial3.println("");
       Serial3.println("");
       Serial3.println("

Estación La Moheda

");       Serial3.println("

");       Serial3.print("

TEMPERATURA: ");       Serial3.print(temp);       Serial3.print (" °C");       Serial3.println ("

");       Serial3.print("

MÁX: ");       Serial3.print(tempmax);       Serial3.print (" °C");       Serial3.println ("

");       Serial3.print("

MÍN: ");       Serial3.print(tempmin);       Serial3.print (" °C");       Serial3.println("

");       Serial3.print("

HUMEDAD: ");       Serial3.print (humedad);       Serial3.print (" %");       Serial3.println ("

");       Serial3.print ("

SENSACIÓN TÉRMICA: ");       Serial3.print (sensacion);       Serial3.print (" °C");       Serial3.println ("

");       Serial3.print ("

PRESIÓN ATMOSFÉRICA: ");       Serial3.print (presion);       Serial3.print (" mbar");       Serial3.println ("

");       Serial3.print("

Fecha: ");       Serial3.print (dia);       Serial3.print ("/");       Serial3.print (mes);       Serial3.print ("/");       Serial3.print (anio);       Serial3.print ("      Hora: ");       Serial3.print (hora);       Serial3.print (":");       Serial3.print (minuto);       Serial3.println ("

");       Serial3.println("

38 56 18 N   03 14 29 W

");       Serial3.print("

Altitud: 745 msnm");       Serial3.print("

");   } 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 (temp0 )           {char c = Serial3.read();             if (c == 71)                 {  webserver();                     delay(500);                 }           } }

Busca en Google Refresh web page html

La wikipedia te lo dice.

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...

¿Nadie?

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

@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....

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.

PeterKantTropus: 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?

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.

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

@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.

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.

Serial3.println("<meta http-equiv=\"refresh\" content=\"15;\"</head>");

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.

@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.

@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(""); - que sólo tiene el \ del cierre del head. Y tampoco refresca. Bueno, por probar, he cambiado la línea mil veces y nada.

Por probar no se pierde nada. Inténtalo con esta línea:

Serial3.println("");

Fuente: https://www.prometec.net/hlk-rm04/

x Sereno.

Gracias amigo. Ya está probaba y tampoco refresca.

Pues es raro raro, pk a mi me funciona, este es el código que me da chrome cuando pido el código fuente, que está refrescando correctamente.



Estación La Moheda.



Estación La Moheda

TEMPERATURA: 0.00 °C

MÁX: 0.00 °C

MÍN: 0.00 °C

HUMEDAD: 0.00 %

SENSACIÓN TÉRMICA: 0.00 °C

PRESIÓN ATMOSFÉRICA: 0.00 mbar

Fecha: 0.00/0.00/0.00      Hora: 0.00:0.00

38 56 18 N   03 14 29 W

Altitud: 745 msnm

Puedes poner el código fuente que te da chrome cuando cargas tu página?? Cópia este código en un txt y lo guardas renombrandolo a "loquesea.html" con las comillas para que te guarde la extensión. verás que te refresca correctamente, si no es así el problema es de tu navagador.

x Sereno

Efectivamente soy de tu opinión. Yo creo que el código funciona bien, lo que pasa es que por algo (que es lo que estoy buscando) no actualiza el valor de las variables cada cierto tiempo, que es lo que yo estoy buscando. Si actualizo con F5, va bien. Pero lo que busco es que se refresque solo.

Este es el código que me da el navegador (es un poco más largo que el primero porque lo he modificado algo, pero a los efectos que busco, es lo mismo) Por cierto, he tenido que usar Firefox para obtenerlo, porque con Chrome no me sale el código fuente... Quizá tenga algo que ver también.

Estación La Moheda.

Estación La Moheda

TEMPERATURA: 0.00 °C

MÁX: 0.00 °C

MÍN: 0.00 °C

HUMEDAD: 0.00 %

SENSACIÓN TÉRMICA: -17.56 °C

PRESIÓN ATMOSFÉRICA: 0.00 mbar

RADIACIÓN ULTRAVIOLETA (0-11): 0.00 ÍND: 0

DIRECCIÓN VIENTO: ..

VELOCIDAD VIENTO: 495.13 km/h

MÁXIMA HOY: 495.13 km/h

LLUVIA HOY:  164.50 l/m²

ACUMULADO ANUAL:  0.00 l/m²

ACUM. HIDROLÓGICO:  180.00 l/m²

La Solana 18/1/2020        20:58

38 56 18 N   03 14 29 W

Altitud: 745 msnm