#!/usr/bin/perl -w -T
use RRDs ;
my $file = "/var/rrd/cellar.rrd" ;
sub SummaryTable {
my $cols = (defined $_[0])?$_[0]:1 ;
my $days = $cols*11-1;
my $step = 3600 ;
my $end = int(RRDs::last($file)/$step)*$step ;
my ($st,$sp,$nm,$mn,$av,$mx) ;
my @tm = localtime($end) ;
my $h = $days*24+$tm[2] ;
($st,$sp,$nm,$mn) = RRDs::fetch( $file , "MIN", "-r", $step , "-e" , $end , "-s", "e-".$h."hours" ) ;
return unless ( $sp == $step ) ;
($st,$sp,$nm,$mx) = RRDs::fetch( $file , "MAX", "-r", $step , "-e" , $end , "-s", "e-".$h."hours" ) ;
return unless ( $sp == $step ) ;
($st,$sp,$nm,$av) = RRDs::fetch( $file , "AVERAGE", "-r", $step , "-e" , $end , "-s", "e-".$h."hours" ) ;
return unless ( $sp == $step ) ;
print "
" ;
print "" ;
for ( my $i = 0 ; $i < $h ; $i += 24 ) {
if ($i%264==0) {
print "
\n" if ($i!=0) ;
print "| Day | MaxTemp | Min Temp | Avg Humid | \n" ;
}
my $t = localtime($st) ;
$t =~ s/\d\d:\d\d:\d\d // ;
$st += $sp*24 ;
my $e = $i + 23 ;
$e = $h - 1 if ( $e >= $h ) ;
last if ( $e < $i ) ;
my $x = $mx->[$i][0] ;
map { $x = $_ if ( !defined($x) || (defined($_) && ($x<$_)) ) } map( $mx->[$_][0] , ($i..$e) ) ;
my $n = $mn->[$i][0] ;
map { $n = $_ if ( !defined($n) || (defined($_) && ($n>$_)) ) } map( $mn->[$_][0] , ($i..$e) ) ;
my $r = 0 ;
map { $r += $_*$step if (defined($_)) } map( $av->[$_][10] , ($i..$e) ) ;
print "" ;
print "| $t | " ;
print $x if defined($x) ;
print " | " ;
print $n if defined($n) ;
print " | " ;
printf '%.2f',$r if defined($r) ;
print " | \n" ;
}
print "
| " ;
}
my @Periods = (
"DAY" ,
"WEEK" ,
"MONTH" ,
"YEAR" ,
# "DECADE" ,
# "CENTURY" ,
) ;
my %Times = (
"DAY" => 1 ,
"WEEK" => 7 ,
"MONTH" => 31 ,
"YEAR" => 366,
"DECADE" => 3653 ,
"CENTURY" => 36525 ,
) ;
my %Columns = (
"DAY" => 1 ,
"WEEK" => 2 ,
"MONTH" => 3 ,
"YEAR" => 3,
"DECADE" => 3 ,
"CENTURY" => 3 ,
) ;
#my $q = $ENV{'QUERY_STRING'} ;
my $q = (exists $ENV{'QUERY_STRING'})? $ENV{'QUERY_STRING'} : $ARGV[0] ;
my $period = $Periods[0] ; # default
foreach my $k (@Periods) {
if ($q =~ /$k/ ) {
$period = $k ;
last ;
}
}
print "Content-type: text/html\n" ;
#print "Expires: ".gmtime(600+time())."\n"
#print "Cache-Control: max-age=600\n" ;
#print "Pragma: content=no-cache" ;
print "\n" ;
print "\n" ;
print "" ;
print "Cellar Temperature -- ".localtime(RRDs::last($file))."";
print "" ;
print "" ;
my $rrderr = RRDs::error ;
print "
" ;
print "\n" ;
print "
" ;
print RRDs::error."
" if $rrderr ;
print "
\n" ;
print "
\n" ;
SummaryTable ($Columns{$period}) ;
print "" ;
print "" ;