Meteoclimatic

Software => Software de Meteoclimatic => Mensaje iniciado por: Telares en 05 de Junio del 2017, 20:17:56 pm

Título: Script PHP para contar envíos de la plantilla
Publicado por: Telares en 05 de Junio del 2017, 20:17:56 pm
Gracias jmviper y manolodos. Lo del IR ya lo tenía presente, pero como no acabo de llegar al​ máximo de 4,8 no sé realmente cuántos envíos pierdo al día. No sé cómo se consulta el log del​ PHP, pero lo buscaré. Pienso que estaría bien tener en los datos de cada estación una especie de contador con los envíos aceptados. Lo del log es tan farragoso como intentar modificar datos en Weewx.
Título: Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 05 de Junio del 2017, 22:30:13 pm
Bueno recuerdo que tuvimos un hilo con lo de subir la plantilla que te daba problemas:

http://forum.meteoclimatic.net/index.php/topic,1313.45.html

En él pusimos como "remedio" ya que no soy ningún experto en Linux que ejecutara el script PHP en vez del bash.

Lo que puedes hacer es en el crontab en la línea de subida de la plantilla añadirle que te escriba el log.

Creo que se quedaría la línea así:

Código: [Seleccionar]
9-59/5 * * * *  php /root/meteoclimatic/meteoclimatic_http.php.old >> /var/log/meteoclimatic.log
Y ya tendrías el log para consultarlo en /var/log/meteoclimatic.log

Haz la prueba a ver si funciona  ;)

saludos
Título: Script PHP para contar envíos de la plantilla
Publicado por: Telares en 07 de Junio del 2017, 07:29:54 am
Gracias jmviper, para no ser experto en Linux te apañas muy bien. Ya me hace el log y me salen  estos datos cada 5 minutos, por lo que deduzco que son los envíos aceptados:

-- 07/06/2017 05:14:02 --
HTTP/1.1 202 Accepted
Date: Wed, 07 Jun 2017 05:14:02 GMT
Server: Apache/2.4.10 (Debian)
X-Error: 202 Accepted
X-DigestKey:
Content-Length: 69
Content-Type: text/plain;charset=UTF-8
Connection: close

Entonces habría que revisar uno a uno, supongo, para ir contando los no aceptados.
Título: Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 07 de Junio del 2017, 08:07:47 am
Ok

Pero se me ocurre una cosa para no sea "tan farragoso" consultar el log ...

Cuando puedas adjunta el log aquí y prepararé un pequeño script PHP para que cuente los envíos aceptados de los últimos 30 días.

El log mayormente tiene la finalidad de crearse para ver "errores" en este caso en los envíos. Un log de 30 días cada 5 minutos tendría muchos envíos y se haría muy grande con el paso de mucho tiempo (un año por ejemplo).

Lo dicho, adjunta el log y ya trastearé con él. Mi intención es que el script PHP que pondrás a ejecutarse también en el crontab cada x tiempo vaya "recortando" el log al último o últimos días (se podrá poner la cantidad de días) y a la vez vaya escribiendo en otro log los últimos 30 días con los envíos aceptados para poder ver fácilmente cuántos se han enviado exitosamente al día.

Saludos
Título: Script PHP para contar envíos de la plantilla
Publicado por: Telares en 07 de Junio del 2017, 14:39:52 pm
Pues muchísimas gracias, eso estaría muy bien.

Título: Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 07 de Junio del 2017, 19:53:01 pm
Bueno tras la primera toma de contacto con el log veo que la plantilla se envía cada 5 minutos y es aceptada pero en verdad sólo vale la última que lee meteoclimatic.

Puesto que contar todas las plantillas enviadas cada 5 minutos y ya que sólo vale la última enviada antes de que meteoclimatic lea la plantilla (no es como subirla y leerla el robot por URL) vamos a hacer unos cambios.

Vas a poner el crontab que ejecute el script cada 15 minutos en vez de cada 5:

Código: [Seleccionar]
9-59/15 * * * *  php /root/meteoclimatic/meteoclimatic_http.php.old >> /var/log/meteoclimatic.log
Borra el log de meteoclimatic con sudo rm /var/log/meteoclimatic.log

Mañana en que ya se habrán enviado bastantes envíos lo vuelves a adjuntar.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: Telares en 08 de Junio del 2017, 15:05:12 pm
Ahí lo tienes.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 08 de Junio del 2017, 22:55:55 pm
Ok de momento ya he hecho que cuente los envíos exitosos. Falta trastear con las fechas etc etc. Espero tenerlo para el fin de semana.

