Meteoclimatic

Software => WeatherLink => Mensaje iniciado por: PIN en 20 de Abril del 2020, 18:41:30 pm

Título: Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 18:41:30 pm
Estoy mirando con el programa WeatherLink haber si consigo la cantidad de lluvia en 48 horas. Haber si alguien me puede decir si se puede hacer o si hay algún programa para que me diga la cantidad en 48 horas o algún JavaScript.
Título: Re:Lluvia 48 horas
Publicado por: casacota en 20 de Abril del 2020, 19:15:06 pm
Si es por días de medianoche a medianoche es fácil: http://www.atmos.cat/weatherlink/reports/noaa_2020_04.txt
Por otra parte Meteoclimatic te da la suma del episodio.
Título: Re:Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 19:32:58 pm
Haber si me explico bien, para la lluvia del día es  <!--dailyRain--> y el que quiero saber es para la lluvia de dos días o 48 horas o como se puede saber.
Título: Re:Lluvia 48 horas
Publicado por: casacota en 20 de Abril del 2020, 20:02:05 pm
No existe tag para ello. Habría que escribir algún tipo de programa que lo extrayese de la base de datos (*.wlk)
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 20 de Abril del 2020, 20:08:52 pm
WL tiene un archivo de registros llamado downld02.txt (2-day data archive)

Si lo subes al servidor o ya lo tienes se podría leer con una llamada con JavaScript y ajax si la página es HTML y si tienes PHP y lo quieres hacer con él con un script que sacase los datos de la columna de la lluvia.

Si lo tienes accesible vía web en tu servidor y me das el enlace te hago el script.
Título: Re:Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 20:28:17 pm
el enlace es https://ontinareltiempo.webcindario.com/fotos/MESES%20PASADOS/downld02.txt
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 20 de Abril del 2020, 21:01:02 pm
Copia y pega este código PHP en un archivo en tu servidor llamado lluvia48h.php, en la carpeta raíz.

Ejecuta su dirección en el navegador a ver qué sale https://ontinareltiempo.webcindario.com/lluvia48h.php

Si te sale 0.2 ya podrás ponerlo donde tú quieras insertándolo con PHP.

Código: [Seleccionar]
<?php

$contenido 
file('/fotos/MESES%20PASADOS/downld02.txt');

$lineas count($contenido);
$res 0;

for (
$i 3$i $lineas$i++){

$res += preg_split('/\s+/ ',$contenido[$i])[16];

}


echo 
$res;

?>
Título: Re:Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 21:15:17 pm
pero ahora como se hace para que me salga el valor en html

<table width="100%" border="1">
  <tbody>
    <tr>
      <td>Aquí  el valor 0.2</td>
    </tr>
  </tbody>
</table>
Título: Re:Lluvia 48 horas
Publicado por: kocher en 20 de Abril del 2020, 21:27:16 pm
Saludos jmviper

¡Eres un fenómeno!  :aplaude1:

Solo un detalle, en mi caso funciona cambiando la línea:

             
Código: [Seleccionar]
$res += preg_split('/\s+/ ',$contenido[$i])[16];
Por esta otra:

           
Código: [Seleccionar]
$res += preg_split('/\s+/ ',$contenido[$i])[17];
         
                          http://kocher.es/lluvia48h.php (http://kocher.es/lluvia48h.php)


Título: Re:Lluvia 48 horas
Publicado por: jmviper en 20 de Abril del 2020, 22:25:42 pm
pero ahora como se hace para que me salga el valor en html

<table width="100%" border="1">
  <tbody>
    <tr>
      <td>Aquí  el valor 0.2</td>
    </tr>
  </tbody>
</table>

Hay varias posibilidades de implementarlo en tu web pero la más fácil sería con PHP. Si el index de tu web es index.html o index.htm deberías de renombrarlo a index.php, no va a pasar nada al cambiarlo y vas a poder ver tu web de igual manera pero le vas a poder meter código php y por lo tanto el valor que da ese archivo.

Una vez renombrado sería poner en el código que has puesto:

Código: [Seleccionar]
<table width="100%" border="1">
  <tbody>
    <tr>
      <td><?php include_once 'lluvia48h.php'; echo $res?></td>
    </tr>
  </tbody>
</table>

y ya te saldría el valor al cargar la página.

Lo que hay que tener cuidado es en las demás páginas de tu web si enlazan al index con index.html ya que tendrías que renombrar los enlaces a index.php

La otra manera es un poco más compleja, aunque no mucho con JavaScript con una petición Ajax al archivo.

Yo de ti pondría la página PHP ya que vas a poder poner muchas más cosas.

Saludos jmviper

