Top/Computer and Network/computers/webenvmon

scripts

aste-1x{asteobs}61: crontab -l
0,4,8,12,16,20,24,28,32,36,40,44,48,52,56 * * * * /bin/nice -20 /home/asteobs/envmon_www/weath_plt_1x.csh
10 00 * * * /bin/nice -20 /home/asteobs/envmon_www/weath_plt_1x.csh -days 5

aste-1x:/home/asteobs/envmon_www/weath_plt_1x.csh

#!/bin/tcsh -f

# a script to plot weather data within 5days, which are found in
# aste-1s:/cosmos3/aste/nro/log/weather/weather_*_*.log
# aste-1s:/cosmos3/aste/nro/log/weather/2010/weather_*_*.log.gz
# /cosmos3/aste/nro/log/radiometer/*.tau: HHMMSS tau
# /cosmos3/aste/nro/log/radiometer/2010/*.tau.gz
# /cosmos3/aste/nro/log/rx/sisrx/sisrx_*_*.log YYYY/MM/DD HH:MM 1-4CH
# /cosmos3/aste/nro/log/ant/antlog_*.log YYYY/MM/DD HH:MM:SS Az El
#
# 2010/06/16 Original by Tai Oshima
# 2010/07/29 mod by Tai Oshima
#

set thisfile = $0:t
set DATADIR1 = /cosmos3/aste/nro/log/weather
set DATADIR2 = /cosmos3/aste/nro/log/radiometer
set DATADIR3 = /cosmos3/aste/nro/log/rx/sisrx
set DATADIR4 = /cosmos3/aste/nro/log/ant/antlog
set OUTDIR = /home/asteobs/envmon_www

# data format of weather_*.log
#*1  : Date (GMT)
#*2  : Time (GMT)
#*3  : Temperature (Room) [C]
#*4  : Humidity (Room)
#*5  : Temperature (Outside) [C]
#*6  : Humidity (Outside)
#*7  : Solar Radiation
#*8  : Rainfall
#*9  : Pressure [hPa]
#*10 : Wind Velocity [m/s]
#*11 : Wind Direction [degree]
#*12 : ???
#*13 : ???


# init
set days = 1
set eopt = 0
set edate = ""
set etime = ""
set sopt = 0
set sdate = ""
set stime = ""
#set pngopt = 'size 320,240 medium'
set pngopt = ''

# get options
while (1)
    switch ( $1:q )
    case -h:
        echo "$thisfile"
        echo "generates a weather data plot within 24hrs"
        echo "-days ? : plots ? days data"
        echo "-e enddate endtime"
        echo "-s startdate starttime"
        echo "   ex. -e 2010/01/02 00:00"
        echo "   ex. -s 2010/01/01 00:00"
        echo "       will both plot 2010/01/01 00:00 to 2010/01/02 00:00"
        echo "   if both -e and -s are given the time frame will be"
        echo "      startdate starttime to enddate endtime"
        exit

    case -days:
        set days = $2:q
        shift;shift
        breaksw

    case -e:
        if ($3 == "") then
            echo "specify both YYYY/MM/DD and HH:MM"
            exit
        endif
        set eopt = 1
        set edate = $2:q
        set etime = $3:q
        shift; shift; shift
        breaksw
    case -s:
        if ($3 == "") then
            echo "specify both YYYY/MM/DD and HH:MM"
            exit
        endif
        set sopt = 1
        set sdate = $2:q
        set stime = $3:q
        shift; shift; shift
        breaksw
    default
        break
    endsw
end

# filenames
set img1 = EnvTemp${days}day.png
set img2 = EnvHumi${days}day.png
set img3 = EnvPres${days}day.png
set img4 = EnvWind${days}day.png
set img5 = EnvTau${days}day.png
set img6 = EnvTscd${days}day.png
set img7 = EnvAnt${days}day.png

set log1 = weath_current.log
set log2 = tau_current.log
set log3 = sis_current.log
set log4 = ant_current.log


# get date and time
# default: endtime=now
set now = `date -u +"%Y/%m/%d %H:%M"`

# if endtime is given (time span = 5days fixed)
if($eopt) set now = `echo ${edate} ${etime}`
set date1 = `date -u +"%Y/%m/%d %H:%M" --date "${now} $days days ago"`
set date2 = `date -u +"%Y/%m/%d %H:%M" --date "${now}"`

# if starttime is given (time span = 5days fixed)
if ($sopt) then
    set now = `echo ${sdate} ${stime}`
    set date1 = `date -u +"%Y/%m/%d %H:%M" --date "${now}"`
    set date2 = `date -u +"%Y/%m/%d %H:%M" --date "${now} $days days"`
