Arduino Forum

International => Español => Software => Topic started by: torke100 on Jan 11, 2020, 01:19 pm

Title: Refrescar página web
Post by: torke100 on Jan 11, 2020, 01:19 pm
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);
                }
          }
}
Title: Re: Refrescar página web
Post by: Jopapa on Jan 11, 2020, 02:17 pm
Busca en Google Refresh web page html

La wikipedia te lo dice.
Title: Re: Refrescar página web
Post by: torke100 on Jan 11, 2020, 09:08 pm
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...

Title: Re: Refrescar página web
Post by: torke100 on Jan 13, 2020, 03:11 pm
¿Nadie?
Title: Re: Refrescar página web
Post by: surbyte on Jan 13, 2020, 03:59 pm
Ya te dijo @Jopapa como hacerlo, lo buscaste, porque acabo de hacerlo y la primer respuesta es la que necesitas.
Title: Re: Refrescar página web
Post by: torke100 on Jan 13, 2020, 09:26 pm
@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....
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 13, 2020, 10:00 pm
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.
Title: Re: Refrescar página web
Post by: torke100 on Jan 15, 2020, 03:13 pm
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?
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 15, 2020, 03:50 pm
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.
Title: Re: Refrescar página web
Post by: harkonnen on Jan 15, 2020, 05:09 pm
Has puesto ulr: en vez de url= en en meta refresh.
Title: Re: Refrescar página web
Post by: torke100 on Jan 15, 2020, 09:27 pm
@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.
Title: Re: Refrescar página web
Post by: Sereno on Jan 16, 2020, 07:23 pm
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>");
Title: Re: Refrescar página web
Post by: ElEspanol on Jan 17, 2020, 11:36 pm
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.

Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 11:23 am
@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.
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 11:30 am
@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.
Title: Re: Refrescar página web
Post by: Sereno on Jan 18, 2020, 06:10 pm
Por probar no se pierde nada.
Inténtalo con esta línea:
Code: [Select]
Serial3.println("<meta Serial3.println-equiv=\"refresh\" content=\"15\"></head>");

Fuente:
https://www.prometec.net/hlk-rm04/ (https://www.prometec.net/hlk-rm04/)
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 06:14 pm
x Sereno.

Gracias amigo. Ya está probaba y tampoco refresca.
Title: Re: Refrescar página web
Post by: Sereno on Jan 18, 2020, 06:20 pm
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.
Code: [Select]


<!DOCTYPE HTML>
<html>
<head><title>Estaci&oacute;n La Moheda.</title>
<style> *{color:#0000FF;} </style>
<meta http-equiv="refresh" content="5;"</head>
<body style=background-color:#FFFF99;>
<h1><center> Estaci&oacute;n La Moheda<center></h1>
<p></br></p>
<h3> TEMPERATURA:&nbsp;0.00 °C</h3>
<h3>M&Aacute;X:&nbsp0.00 °C</h3>
<h3>M&Iacute;N:&nbsp0.00 °C</h3></br>
<h3> HUMEDAD:&nbsp;0.00 %</h3>
<h3> SENSACI&Oacute;N T&Eacute;RMICA:&nbsp;0.00 °C</h3>
<h3> PRESI&Oacute;N ATMOSF&Eacute;RICA:&nbsp;0.00 mbar</h3></br>
<p><center>Fecha: 0.00/0.00/0.00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hora:&nbsp;0.00:0.00<center></p>
<p><center>38&nbsp;56&nbsp;18&nbsp;N&nbsp;&nbsp;&nbsp;03&nbsp;14&nbsp;29&nbsp;W<center></p>
<p><center>Altitud: 745 msnm<center></p></body></html>


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.
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 09:06 pm
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.


<!DOCTYPE HTML>
<html>
<head><title>Estaci&oacute;n La Moheda.</title>
<style> *{color:#0000FF;} </style>
<meta Serial3.println-equiv="refresh" content="15"></head>
<body style="background-color:#FFFF99;">
<h1><center> Estaci&oacute;n La Moheda<center></h1>
<p></br></p>
<h3> TEMPERATURA:&nbsp;0.00 °C</h3>
<h3>M&Aacute;X:&nbsp0.00 °C</h3>
<h3>M&Iacute;N:&nbsp0.00 °C</h3></br>
<h3> HUMEDAD:&nbsp;0.00 %</h3>
<h3> SENSACI&Oacute;N T&Eacute;RMICA:&nbsp;-17.56 °C</h3>
<h3> PRESI&Oacute;N ATMOSF&Eacute;RICA:&nbsp;0.00 mbar</h3>
<h3> RADIACI&Oacute;N ULTRAVIOLETA (0-11):&nbsp;0.00&nbsp;&Iacute;ND:&nbsp;0</h3> </br>
<h3>DIRECCI&Oacute;N VIENTO:&nbsp;..</h3>
<h3>VELOCIDAD VIENTO:&nbsp;495.13 km/h</h3>
<h3>M&Aacute;XIMA HOY:&nbsp;495.13 km/h</h3></br>
<h3> LLUVIA HOY: &nbsp;164.50&nbsp;l/m²</h3>
<h3> ACUMULADO ANUAL: &nbsp;0.00&nbsp;l/m²</h3>
<h3> ACUM. HIDROL&Oacute;GICO: &nbsp;180.00&nbsp;l/m²</h3> </br>
<p><center>La Solana 18/1/2020&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20:58<center></p>
<p><center>38&nbsp;56&nbsp;18&nbsp;N&nbsp;&nbsp;&nbsp;03&nbsp;14&nbsp;29&nbsp;W<center></p>
<p><center>Altitud: 745 msnm<center></p></body></html>
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 18, 2020, 09:14 pm
<meta Serial3.println-equiv="refresh" content="15"></head
Serial3.println esta de mas
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 09:16 pm
Ahora mismo lo pruebo y te digo
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 09:23 pm
Tampoco. Seguimos igual. La página funciona bien, pero no actualiza el valor de las variables.
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 18, 2020, 09:36 pm
Perdon
<meta HTTP-EQUIV="refresh" content="15"></head
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 09:38 pm
Gracias de nuevo, pero ese también está probado...
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 18, 2020, 09:48 pm
¿Que pasa cuando abres con el navegador el archivo que adjunto?
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 18, 2020, 09:50 pm
De nuevo
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 09:53 pm
Perfecto. Se ve la hora y se actualiza al segundo.
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 18, 2020, 09:59 pm
Vuelve a poner el código que te lee firefox (usando los tag, para que no se enoje el moderador)
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 10:11 pm
Pero ¿dónde? En arduino está ya. Es el mismo ¿Te refieres a que lo ponga en un txt?
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 18, 2020, 10:18 pm
Quería ver si estas utilizando
<meta http-equiv=\"refresh\" content=\"15;\"</head>
yo eliminaría el ";" del  "15;\"
Title: Re: Refrescar página web
Post by: torke100 on Jan 18, 2020, 10:19 pm
No. Eso no ha estado nunca en el código.
Title: Re: Refrescar página web
Post by: PeterKantTropus on Jan 18, 2020, 10:23 pm
Lo saque de aquí
@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.
Title: Re: Refrescar página web
Post by: Sereno on Jan 18, 2020, 11:16 pm
El archivo adjunto a mi me actualiza correctamente.
Mira de cargarlo sin realizar ningún cambio a ver que tal.
Title: Re: Refrescar página web
Post by: torke100 on Jan 19, 2020, 02:46 pm
Probado e igual.

Una cosa que he detectado y que quizá tenga algo que ver.

Resulta que he enviado un documento firmado digitalmente a la administración. Pues cuando lo he intentado enviar, el certificado me ha devuelto el mensaje "Su reloj va adelantado 29 segundos. Espere ese tiempo y vuélvalo a intentar".

Finalmente, tras tres intentos, he conseguido enviarlo, pero me ha resultado extraño. Nunca me había ocurrido.

Es que ya no sé que pensar.