El tiempo Mapas Satélites Radar Modelos El mundo Foro Revista Avisos        
16° Almendricos 10°-1° Madrid 15° Barcelona 17° Sevilla

Autor Tema: Fotografía automática  (Leído 33225 veces)

Desconectado MeteoGetafe

  • Cumulus Húmilis
  • **
  • Mensajes: 358
  • Sexo: Masculino
  • El cielo de Getafe ahora mismito
    • MeteoGetafe
Re: Fotografía automática
« Respuesta #36 en: Viernes 29 Julio 2011 11:46:24 am »
Hola, como parece que mas colegas se han animado con el invento y con el paso del tiempo he ido haciendo modificaciones en los scripts y demás, voy a mostrar lo que tengo ahora por si a alguien le ayuda.

El script ahora calcula la hora del amanecer y atardecer para lanzar un programa u otro.
También pone el banner para indicar la temperatura, fecha, hora, etc.
Si alguien que controla de batch se pone a analizarlo le va a dar algo, es una jodida chapuza, pero no tengo mucho tiempo, y si funciona...

A parte del script y del psremote es necesario instalar algunos programas auxiliares como:
Suntimes.exe (calcula el amanecer y el atardecer)
Imagemagick (son una serie de herramientas que permiten trabajar con fotografías por línea de comandos. Yo utilizo el mogrify.exe para incluir el banner con los datos)
FTPS.exe El Ftp del windows xp me daba problemas y ahora uso este.

Para disponer de los datos meteorológicos, he puesto en el Weatherlink una plantilla con este contenido:

Código: [Seleccionar]
text 10,10 'MeteoGetafe.com <!--outsideTemp-->ºC <!--outsideHumidity-->% <!--windDirection--> <!--wind10Avg--> Km/h <!--dailyRain--> mm'
Como los programas no los puedo lanzar exactamente en el momento del atardecer y amanecer, utilizo un batch "calctime.cmd" que me permite sumar y restar minutos a estas fechas. Este es el script (no es mío):

Código: [Seleccionar]
@ echo off
   if "%1"==""       goto :syntax
   if "%1"=="?"      goto :syntax
   if "%1"=="/?"     goto :syntax
   if "%1"=="help"   goto :syntax
   if "%1"=="HELP"   goto :syntax
   if not "%OS%"=="Windows_NT" goto :notNT
   goto :begin
   :notNT
   echo.
   echo     This CMD file is for Windows NT or Windows 2000 ONLY.
   :syntax
   echo.
   echo     %0 - calculate time difference from NOW or a specified time
   echo          by adding or subtracting a specified time value
   echo.
   echo     parameter patterns are of the following types:
   echo.
   echo.
   echo     (1)  %~n0 NOW [+^|-]hh:mm
   echo.
   echo               - returns the future (+) or past (-) time value from
   echo                 the CURRENT time
   echo.
   echo     (2)  %~n0 hh:mm [+^|-]hh:mm
   echo.
   echo               - returns the future (+) or past (-) time value from
   echo                 the SPECIFIED time
   echo.
   echo.
   goto :EOF

   :begin
   setlocal
   set scriptname=%~n0
   set inparm1=%1
   set inparm2=%2
   if "%inparm1%" EQU "now" set inparm1=NOW

   if "%inparm1%" NEQ "NOW" goto :timespec

   call :GETTIME
   set zhh=%gettime:~0,2%
   set zmm=%gettime:~2,2%
   goto :newtime

   :timespec
   set zhh=%inparm1:~0,2%
   set zmm=%inparm1:~2,2%

   :newtime
   if %zhh:~0,1%==0 set zhh=%zhh:~1%
   if %zmm:~0,1%==0 set zmm=%zmm:~1%

   set sign=%inparm2:~0,1%
   set reqhh=%inparm2:~1,2%
   set reqmm=%inparm2:~3,2%

   if %reqhh:~0,1%==0 set reqhh=%reqhh:~1%
   if %reqmm:~0,1%==0 set reqmm=%reqmm:~1%

   set /a totmin = zhh * 60
   set /a totmin = totmin + zmm
   set /a newreqmm = reqhh * 60
   set /a newreqmm = newreqmm + reqmm
   set /a newtotalmm = totmin %sign% newreqmm

   if 0 GTR %newtotalmm% set /a newtotalmm=newtotalmm+1440

   set newtotalhh=0

   :minushrs

   if %newtotalmm% LSS 60 goto :done
   set /a newtotalmm = newtotalmm - 60
   set /a newtotalhh = newtotalhh + 1
   goto :minushrs

   :done

   if %newtotalhh% GEQ 24 set /a newtotalhh = newtotalhh - 24
   if 10 GTR %newtotalhh% set newtotalhh=0%newtotalhh%
   if 10 GTR %newtotalmm% set newtotalmm=0%newtotalmm%
   if "%3" EQU "." echo %newtotalhh%:%newtotalmm%
   endlocal & set %scriptname%=%newtotalhh%%newtotalmm%
   goto :EOF

   :GETTIME
   for /f "tokens=1-7 delims=:. " %%a in (
    'echo.^| time ^| findstr "current"') do (
       set zhh=%%e
       set zmm=%%f
       set zss=%%g
   )
   if 10 GTR %zhh% set zhh=0%zhh%
   set gettime=%zhh%:%zmm%:%zss%
   goto :EOF

   :EOF