endif

set year = `date -u +"%Y" --date "${now}"`

# if both starttime and endtime is given
if ($eopt && $sopt) then
    set date1 = `echo $sdate $stime`
    set date2 = `echo $edate $etime`
endif


# get current ?days data + calculation of dew point temperature
cd $OUTDIR
rm -f $log1 $log2 $log3 $log4

touch $log1
touch $log2
touch $log3
touch $log4

@ d = $days
while ($d >= 0)
set date = `date -u +"%Y/%m/%d %H:%M" --date "${date2} $d days ago"`

# weather
set dat1 = `echo weather_${date[1]}|sed 's/\///g'`
if (`ls $DATADIR1/${year}/${dat1}_*.log.gz` != "") then
    foreach log ($DATADIR1/${year}/${dat1}_*.log.gz)
        zcat $log | awk '{if($5>-50 && $6>0 && $10>0){g=a*$5/(b+$5)+log($6/100);Td=b*g/(a-g);print $1,$2,$3,$4,$5,$6,Td,$8,$9,$10,$11}else{printf "\n"}}' a=17.271 b=237.7 >> $log1
        echo "" >> $log1
    end
endif
if (`ls $DATADIR1/${dat1}_*.log` != "") then
    foreach log ($DATADIR1/${dat1}_*.log)
        cat $log | awk '{if($5>-50 && $6>0 && $10>0){g=a*$5/(b+$5)+log($6/100);Td=b*g/(a-g);print $1,$2,$3,$4,$5,$6,Td,$8,$9,$10,$11}else{printf "\n"}}' a=17.271 b=237.7 >> $log1
        echo "" >> $log1
    end
endif

# tau
set dat2 = `echo ${date[1]}.tau|sed 's/\///g;s/^20//'`
if (`ls $DATADIR2/${year}/${dat2}.gz` != "") then
    foreach log ($DATADIR2/${year}/${dat2}.gz)
        zcat $log | awk '($2-mm>3){printf "\n"}{print date,$1":"$2":"$3,$4;mm=$2}' date=$date[1] >> $log2
        echo "" >> $log2
    end
endif
if (`ls $DATADIR2/${dat2}` != "") then
    foreach log ($DATADIR2/${dat2})
        cat $log | awk '($2-mm>3){printf "\n"}{print date,$1":"$2":"$3,$4;mm=$2}' date=$date[1] >> $log2
        echo "" >> $log2
    end
endif

# SCD temperature
set dat3 = `echo sisrx_${date[1]}|sed 's/\///g'`
if (`ls $DATADIR3/${dat3}_*.log` != "") then
    foreach log ($DATADIR3/${dat3}_*.log)
        cat $log | awk '{print $1,$2,$3,$4,$5,$6}' >> $log3
        echo "" >> $log3
    end
endif

# Antenna log
set dat4 = `echo ant_${date[1]}|sed 's/\///g'`
if (`ls $DATADIR4/${year}/${dat4}*.log.gz` != "") then
    foreach log ($DATADIR4/${year}/${dat4}*.log.gz)
        zcat $log | awk '{print $1,$2,$4,$5,$10,$11,$12,$13,$14,$15}' |sed 's/:.. / /' |grep "$date[1]" >> $log4
        echo "" >> $log4
    end
endif
if (`ls $DATADIR4/${dat4}*.log` != "") then
    foreach log ($DATADIR4/${dat4}*.log)
        cat $log | awk '{print $1,$2,$4,$5,$10,$11,$12,$13,$14,$15}' |sed 's/:.. / /' |grep "$date[1]" >> $log4
        echo "" >> $log4
    end
endif

@ d --
end


# make plots with gnuplot
# weather data
if (! -s $log1) then
    echo "weather data not found for specified time frame."
else
gnuplot <<EOF
set xdata time
set xlabel "UTC" 0.0,-1.0
set timefmt "%Y/%m/%d %H:%M"
set xrange ['${date1}':'${date2}']
set bmargin 4
set lmargin 10
set grid

# Temp.
set term png $pngopt
set output '$img1'
set yrange [-30:40]
set ylabel "Temperature [C]"
plot '$log1' using 1:3 t "Obs. Room Temp." w l, \
'$log1' using 1:5 t "Outside Temp." w l, \
'$log1' using 1:7 t "Dew Point Temp." w l

## Humid.
#set output '$img2'
#set yrange [0:100]
#set ylabel "Humidity [%]"
#plot '$log1' using 1:4 t "Room Humid." w l, \
#'$log1' using 1:6 t "Outside Humid." w l