¡Eres un fenómeno!  :aplaude1:

Solo un detalle, en mi caso funciona cambiando la línea:

             
Código: [Seleccionar]
$res += preg_split('/\s+/ ',$contenido[$i])[16];
Por esta otra:

           
Código: [Seleccionar]
$res += preg_split('/\s+/ ',$contenido[$i])[17];
         
                          http://kocher.es/lluvia48h.php (http://kocher.es/lluvia48h.php)





Hola Kocher cuánto tiempo !! siempre un placer tenerte por aquí  :) :)

No es complicado el script no pero como he probado con el archivo de PIN y me ha ido bien no he caído de que puede diferir si no se le quitan los espacios en blanco al principio sobre todo de cada línea.

De todas formas ya veo que le has cambiado el índice al array quizás por el motivo que yo apunto.

Habría que probarlo así a ver si sale igual para todos los casos:

Código: [Seleccionar]
<?php

$contenido 
file('/fotos/MESES%20PASADOS/downld02.txt');

$lineas count($contenido);
$res 0;

for (
$i 3$i $lineas$i++){

$res += preg_split('/\s+/ ',trim($contenido[$i]))[16];

}


echo 
$res;

?>


P.D. Una cosa que veo es que ese archivo de WL no tiene las últimas 48 horas sino que es desde las 0:00 del día de ayer por lo que no reflejaría la lluvia caída en las últimas 48 horas... habría que subir el downld08.txt y parsearlo conforme a los intervalos de tiempo para sí sacar ese acumulado correctamente.

Como veo que lo tiene PIN en su servidor lo modifico y lo probamos.
Título: Re:Lluvia 48 horas
Publicado por: kocher en 20 de Abril del 2020, 23:07:42 pm
Perfecto

Aquí tienes mi archivo:

       http://kocher.es/downld02.txt (http://kocher.es/downld02.txt)

       http://kocher.es/lluvia48h.php (http://kocher.es/lluvia48h.php)
Título: Re:Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 23:16:41 pm
mañana are todo, ahora me voy a descansar.

Gracias y un saludo a los dos por la ayuda.
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 20 de Abril del 2020, 23:16:51 pm
Buffff estoy probando los dos pero hay un pequeño problema... el de PIN es del 2017 y el tuyo kocher del año pasado... se ve que no los estáis subiendo actualmente.

A ver si los podéis subir actualizados para probarlos.
Título: Re:Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 23:27:31 pm
mira haber este
https://ontinareltiempo.webcindario.com/fotos/MESES%20PASADOS/downld08.txt
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 20 de Abril del 2020, 23:29:28 pm
Es el que he estado probando y no sirve para estas últimas 48 horas ya que tiene fecha 22/06/17 por ejemplo... de 2017 que lo subiste por última vez.
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 20 de Abril del 2020, 23:32:12 pm
ok perfecto, veo que lo has modificado.

Prueba este nuevo código en lluvia48h.php

Código: [Seleccionar]
<?php

$contenido 
array_reverse(file('/fotos/MESES%20PASADOS/downld08.txt'));

$lineas count($contenido);
$res 0
$fecha_act time();

