Ejecutar eventos según la hora solar
martes, 26 de agosto de 2008Ya comenté hace tiempo como programé el encendido y apagado de las videocámaras según las horas de salida/puesta de sol, pero en ocasiones puedes necesitar ejecutar algún script en un periodo de tiempo variable justo antes o después de la puesta de sol, por ejemplo si estás haciendo una grabación del tipo time-lapse ( vídeo realizado a partir de fotogramas tomados a intervalos mayores de los de una grabación normal: la apertura de una flor, etc..) hay luz suficiente para grabar media hora antes de amanecer y media después de la puesta de sol.
Con un sencillo script y usando el comando AT esto es sumamente facil.
Obtener las horas de salida y puesta de sol
Primero creamos un script que se conecta a una página web de la cual obtenemos la hora:minuto de salida y puesta de sol, y guarda los resultados en dos archivos .amanecer y .atardecer en nuestro /home. En PERL sería algo como #!/usr/bin/perl
$c = `(lynx -dump http://www.timeanddate.com/worldclock/city.html?n=324 | grep -E "Sunrise|Sunset")`;
if ( $c =~ /Sunrise at (.*):(.*) AM (.*)\n(.*)Sunset at (.*):(.*) PM (.*)/ ) {
$ss=$5 + 12;
open (amanecerfile, '/home/trebol-a/.amanecer');
print amanecerfile "amanecer=$1:$2";
close (amanecerfile);
open (atardecerfile, '/home/trebol-a/.atardecer');
print atardecerfile "atardecer=$ss:$6";
close (amanecerfile);
}
Nota: La página de timeanddate.com dá la hora en formato 12 horas por lo que le sumamos 12 a la hora del atardecer para obtenerla en formato 24h.
Visitad la página para averiguar el código de vuestra ciudad ó cualquiera cercana, para Murcia el código es n=324.
Guardamos el archivo en nuestro ~/bin como horaSolar.pl y creamos un evento en crontab que ejecute este script cada dia a las 12:00 AM.crontab -e
0 12 * * * /usr/bin/perl /home/trebol-a/bin/horaSolar.pl
Probamos el script perl /home/trebol-a/bin/horaSolar.pl
Ahora en vuestro directorio raiz teneis dos nuevos archivos llamados .amanecer y .atardecer, al hacer cat .amanecer
amanecer=07:19
Ahora solo nos falta incorporar estos resultados a las variables del sistema, por ejemplo editando vuestro ~/.bashrc y ~/.profile y añadiendo las siguientes líneasexport `cat ~/.amanecer`
export `cat ~/.atardecer`
Una vez echo lo anterior, al abrir una consola basta con ponerecho $amanecer
07:19
echo $atardecer
20:49
Ya lo tenemos. Ahora supongamos que queremos que se habra Firefox 5 minutos antes de ponerse el sol (…vaya usted a saber porque motivo…)at $atardecer" - 5 min"
warning: commands will be executed using /bin/sh
at> export DISPLAY=:0.0
at> firefox
at> (pulsa Ctrl+D para grabar y salir)
job 2011 at 2008-08-21 20:44
Listo, a las 20:44, 5 minutos antes de poner el sol se abre firefox.
18 de December, 2024 @ 19:14