# Pressure, Humidity, rain
set term png $pngopt
set output '$img3'
set multiplot
set size 1,0.25
set origin 0.0,0.0
set bmargin 4
set tmargin 0
set yrange [0:0.117]
set ylabel "Rain [mm]"
plot '$log1' using 1:8 t "Rain" w l

set origin 0.0,0.25
set size 1,0.35
set bmargin 0
set tmargin 0
set yrange [0:100]
set ylabel "Humidity [%]"
set format x ""
set xlabel ""
plot '$log1' using 1:4 t "Obs. Room Humid." w l, \
'$log1' using 1:6 t "Outside Humid." w l

set size 1,0.4
set origin 0.0,0.6
set bmargin 0
set tmargin 1
set format x ""
set xlabel ""
set yrange [557.5:580]
set ylabel "Pressure [hPa]"
plot '$log1' using 1:9 t "Press." w l
set nomultiplot

EOF


gnuplot <<EOF
set xdata time
set xlabel "UTC" 0.0,-1.0
set timefmt "%Y/%m/%d %H:%M"
set xrange ['${date1}':'${date2}']
set bmargin 4
set lmargin 10
set grid

# Wind
set term png $pngopt
set output '$img4'
set multiplot
set size 1,0.3
set origin 0.0,0.0
set bmargin 4
set tmargin 0
set ytics 90
set mytics 3
set yrange [0:360]
set ylabel "WindDir. [deg]"
set xlabel "UTC" 0.0,-1.0
plot '$log1' using 1:11 t "Dir" w l

set size 1,0.7
set origin 0.0,0.3
set bmargin 0
set tmargin 1
set format x ""
set xlabel ""
set ytics 0,5
set yrange [0:35]
set ylabel "WindSp. [m/s]"
plot '$log1' using 1:10 t "Speed" w l
set nomultiplot

EOF
endif

# tau
if (! -s $log2) then
    echo "tau data not found for specified time frame."
else
gnuplot <<EOF
set xdata time
set xlabel "UTC" 0.0,-1.0
set timefmt "%Y/%m/%d %H:%M"
set xrange ['${date1}':'${date2}']
set bmargin 4
set lmargin 10
set grid

# tau220GHz
set term png $pngopt
set output '$img5'
set yrange [0:0.25]
set ylabel "tau220GHz"
plot '$log2' using 1:3 t "tau220GHz" w l
EOF
endif

# SCD temperature
if (! -s $log3) then
    echo "SCD temperature data not found for specified time frame."
else
gnuplot <<EOF
set xdata time
set xlabel "UTC" 0.0,-1.0
set timefmt "%Y/%m/%d %H:%M"
set xrange ['${date1}':'${date2}']
set bmargin 4
set lmargin 10
set grid

# SCD Temperature
set term png $pngopt
set output '$img6'
set yrange [1:300]
set ylabel "SCD Temperature[K]"
set log y
plot '$log3' using 1:3 t "CH1" w l,\
'$log3' using 1:4 t "CH2" w l,\
'$log3' using 1:5 t "CH3" w l,\
'$log3' using 1:6 t "CH4" w l
EOF
endif

# Az, El
if (! -s $log4) then
    echo "Az, El data not found for specified time frame."
else
gnuplot <<EOF
set xdata time
set xlabel "UTC" 0.0,-1.0
set timefmt "%Y/%m/%d %H:%M"
set xrange ['${date1}':'${date2}']
set bmargin 4
set lmargin 10
set grid

# Az, El, Subref
set term png $pngopt
set output '$img7'
set multiplot
set size 1,0.3
set origin 0.0,0.0
set bmargin 4
set tmargin 0
set yrange [-0.5:0.5]
set ylabel "SRef theta"
plot '$log4' using 1:8 t "X theta" w l,\
     '$log4' using 1:9 t "Y theta" w l,\
     '$log4' using 1:10 t "Z theta" w l

set origin 0,0.3
set size 1,0.25
set bmargin 0
set tmargin 0
set format x ""
set xlabel ""
set yrange [-10:10]
set ylabel "SRef pos[mm]"
plot '$log4' using 1:5 t "X" w l,\
     '$log4' using 1:6 t "Y" w l,\
     '$log4' using 1:7 t "Z" w l

set origin 0,0.55
set size 1,0.45
set bmargin 0
set tmargin 1
set format x ""
set xlabel ""
set ytics 90
set mytics 3
set yrange [-270:270]
set ylabel "Az, El [deg]"
plot '$log4' using 1:3 t "Az" w l,\
'$log4' using 1:4 t "El" w l
set nomultiplot
EOF
endif

rm -f $log1 $log2 $log3 $log4

exit

Front page   New Page list Search Recent changes   Help   RSS of recent changes