Por cierto... cada cuánto te genera weewx la plantilla de meteoclimatic ?? Lo suyo sería cada minuto si lo tienes cada 5 y te explico el porqué... la utilidad de envío de meteoclimatic pone la hora y fecha del sistema en el momento del envío sobrescribiendo la original que lleva la plantilla (puesta por weewx). Por lo tanto si la plantilla está rellenada por weewx a las 22:55 por ejemplo y es enviada por la utilidad a las 22:59 o a las 23:04 pone esa hora que no corresponde exactamente con la hora de ese dato rellenado por weewx.

Yo pondría cada minuto generándose la plantilla y así se envía la más actualizada.

También creo que es conveniente tras hacer pruebas que en el crontab pongas:


Código: [Seleccionar]
14-59/15 * * * *  php /root/meteoclimatic/meteoclimatic_http.php.old >> /var/log/meteoclimatic.log
Con eso subirás en los minutos 14, 29, 44 y 59 de cada hora quedándose grabados los datos últimos del día a las 23:59.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: Telares en 10 de Junio del 2017, 12:08:18 pm
Hola, ya cambié el crontab. Con respecto al periodo de actualización no soy capaz de cambiarlo. He puesto en weewx.conf:

[StdArchive]

    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    archive_interval = 60

con 60 en vez de 300, pero sigue haciéndolo cada 5 minutos. No sé si lo estoy haciendo bien.
Gracias.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 10 de Junio del 2017, 15:36:13 pm
Ok tranquilo, no pasa nada.

Lo importante es que genere y envíe las plantillas.  4-5 minutos no es nada grave. A ver si entre hoy y mañana dejo el script terminado o casi.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 11 de Junio del 2017, 10:41:41 am
Primera prueba.

Te adjunto el archivo PHP para de momento contar envíos válidos y no válidos o erróneos.

Es la primera toma de contacto para ver que los cuenta correctamente.

Lo pones donde tú quieras y lo ejecutas con php contarenvios.php
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: Telares en 11 de Junio del 2017, 10:52:45 am
Me sale así, es lo esperable?


pi@raspberrypi:~ $ sudo php contarenvios.php
7/06/2017   buenos: 22       malos o no enviados: 74
8/06/2017   buenos: 96       malos o no enviados: 0
9/06/2017   buenos: 96       malos o no enviados: 0
0/06/2017   buenos: 96       malos o no enviados: 0
1/06/2017   buenos: 35       malos o no enviados: 61
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 11 de Junio del 2017, 12:01:09 pm
Sí... de momento van bien... excepto en la primera cifra de las fechas del día 10 y el 11 .... no sé si es porque has copiado y pegado mal u otra cosa

96 envíos es el número máximo de envíos que se pueden realizar al día. En el día 7 empezaste a generar el log por lo que no están todos y el día de hoy te contará los que llevas. Ya veré de en el día actual calcular los envíos que se deberían de llevar y ponerlo mejor.

Adjunta otra vez el meteoclimatic.log que tienes ahora que ya tiene muchos más días que con el que estoy probando. Voy a ver si puedo truncar el log a 30 días que son los que realmente interesan. Se verá cuando el log llegue a los 30 días de datos e irá quedándose en esos últimos 30 días siempre.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: Telares en 11 de Junio del 2017, 12:33:31 pm
Lo de las decenas en la fecha sale así, no lo he capado yo al copiar. Te paso el log recientito. Estoy que no quepo en mí de alegría. Muchísimas gracias.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 11 de Junio del 2017, 19:15:05 pm
Mejoras en este último:

Solucionado lo de la fechas, ya salen enteras y en el día actual sólo contará los envíos que se lleven realizados. Si ves algún fallo o algo raro lo dices y sobre todo cuelga el log si ves fallos en los envíos pues parece que hasta el momento son todos exitosos jejejeje... puede que se escapen condiciones por lo que hay que verlo bien.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: Telares en 11 de Junio del 2017, 19:22:11 pm
Bueno pues parece que está todo bien. Aunque sí que se pierde alguno de los envíos. Creo que nada preocupante.

pi@raspberrypi:~ $ sudo php contarenvios.php
07/06/2017   buenos: 22       malos o no enviados: 74
08/06/2017   buenos: 96       malos o no enviados: 0
09/06/2017   buenos: 96       malos o no enviados: 0
10/06/2017   buenos: 96       malos o no enviados: 0
11/06/2017   buenos: 68       malos o no enviados: 1
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 12 de Junio del 2017, 11:55:27 am
Bueno vamos a tener que ver más cosas.

