Software > WeeWX

Extraer información de almanaque de Belchertown

(1/2) > >>

edlmeteo:
Buenos días, me gustaría extraer en formato texto la información de amanecer y atardecer que muestra Belchertown. ¿En qué archivo almacena esa info? O existe algún comando para hacer una consulta vía Internet?
La idea es tener la hora de amanecer de cada día para grabar los amaneceres con la webcam. El resto del tiempo hago capturas cada 5 minutos, pero me gustaría grabar los minutos alrededor del amanecer.
Gracias!

jmviper:
Esa información sale de un json. Lo encuentras en /var/www/html/weewx/belchertown/json/weewx_data.json en la sección "almanac"

Si quieres mayor control yo lo haría con PHP, seguramente lo tengas instalado así que creas un script con este contenido:


--- Código: ---<?php

$amanecer = '/home/pi/amanecer.txt';  // Poner entre las comillas la ruta al archivo. Por defecto /home/pi/amanecer.txt

$lat = 38.1;  // Latitud

$lon = -1.3; // Longitud

$altura = 0; // Altura del sol sobre/bajo el horizonte en grados

$formato = 0; //  Seleccionar 0, 1 ó 2 para formato de salida. 0 = hora ("07:23"), 1 = hora con decimales ("7.4945"), 2 = timestamp ("1806785098");

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

$formatos = [SUNFUNCS_RET_STRING,SUNFUNCS_RET_DOUBLE,SUNFUNCS_RET_TIMESTAMP];

file_put_contents($amanecer, date_sunrise(time(), $formatos[$formato], $lat, $lon, 90 - $altura, date('Z') / 3600).PHP_EOL);

?>
--- Fin del código ---

En los comentarios he puesto las diferentes opciones y los formatos de salida. El amanecer civil comienza cuando el sol está a menos de 6º bajo el horizonte por lo que pondríamos en altura -6.
Cuando el sol está a 0 grados ya asoma sobre el horizonte (si este es plano, lo ideal sería el mar) por efecto de la refracción de la atmósfera. En verdad el borde superior del disco solar empieza a asomar cuando está a unos -0.83º aproximadamente (-0º 50').

Lo restante es ejecutarlo en un crontab (crontab -e) añadiendo esta línea al final 0 0 * * * php /home/pi/amanecer.php
Claro está que le ponemos nombre de archivo amanecer.php y lo ponemos en /home/pi y cada día se actualizará con la hora de salida del sol en el cambio de día en /home/pi/amanecer.txt

Como ves es una pequeña muestra. Puedes poner más líneas para poner el inicio y el fin de tomar esas capturas cada minuto entre esos -6º bajo el horizonte y por ejemplo los 6º sobre él modificando la última línea y dejándola así:


--- Código: ---file_put_contents($amanecer, date_sunrise(time(), $formatos[$formato], $lat, $lon, 90 - $altura, date('Z') / 3600).PHP_EOL.date_sunrise(time(), $formatos[$formato], $lat, $lon, 84, date('Z') / 3600).PHP_EOL);
--- Fin del código ---


Más info en PHP:

https://www.php.net/manual/es/function.date-sunrise.php

edlmeteo:
 apla3

edlmeteo:

--- Cita de: jmviper en 20 de Abril de 2021, 12:34:57 ---Esa información sale de un json. Lo encuentras en /var/www/html/weewx/belchertown/json/weewx_data.json en la sección "almanac"

Si quieres mayor control yo lo haría con PHP, seguramente lo tengas instalado así que creas un script con este contenido:


--- Código: ---<?php

$amanecer = '/home/pi/amanecer.txt';  // Poner entre las comillas la ruta al archivo. Por defecto /home/pi/amanecer.txt

$lat = 38.1;  // Latitud

$lon = -1.3; // Longitud

$altura = 0; // Altura del sol sobre/bajo el horizonte en grados

$formato = 0; //  Seleccionar 0, 1 ó 2 para formato de salida. 0 = hora ("07:23"), 1 = hora con decimales ("7.4945"), 2 = timestamp ("1806785098");

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

$formatos = [SUNFUNCS_RET_STRING,SUNFUNCS_RET_DOUBLE,SUNFUNCS_RET_TIMESTAMP];

file_put_contents($amanecer, date_sunrise(time(), $formatos[$formato], $lat, $lon, 90 - $altura, date('Z') / 3600).PHP_EOL);

?>
--- Fin del código ---

En los comentarios he puesto las diferentes opciones y los formatos de salida. El amanecer civil comienza cuando el sol está a menos de 6º bajo el horizonte por lo que pondríamos en altura -6.
Cuando el sol está a 0 grados ya asoma sobre el horizonte (si este es plano, lo ideal sería el mar) por efecto de la refracción de la atmósfera. En verdad el borde superior del disco solar empieza a asomar cuando está a unos -0.83º aproximadamente (-0º 50').

Lo restante es ejecutarlo en un crontab (crontab -e) añadiendo esta línea al final 0 0 * * * php /home/pi/amanecer.php
Claro está que le ponemos nombre de archivo amanecer.php y lo ponemos en /home/pi y cada día se actualizará con la hora de salida del sol en el cambio de día en /home/pi/amanecer.txt

Como ves es una pequeña muestra. Puedes poner más líneas para poner el inicio y el fin de tomar esas capturas cada minuto entre esos -6º bajo el horizonte y por ejemplo los 6º sobre él modificando la última línea y dejándola así:


--- Código: ---file_put_contents($amanecer, date_sunrise(time(), $formatos[$formato], $lat, $lon, 90 - $altura, date('Z') / 3600).PHP_EOL.$amanecer, date_sunrise(time(), $formatos[$formato], $lat, $lon, 84, date('Z') / 3600).PHP_EOL);
--- Fin del código ---


Más info en PHP:

https://www.php.net/manual/es/function.date-sunrise.php

--- Fin de la cita ---

Funciona casi todo bien, excepto para incluir el punto en el que el sol alcanzaría los 6º. En esa ultima linea que me indicas he tenido que hacer alguna modificación pero ya funciona bien. Con esto consigo un .txt con las horas a las que empieza y acaba el amanecer. Correcto. Pero, ¿cómo puedo programar el cron para que la hora de una tarea vaya cambiando cada día? O, mejor, ¿como le digo al cron que dicha hora se encuentra en un txt que debe leer?
Gracias.

edlmeteo:
Creo que esto que quiero hacer es una forma maravillosa de complicarme la vida. A ver si encuentro otra manera de conseguirlo.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa