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:
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):
@ 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):
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:
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.