El script FTP para subir los datos (meteogetafe_foto.scr):

Código: [Seleccionar]
open meteogetafe.com
usuario_ftp
contraseña_ftp
binary
cd httpdocs
passive
put 0001b.jpg
del ftpcam_1b.jpg
ren 0001b.jpg ftpcam_1b.jpg
quit



Finalmente el script de lanzamiento:

Código: [Seleccionar]

REM Pongo los datos de latitud y longitud para que el suntimes.exe tenga la info que necesita
set LATITUDE=40.3170013
set LONGITUDE=-3.7330000

REM Calculo fecha y hora
Set CURRDATE=%TEMP%\CURRDATE.TMP
Set CURRTIME=%TEMP%\CURRTIME.TMP

DATE /T > %CURRDATE%
TIME /T > %CURRTIME%

Set PARSEARG="eol=; tokens=1,2,3,4* delims=/, "
For /F %PARSEARG% %%i in (%CURRDATE%) Do (
SET YYYYMMDD=%%k%%j%%i
set yyyy=%%k
set mm=%%j
set dd=%%i)

Set PARSEARG="eol=; tokens=1,2,3* delims=:, "
For /F %PARSEARG% %%i in (%CURRTIME%) Do (
Set HHMM=%%i%%j%%k
set hh=%%i
set mi=%%j%%k)

for /f "delims=., " %%A in ('time /t') do set Hora=%%A
set Now=%Hora:~0,2%
set Now=%Now%%Hora:~3,2%

REM Calculo las fechas de amanecer y atardecer
for /f %%A in ('SunTimes.exe /Sunrise /NoSymbols') do set Sunrise=%%A
for /f %%A in ('SunTimes.exe /Sunset /NoSymbols') do set Sunset=%%A
set Sunrise=%Sunrise:~0,4%
set Sunset=%Sunset:~0,4%
set DayNight=Night
rem correcciones de horas Cuando hay cambio de hora tengo que adaptarlo :)
call CALCTIME %Sunset% +0120
set tarde=%calctime%
call CALCTIME %Sunrise% +0025

set manana=%calctime%
echo Hora Corte por la mañana %manana%
echo Hora Corte por la tarde %tarde%

REM Miro a ver si es de día o de noche
if %Now% GTR %manana% if %Now% LSS %tarde% set DayNight=Day
echo Ahora son las %Now% es de %DayNight% Sunrise=%Sunrise% corte a las %manana% Sunset=%Sunset% corte a las %tarde%

REM Segun Día y noche, lanzo un programa u otro
if %DayNight%==Night "C:\Archivos de programa\BreezeSys\PSRemote\PSRemoteTest\psremotetest.exe" -e 3 -s 4 -a 0 -I 0 -z 3 -x 7 -Q 5 -l 1
if %DayNight%==Day "C:\Archivos de programa\BreezeSys\PSRemote\PSRemoteTest\psremotetest.exe" -I 0 -e 0 -z 5 -x 6 -Q 5 -l 1

