Hola aunque ya te comente algo por privado jmviper, lo pongo por aquí ya que aletoriamente me sigue pasando lo mismo.
Tengo 2 script que leen el fichero realtime, uno obtiene el valor de lluvia caida, y el otro script revisa si hay cambios en el fichero realtime
Me centro en el de la lluvia por que creo que cuando fallan todos es por el mismo motivo.
He estado investigando y creo haber encontrado el motivo pero no la causa y no es el script. Ya que este ha estado muchos días funcionado correctamente. El fichero cache guarda fecha, hora y litros.
Pero cuando llueve ejemplo 0.2 y ya no llueve mas durante el día, aleatoriamente recibo email de primera lluvia, he observado si abro el fichero cache me encuentro esto:
--20 ,0.0 en vez de esto que es lo que suele haber 28-04-2021 22:45:51,0.2
Es como si no guardase bien dicho fichero cache o se corrompiera, cuando se vuelve a ejecuta el script este no puede leerlo y piensa que esta a 0 y por eso me vuelve a enviar el email con el mensaje correspondiente.
Creí solucionarlo con un fsck
Añadí un sleep como me indicaste y tampoco.
Posiblemente sea como dijiste que CumulusMX escribe el realtime.txt y el script al mismo tiempo intenta leerlo.
Doy mas datos
En la raspberry tengo en el crontab
15 23 * * 7 sudo shutdown -r
He probado a ejecutar el script de lluvia desde la raspberry y pasa lo mismo.
Ahora en vps donde alojo la web
El crontab
*/12 * * * * php /var/www/html/script/alertarealtime.php
*/3 * * * * php /var/www/html/script/alertameteoclimatic.php
*/10 * * * * php /var/www/html/script/alertalluvia.php
*/15 * * * * sh /var/www/html/webtest/script/raspionline.sh miipxxx.ddns.net 22>/dev/null 2>&1
Resumiendo
1.- Script que notifica que el fichero realtime esta actualizado o no
2.- Script que me notifica si se envían datos a meteoclimatic o no
3.- Script que indica si empezó a llover
4,. Script que me notifica si la raspberry esta offline
El 1 y 3 leen el realtime.txt
En los 2 script suelo recibir un correo de crontab con errores cuando fallan y luego en el caso del script de lluvia el email de Primera luvia
En el caso del script de lluvia
PHP Notice: Undefined offset: 1 in /var/www/html/script/alertalluvia.php on line 26
PHP Notice: Undefined offset: 2 in /var/www/html/script/alertalluvia.php on line 26
PHP Notice: Undefined offset: 1 in /var/www/html/script/alertalluvia.php on line 26
PHP Notice: Undefined offset: 9 in /var/www/html/script/alertalluvia.php on line 27
Siendo esas lineas
26 $fechar = $fecha[0].'-'.$fecha[1].'-20'.$fecha[2].' '.$realtime[1];
27 $lluvia = $realtime[9];
Creo que indica que no ha podido leerlo
Con el script de realtime me pasa algo parecido, pero solo me llegan los email de error de cron y nada mas, se que puedo desactivarlos.
Otra curiosidad, si cron ejecuta el script cada 10 minutos me llega el email y telegram y a los 10 minutos otro.
Una solución podría ser subir el realtime.txt en vez de a los 15 seg ponerlo mas tiempo.
O ejecutar los script una vez se ha guardado el realtime.txt tal y como leí, pero creo que es marear mas la perdiz,,,
https://www.lineadecodigo.es/ejecutar-un-script-al-modificar-un-fichero-con-inotifyLo raro es que me ha estado funcionando bien, me di cuenta 2 días que llovía algo por la noche y luego no mas...
Siento darte la paliza
(