Te adjunto el gráfico y la tabla del IR que sólo podemos ver los administradores.

En él se ve que a lo más alto que llegas la mayoría de días es a 4750 en el primer tramo y son 4800 el máximo posible (50 x 96) por lo que falla un envío al día. Dió la casualidad que al cambiar las horas del crontab ayer perdiste 4 envíos por lo que cuando puedas adjunta de nuevo el log para revisar el día de ayer y ver qué ha fallado en los envíos.

Hay que ir depurando cosas.

Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: Telares en 12 de Junio del 2017, 17:12:52 pm
A mí al ejecutar tu script me da que ayer perdí 2, no 4.

pi@raspberrypi:~ $ sudo php contarenvios.php
07/06/2017   buenos: 22       malos o no enviados: 74
08/06/2017   buenos: 96       malos o no enviados: 0
09/06/2017   buenos: 96       malos o no enviados: 0
10/06/2017   buenos: 96       malos o no enviados: 0
11/06/2017   buenos: 94       malos o no enviados: 2
12/06/2017   buenos: 60       malos o no enviados: 0

te paso el log de ahora

Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 12 de Junio del 2017, 19:10:32 pm
Pues tenemos un serio problema entonces... no es fiable al 100% el script

Te explico. El script cuenta los envíos exitosos (202: Accepted) pero parece ser que no son leídos por el robot todos ellos por lo que no se sabe a ciencia cierta cuántos han sido exitosos en lectura.

Efectivamente ayer el script cuenta 2 malos que no están con el código 202 y 94 enviados con ese código. Y no veo manera de mejorarlo con los datos que ofrece el log.

Lo siento  ::) ::)
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: EA4TN en 12 de Junio del 2017, 20:04:59 pm
Eso no lo vas a saber nunca.

Yo mando cada 5 minutos, pero el robot solo admite uno de cada 3. Aún así, a pesar de que me admita todos los envíos, algún día he terminado con algún "hueco".

Tu script puede contar cuentos envía, pero no cuantos son procesados y aceptados por el robot.

La única posibilidad sería que el script, mediante wget entrara en la ficha de la estación, leyera la última plantilla y comparara con la enviada. Pero me da la sensación que ninguno tenemos el nivel para escribir el script....aunque Google siempre ayuda
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: Telares en 12 de Junio del 2017, 21:11:22 pm
Pues tenemos un serio problema entonces... no es fiable al 100% el script

Te explico. El script cuenta los envíos exitosos (202: Accepted) pero parece ser que no son leídos por el robot todos ellos por lo que no se sabe a ciencia cierta cuántos han sido exitosos en lectura.

Efectivamente ayer el script cuenta 2 malos que no están con el código 202 y 94 enviados con ese código. Y no veo manera de mejorarlo con los datos que ofrece el log.

Lo siento  ::) ::)
Por supuesto que no hay problema. Veo que has dedicado mucho tiempo a ello y estoy muy agradecido. Creo que este tema de los envíos aceptados nos interesa a muchos de nosotros no solo por el IR. Yo pensaba que mi conexión a internet era peor de lo que estoy viendo. Me parece que perder varios diarios no afecta a la calidad de la estación meteorológica en general. Por desgracia hay otros compañeros que pierden días enteros por fallos de conexión.
Saludos
Eso no lo vas a saber nunca.

Yo mando cada 5 minutos, pero el robot solo admite uno de cada 3. Aún así, a pesar de que me admita todos los envíos, algún día he terminado con algún "hueco".

Tu script puede contar cuentos envía, pero no cuantos son procesados y aceptados por el robot.

La única posibilidad sería que el script, mediante wget entrara en la ficha de la estación, leyera la última plantilla y comparara con la enviada. Pero me da la sensación que ninguno tenemos el nivel para escribir el script....aunque Google siempre ayuda

Evidentemente​ por lo laborioso que resultaría hacer ese script, lo dejamos así. Creo que entonces volveré a enviar cada 5 minutos tal y como me recomendaste cuando me ayudaste a hacer mi instalación.
Gracias
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: EA4TN en 12 de Junio del 2017, 21:36:03 pm
Veamos, lo ideal sería que, alguien con conocimientos de Python creara un uploader como hay para otros muchas páginas meteorológicas.

El problema es que yo no tengo esos conocimientos de python.....en realidad, de python no sé nada de nada.