REM Si es de día creo el directorio para guardar las fotos con la fecha
if %DayNight%==Day (
MKDIR  c:\psremote\guardado\%YYYYMMDD%
REM muevo la foto anterior al directorio de guardar.
move c:\psremote\0001b.jpg c:\psremote\guardado\%YYYYMMDD%\%YYYYMMDD%%HHMM%_I.jpg
REM Si no se ha hecho la foto, pongo el cartelito de no disponible. No se porque la foto siempre me la hace como 003.jpg, debería ser 002.jpg
if not exist c:\psremote\0003.jpg copy c:\psremote\no_disponible.jpg c:\psremote\0003.jpg
REM La renombro a 001.jpg que es la que subo por ftp
rename c:\psremote\0003.jpg 0001b.jpg
REM Borro por si hay porquerías
del c:\psremote\0003.jpg /Q
del c:\psremote\0002.jpg /Q
del c:\psremote\0004.jpg /Q
REM Le planto los datos meteorológicos con el htm que me genera la plantilla de weatherlink
mogrify -density 300 -pointsize 7 -fill black -gravity Northwest -draw "@z:\WeatherLink\meteoget\temp.htm" 0001b.jpg
REM Le planto la fecha y hora
mogrify -density 300 -pointsize 7 -fill black -gravity Northwest -draw "text 1200,10 '%dd%/%mm%/%yyyy% %HH%:%mi%'" 0001b.jpg
rem mogrify -frame 20x20 0001b.jpg
Echo RENAME %1 %1_%YYYYMMDD%%HHMM%
)



REM por la noche es lo mismo, pero las letras van en otro color
if %DayNight%==Night (
MKDIR  c:\psremote\guardado\%YYYYMMDD%
move c:\psremote\0001b.jpg c:\psremote\guardado\%YYYYMMDD%\%YYYYMMDD%%HHMM%_I.jpg
if not exist c:\psremote\0003.jpg copy c:\psremote\no_disponible2.jpg c:\psremote\0003.jpg
rename c:\psremote\0003.jpg 0001b.jpg
del c:\psremote\0003.jpg /Q
del c:\psremote\0002.jpg /Q
del c:\psremote\0004.jpg /Q
mogrify -density 300  -pointsize 7 -fill white -gravity Northwest -draw "@z:\WeatherLink\meteoget\temp.htm" 0001b.jpg
mogrify -density 300  -pointsize 7 -fill white -gravity Northwest -draw "text 1200,10 '%dd%/%mm%/%yyyy% %HH%:%mi%'" 0001b.jpg
Echo RENAME %1 %1_%YYYYMMDD%%HHMM%


)

REM Lo subo al FTP con un script FTP y FTPS
c:\psremote\ftps -s:meteogetafe_foto.scr

Eso es todo amigos.
Getafe 646 msnm. Datos On-line desde Getafe, Madrid http://www.meteogetafe.com

Desconectado mentero

  • Sol
  • *
  • Mensajes: 2
Re:Fotografía automática
« Respuesta #37 en: Sábado 10 Diciembre 2011 11:43:44 am »
Buenos días,

a la vista de la gran cantidad de información contenida en éste post, me he animado a hacer algo parecido. He pillado una Canon usada, pero a la hora de comprar psremote me encuentro con dos precios distintos para la version 2.0 y para la más actual 2.2.0.  Unos 49euro contra 81euro(VAT británico incluído).

Como los tiempos no están para dispendios, podeis decirme los que usais el programa, ¿que versión estais utilizando?.

Gracias de antemano.



Desconectado MeteoGetafe

  • Cumulus Húmilis
  • **
  • Mensajes: 358
  • Sexo: Masculino
  • El cielo de Getafe ahora mismito
    • MeteoGetafe
Re:Fotografía automática
« Respuesta #38 en: Sábado 10 Diciembre 2011 12:24:04 pm »
Con la 2.0 funciona perfecto, yo ahora tengo la 2.1 pero he estado hasta hace muy poco con la 1.8.
Getafe 646 msnm. Datos On-line desde Getafe, Madrid http://www.meteogetafe.com

Desconectado mentero

  • Sol
  • *
  • Mensajes: 2
Re:Fotografía automática
« Respuesta #39 en: Miércoles 21 Diciembre 2011 16:15:50 pm »
Efectivamente, la versión 2.0 funciona sin problemas.