for (
$i 0$i $lineas$i++){

$linea preg_split('/\s+/ ',trim($contenido[$i]));
$fecha explode('/',$linea[0]);
$fecha $fecha[0].'-'.$fecha[1].'-20'.$fecha[2];
$fecha strtotime($fecha.' '.$linea[1]);
$lluvia $linea[16];
if ($fecha_act $fecha 172800$res += $lluvia;
else break;

}


echo 
$res;

?>
Título: Re:Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 23:34:08 pm
y este https://ontinareltiempo.webcindario.com/fotos/MESES%20PASADOS/downld02.txt
Título: Re:Lluvia 48 horas
Publicado por: kocher en 20 de Abril del 2020, 23:37:31 pm
Buffff estoy probando los dos pero hay un pequeño problema... el de PIN es del 2017 y el tuyo kocher del año pasado... se ve que no los estáis subiendo actualmente.

A ver si los podéis subir actualizados para probarlos.


El archivo http://kocher.es/lluvia48h.php (http://kocher.es/lluvia48h.php) está siempre actualizado. Fíjate en los 2 primeros campos: fecha y hora (Quizás debas borrar la cache de tu navegador):

               
Código: [Seleccionar]
                  Temp     Hi
  Date    Time     Out   Temp
------------------------------
19/04/20   0:05   14.4   14.5
19/04/20   0:10   14.3   14.4
19/04/20   0:15   14.3   14.4
19/04/20   0:20   14.5   14.5
19/04/20   0:25   14.5   14.6
19/04/20   0:30   14.6   14.7

Título: Re:Lluvia 48 horas
Publicado por: jmviper en 20 de Abril del 2020, 23:41:15 pm
kocher estoy cogiendo los datos en tu servidor de este archivo:

http://kocher.es/downld02.txt

y no está actualizado. Quizás no lo esté subiendo tu WL.
Título: Re:Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 23:44:36 pm
Vale ya me va funcionando y una ultima pregunta jmviper para la lluvia de ayer como seria.
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 20 de Abril del 2020, 23:46:49 pm
Vale ya me va funcionando y una ultima pregunta jmviper para la lluvia de ayer como seria.

Habría que modificar el script para que cogiera el intervalo de tiempo de ayer y sumase esa lluvia. No sé si ya lo haré esta noche pero mañana seguro que lo tienes.
Título: Re:Lluvia 48 horas
Publicado por: PIN en 20 de Abril del 2020, 23:50:44 pm
Vale pues asta mañana.
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 21 de Abril del 2020, 00:10:48 am
ok me ha dado tiempo a hacerlo.

Ahora queda así:

Código: [Seleccionar]
<?php

$contenido 
array_reverse(file('/fotos/MESES%20PASADOS/downld08.txt'));

$lineas count($contenido);
$res 0$ayer 0;
$fecha_act time();

for (
$i 0$i $lineas$i++){

$linea preg_split('/\s+/',trim($contenido[$i]));
$fecha explode('/',$linea[0]);
$fecha $fecha[0].'-'.$fecha[1].'-20'.$fecha[2];
$fecha strtotime($fecha.' '.$linea[1]);
$lluvia $linea[16];
if ($fecha_act $fecha 172800) {
$res += $lluvia;
if (date('d/m/y',strtotime('-1 day',$fecha_act)) == $linea[0]) $ayer += $lluvia;
}
else break;

}


echo 
$res.' '.$ayer;

?>


Mira a ver si va bien pero para implementarlo en tu página no sería así como se tendría que incluir. La primera cifra es la de las últimas 48 horas y la segunda la lluvia de ayer. Ya lo veríamos mañana.

Saludos
Título: Re:Lluvia 48 horas
Publicado por: kocher en 21 de Abril del 2020, 00:20:04 am
kocher estoy cogiendo los datos en tu servidor de este archivo:

http://kocher.es/downld08.txt

y no está actualizado. Quizás no lo esté subiendo tu WL.

Perdón jmviper  :;

Me he equivocado con el copia/pega; la dirección correcta es;

             http://kocher.es/downld02.txt

Mil perdones

Título: Re:Lluvia 48 horas
Publicado por: jmviper en 21 de Abril del 2020, 00:26:18 am
No hay nada que perdonar kocher  ;)

Quizás no has visto que he dicho en un anterior mensaje que el archivo downld02.txt no es exactamente de las últimas 48 horas sino del día actual y el anterior por lo que ya no son esas últimas 48 horas y que para extraer esas 48 horas hay que trabajar con el otro archivo más largo de WL llamado downld08.txt

De ahí ya sí podemos sacar las últimas 48 e incluso la última semana  *+* *+*

Como ya he dicho ese archivo lo tienes en tu servidor pero lo tienes desactualizado:

http://kocher.es/downld08.txt
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 21 de Abril del 2020, 08:20:29 am
Bueno veamos, script en pruebas

Sacará la lluvia de las últimas 24h, 48h y de ayer:

Código: [Seleccionar]
<?php

$direccionlocal 
'/fotos/MESES%20PASADOS/downld08.txt';

$contenido array_reverse(file($direccionlocal));

$lineas count($contenido);
$ultimas24h 0$ultimas48h 0$ayer 0;
$fecha_act time();

