#!/usr/bin/perl # # Display ARDEC 5 min data # # $Id: $ # use strict; use POSIX; use PGPLOT; use CGI qw(:cgi-lib); use DBI; use Date::Calc qw(:all); use CGI::Carp qw(fatalsToBrowser); require "coag_common.pl"; require "common_html.pl"; my $DATADIR="/home/ardec/data"; my $DATAFILE = "$DATADIR/ftc035min.dat"; my @five_min_params = qw(volt tmean rh vp sr ws wind_vec wind_std pp st5 st15 gust gusttm gustdir etgage); my @display = qw(tmean rh dp vp sr ws wind_vec pp st5 st15 gust gusttm gustdir volt); my $id = 'ftc03'; my @station_list = (); my %station_info = (); my %name; my %mult; my %offset; my %lower; my %upper; my %format; my @params = qw (tmax tmin pp etr_asce); rd_param_info('5min', \%name, \%mult, \%offset, \%lower, \%upper, \%format); rd_station_info(\%station_info, \@station_list); my %in = (); my $host = `hostname --fqdn`; chomp $host; &ReadParse(\%in); plot() if $in{action} eq 'plot'; simple() if $in{action} eq 'simple'; table() if $in{action} eq ''; exit(); # Subroutines sub simple { my $dbh = DBI->connect("DBI:mysql:database=Coag;host=localhost", "coag_admin","in2ccdbs", { RaiseError => 1}); my $query = "SELECT datetime,"; $query .= join ',', @five_min_params; $query .= " FROM ardec_5min ORDER BY datetime DESC LIMIT 25"; my $sth = $dbh->prepare($query); $sth->execute; print "Content-type: text/plain\n\n"; print " Date Time "; foreach my $param (@display) { my $label = $param; $label = 'wd' if $param eq 'wind_vec'; $label = 'gtime' if $param eq 'gusttm'; $label = 'gdir' if $param eq 'gustdir'; printf "%6s", $label; } print "\n"; while (my @row = $sth->fetchrow_array()) { my %data = (); my $datetime = shift(@row); $datetime =~ s/\:00$//; my ($date, $time) = split ' ', $datetime; foreach my $param (@five_min_params) { my $val = shift(@row); $data{$param} = $val; } $data{dp} = dewpt($data{tmean}, $data{rh}); my $gusthr = int($data{gusttm}/60); my $gustmn = $data{gusttm} % 60; $data{gusttm} = sprintf "%02d:%02d", $gusthr, $gustmn; print "$date $time"; foreach my $param (@display) { $data{$param} = $data{$param} * $mult{$param} + $offset{$param} unless $param =~ m/gusttm/; my $val = sprintf "$format{$param}", $data{$param}; print $val; } print "\n"; } } sub table { header("ARDEC Weather Station"); my ($name, $loc, $lat, $lon, $elev, $windht, $fmt, $active) = split (":", $station_info{$id}); print "
Station:$name |
---|
Location:$loc |
Elevation:$elev |
Longitude:$lon |
Latitude:$lat |
Date | \n"; print "Time | \n"; foreach my $param (@display) { print "$name{$param} | \n"; } print "|||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MST | " . "°F | % | " . "°F | " . "mb | ly/min | " . "mph | ° | " . "in. | °F | " . "°F | mph | " . "MST | ° | " . "volts | \n"; while (my @row = $sth->fetchrow_array()) { my %data = (); my $datetime = shift(@row); $datetime =~ s/\:00$//; my ($date, $time) = split ' ', $datetime; foreach my $param (@five_min_params) { my $val = shift(@row); $data{$param} = $val; } $data{dp} = dewpt($data{tmean}, $data{rh}); my $gusthr = int($data{gusttm}/60); my $gustmn = $data{gusttm} % 60; $data{gusttm} = sprintf "%02d:%02d", $gusthr, $gustmn; printf "|
$date | $time | \n"; foreach my $param (@display) { $data{$param} = $data{$param} * $mult{$param} + $offset{$param} unless $param =~ m/gusttm/; my $val = sprintf "$format{$param}", $data{$param}; print "$val | \n"; } print "