En relación con los scripts, sólo he encontrado un problema con el comando que busca la hora de amanecer y atardecer.
Para que funcione con el windows XP que tengo, mi configuración regional y la última versión de suntimes.exe 1.1.1.0 he tenido que cambiar un poco el código, y ha quedado;

Código: [Seleccionar]
@echo off

:: Calcula las fechas de amanecer y atardecer -------------------------------------------------

for /f "tokens=1,2,3,4* delims=: " %%A in ('SunTimes.exe --LATITUDE=42 --LONGITUDE=-4') do (
if "%%A"=="Sunrise" set sunrise=%%B%%C%%D
if "%%A"=="Sunset" set sunset=%%B%%C%%D
)
set sunrise=%sunrise:~0,4%
set sunset=%Sunset:~0,4%
echo Sunrise (utc): %SUNRISE%
echo Sunset (utc):  %SUNSET%

:: Obtiene la diferencia con UTC. Tiene en cuenta también el horario de verano. ---------------

Setlocal
Set _key=HKLM\System\CurrentControlSet\Control\TimeZoneInformation

:: find offset from GMT in minutes

for /f "Tokens=3" %%G in ('Reg query %_key% /V ActiveTimeBias^|FIND "REG_DWORD"') do (
Set /a _offset=-%%G
)

:: Convierte a horas
Set /a _offset_hours=%_offset% / 60

:: cambia el formato del offset a hhmm

set _offset_hours=0%_offset_hours%00

echo Horario local= UTC + %_offset_hours% (hhmm)

::  obtiene amanecer y anochecer en horario local ---------------------------------------------

call CALCTIME %Sunrise% +%_offset_hours%
set sunriselocal=%calctime%
echo Amanecer hora local:          %sunriselocal%


call CALCTIME %Sunset% +%_offset_hours%
set sunsetlocal=%calctime%
echo Puesta de sol en hora local:  %sunsetlocal%

:: añade correciones locales para quemar menos fotos ------------------------------------------

call CALCTIME %Sunriselocal% -0010
set manana=%calctime%

call CALCTIME %Sunsetlocal% +0010
set tarde=%calctime%

echo Hora de cambio por la mañana: %manana%
echo Hora de cambio por la tarde : %tarde%

echo  ------------------------------------------------------------------------------------------

La latitud y la longitud las pongo directamente en el comando, por lo que he quitado las líneas de código que las definían en el script de meteogetafe.

He añadido también unas líneas de código que leen de un registro de windows la diferencia entre hora local y UTC en horario de invierno y de verano, y obtienen los datos de amanecer y atardecer en horario local.

Quién sabe, tal vez le sirva a alguien.
 
Nota: Se ruega caridad por parte de los que sí saben programar scripts. Gracias.
(Editado para añadir la funcionalidad de horario local.)








« última modificación: Jueves 22 Diciembre 2011 20:09:48 pm por mentero »

Desconectado MeteoGetafe

  • Cumulus Húmilis
  • **
  • Mensajes: 358
  • Sexo: Masculino
  • El cielo de Getafe ahora mismito
    • MeteoGetafe
Re:Fotografía automática
« Respuesta #40 en: Domingo 19 Febrero 2012 22:46:05 pm »
Buena idea lo de leer el horario de verano o invierno, a mi me tienen que avisar (Pepe) dos veces al año para que cambie la programación.  ;)
Getafe 646 msnm. Datos On-line desde Getafe, Madrid http://www.meteogetafe.com

Desconectado mentero

  • Sol
  • *
  • Mensajes: 2
Re:Fotografía automática
« Respuesta #41 en: Miércoles 22 Febrero 2012 13:15:40 pm »
No me atrevo a preguntar quién es Pepe.

En mi caso, careciendo de tal recurso, prefiero que la máquina lo haga sola.

Estoy algo atascado con la parte de hardware, en concreto con la fijación de la cámara al foco.
Éste pequeño problema unido a que vivo a unos cientos de kilómetros de la futura instalación están retrasando el projecto, pero la instalación provisional lleva subiendo fotos unas semanas sin desfallecimiento ni problemas.

He descartado la Canon A400 por que el ángulo de visión es muy pequeño (f=42mm), y voy a usar una A640 que tiene una distancia focal que permite angulos algo mas abierto. (f 35-140mm en 35mm equivalente).