for (
$i 0$i $lineas$i++){

$linea preg_split('/\s+/ ',trim($contenido[$i]));
$fecha explode('/',$linea[0]);
$fecha $fecha[0].'-'.$fecha[1].'-20'.$fecha[2];
$fecha strtotime($fecha.' '.$linea[1]);
$lluvia $linea[16];
if ($fecha_act $fecha 172800) {
$ultimas48h += $lluvia;
if ($fecha_act $fecha 86400$ultimas24h += $lluvia;
if (date('d/m/y',strtotime('-1 day',$fecha_act)) == $linea[0]) $ayer += $lluvia;
}
else break;

}


$ultimas24h number_format($ultimas24h1);
$ultimas48h number_format($ultimas48h1);
$ayer number_format($ayer1);

if (isset(
$_GET['valores'])) echo 'Últimas 24 horas = ',$ultimas24h,' mm<br/>Últimas 48 horas = ',$ultimas48h,' mm<br/>Ayer = ',$ayer,' mm';

?>

Lo he puesto con la dirección local del archivo downld08.txt del servidor de PIN así que habría que poner la ruta en que cada uno lo tuviese.

Si ejecutamos el script vía web no saldrá nada en el navegador (buen síntoma, no habrían errores) y para ver el resultado pondríamos la dirección + ?valores

Con eso podríamos ver los valores, tipo http://miweb/lluvia48h.php?valores (no lleva a ningún sitio esta dirección, es sólo un ejemplo)

Lo de meterlo con PHP en cualquier página quedaría así (ejemplo anterior del código de PIN):

Código: [Seleccionar]
<table width="100%" border="1">
  <tbody>
    <tr>
      <td><?php include '/lluvia48h.php'; echo 'Últimas 24 horas = ',$ultimas24h,' mm'?></td>
    </tr>
  <tr>
      <td><?php echo 'Últimas 48 horas = ',$ultimas48h,' mm'?></td>
    </tr>
      <tr>
      <td><?php echo 'Ayer = ',$ayer,' mm'?></td>
    </tr>
</tbody>
</table>

Título: Re:Lluvia 48 horas
Publicado por: kocher en 21 de Abril del 2020, 09:43:51 am
No hay nada que perdonar kocher  ;)

Quizás no has visto que he dicho en un anterior mensaje que el archivo downld02.txt no es exactamente de las últimas 48 horas sino del día actual y el anterior por lo que ya no son esas últimas 48 horas y que para extraer esas 48 horas hay que trabajar con el otro archivo más largo de WL llamado downld08.txt

De ahí ya sí podemos sacar las últimas 48 e incluso la última semana  *+* *+*

Como ya he dicho ese archivo lo tienes en tu servidor pero lo tienes desactualizado:

http://kocher.es/downld08.txt

Ufff, no he dado ni una; ahora ya está actualizado el archivo:

                              http://kocher.es/downld08.txt

                               http://kocher.es/lluvia48h.php?valores
   


Título: Re:Lluvia 48 horas
Publicado por: jmviper en 21 de Abril del 2020, 10:25:44 am
Tranquilo tranquilo kocher… a veces pasa al perder el hilo  *+* *+*

Perfecto, ya he visto tu script y está sumando los valores del barómetro y por eso salen una burrada de cifras...

Cambia el índice de la línea $lluvia = $linea[16]; de 16 a 17 y saldrá la lluvia.

Ocurre porque tu downld08.txt tiene otro campo anterior que no tiene el de PIN, concretamente el THSW Index ya que tendrás sensor de radiación solar y WL pone ese campo "extra".

Título: Re:Lluvia 48 horas
Publicado por: kocher en 21 de Abril del 2020, 10:30:45 am

Perfecto, ya he visto tu script y está sumando los valores del barómetro y por eso salen una burrada de cifras...

Cambia el índice de la línea $lluvia = $linea[16]; de 16 a 17 y saldrá la lluvia.

Ocurre porque tu downld08.txt tiene otro campo anterior que no tiene el de PIN, concretamente el THSW Index ya que tendrás sensor de radiación solar y WL pone ese campo "extra".

Efectivamente, lo has solucionado (como de costumbre) je je

                      apla3
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 21 de Abril del 2020, 11:21:36 am
Perfecto  :) :)

Veo que las cantidades que recoge el script son las correctas, 1 mm ayer y 8.8 mm de las últimas 24 h y 9.8 mm de las últimas 48 h.

Título: Re:Lluvia 48 horas
Publicado por: PIN en 21 de Abril del 2020, 11:46:24 am
Se podría poner si no hay cantidad que ponga 0.0 mm, por que somo me sale 0mm
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 21 de Abril del 2020, 13:07:11 pm
Ok modificado en el código del script de mi anterior mensaje. Tres líneas más para que siempre salga la suma formateada a un 1 decimal.
Título: Re:Lluvia 48 horas
Publicado por: PIN en 21 de Abril del 2020, 13:29:53 pm
La verdad que en este foro da justo poner algún problema, porque rápidamente hay gente que te da una solución o una gran ayuda, a todos los problemas de la meteo y estaciones.
La verdad que gracias a vosotros esto no seria igual.
Para todos aquellos que dais las soluciones o ayudas un gran APLAUSO.
Título: Re:Lluvia 48 horas
Publicado por: jmviper en 21 de Abril del 2020, 14:30:53 pm
Gracias a vosotros por formar parte de esta red gracias a lo cual nos ayudamos y aprendemos tod@s

 apla3