Mientras tanto, ahora mismo lo óptimo es mandar la plantilla, con el script, cada 5 minutos. Sabiendo que el robot los admitirá todos o casi todos y que solo procesará uno cada quince minutos. Es decir, procesará 1 de cada 3 por la programación interna de Meteoclimatic.

Pero aunque te admita todos los envíos realizados cada 5 minutos, siempre puede haber algún fallo, aunque no es habitual.

Si alguien sabe de Python, que lo diga, Weewx tiene muy buena documentación para crear extensiones.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 12 de Junio del 2017, 22:42:36 pm

Si alguien sabe de Python, que lo diga, Weewx tiene muy buena documentación para crear extensiones.


Python.... creo que solo sé utilizar el comando print  *+* *+*. Bueno miento... sé lo básico nada del otro mundo para crear pequeños scripts por lo que claro está que si alguien sabe serán bienvenidos sus conocimientos.

Telares como sabrás y dada mi torpeza aún con Linux del que EA4TN es un maestro hemos tratado el tema del script PHP para la subida de datos a meteoclimatic:

http://forum.meteoclimatic.net/index.php/topic,1418.0.html

Yo te ayudé como pude en este otro hilo:

http://forum.meteoclimatic.net/index.php/topic,1313.0.html

Puedes tratar de poner la instalación como se debe de poner. Pero si ya no vas a contar los envíos con el script de este hilo mejor que en el crontab quites que te cree el log y más si lo pones cada 5 minutos como indica EA4TN para que no se te llene poco a poco el log quitándote espacio en la Raspi.

saludos

Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: Telares en 13 de Junio del 2017, 07:39:08 am
Efectivamente ambos me llevásteis en volandas durante la instalación de mi sistema. Gracias de nuevo. De momento voy a volver a la situación anterior hasta que a través del IR detecte un bajón en los envíos. Gracias a vuestro trabajo podré poner el log  e intentar averiguar qué pasa.
Saludos.
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: EA4TN en 13 de Junio del 2017, 09:44:48 am
Por continuar el tema.....se me ocurre algo como esto.

Me conecto a mi plantilla, mediante RSS Feed y busco la actualización

Citar
#!/bin/bash
cd ~
act=$(wget -q -O- http://www.meteoclimatic.net/feed/rss/ESMAD2800000028522A | grep Actualizado)
echo $act

A partir de aquí volcar en fichero y manejar los textos, es cosa de paciencia y googlear.




Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: EA4TN en 13 de Junio del 2017, 10:07:53 am
Un paso más

Citar
#!/bin/bash
cd ~

act=$(wget -q -O- http://www.meteoclimatic.net/feed/rss/ESMAD2800000028522A | grep Actualizado | \
sed 's/<li> //g' | sed 's/<\/li>//g')
echo $act

Resultado
Citar
jantoni@Elite-8300:~$ ./prueba.sh
Actualizado: 13-06-2017 07:51 UTC
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: jmviper en 13 de Junio del 2017, 20:26:54 pm
Interesante....

Puede servir sí. Como yo soy más de PHP que del "difícil" bash he creado un pequeño código que va añadiendo las fechas de la actualización a un archivo cada 15 minutos con el crontab:

Código: [Seleccionar]
<?php

$datos 
file_get_contents('http://www.meteoclimatic.net/feed/rss/ESMUR3000000030600B');

$fecha =  substr(explode('Actualizado: ',$datos)[1],0,20).PHP_EOL;

$fichero fopen('/var/www/weewx/dias.txt','a');

fwrite($fichero,$fecha);

fclose($fichero);

?>


resultado en /var/www/weewx/dias.txt

Código: [Seleccionar]
root@orangepipc:~# cat /var/www/weewx/dias.txt
13-06-2017 16:15 UTC
13-06-2017 16:30 UTC
13-06-2017 16:45 UTC
13-06-2017 17:00 UTC
13-06-2017 17:15 UTC
13-06-2017 17:30 UTC
13-06-2017 17:45 UTC
13-06-2017 18:00 UTC

Lo siguiente sería contar las actualizaciones del día y que no sean repetidas e ir truncando el archivo :D
Título: Re:Script PHP para contar envíos de la plantilla
Publicado por: EA4TN en 13 de Junio del 2017, 21:20:47 pm
Solo lo ponía a título didáctico. Evidentemente, habría que hacer lo que has hecho tu, volcar en un fichero y luego manejarlo a tu antojo.

La ventaja de Python es la portabilidad, pero vale cualquier sistema