#!/usr/bin/perl
use strict;
use DBI;
use Config::IniFiles;
my $platform_id = 3;
my ($m_date, $water_temp, $conductivity, $salinity, $pressure, $DO_percent, $DO_absolute, $battery_remaining);
my ($sensor_id, $m_type_id, $m_value);
my $cfg = new Config::IniFiles( -file => "./processBuoys.ini" );
my ($db_name, $db_user, $db_passwd, $dbh, $sql, $sth, @stored_record);
$db_name = $cfg->val('DB_WLS', 'db_name');
$db_user = $cfg->val('DB_WLS', 'db_user');
$db_passwd = $cfg->val('DB_WLS', 'db_passwd');
#establish database connection
$dbh = DBI->connect ( "dbi:Pg:dbname=$db_name", $db_user, $db_passwd);
if ( !defined $dbh ) {
die "Cannot connect to database!\n";
}
#date
$sensor_id = 26;
$m_type_id = 7;
$sql = qq{ SELECT m_date FROM multi_obs where m_type_id = $m_type_id and platform_id = $platform_id and sensor_id = $sensor_id order by m_date desc limit 1 };
$sth = $dbh->prepare( $sql );
$sth->execute();
#$rows_returned = $sth->rows;
#@stored_record = $sth->fetchrow_array;
@stored_record = $sth->fetchrow_array;
my $m_date = @stored_record[0];
#print $m_date."\n";
#DO_absolute
$sensor_id = 25;
$m_type_id = 6;
$sql = qq{ SELECT m_value FROM multi_obs where m_type_id = $m_type_id and platform_id = $platform_id and sensor_id = $sensor_id and m_date = '$m_date' };
$sth = $dbh->prepare( $sql );
$sth->execute();
@stored_record = $sth->fetchrow_array;
my $DO_absolute = @stored_record[0];
#DO_percent
$sensor_id = 24;
$m_type_id = 5;
$sql = qq{ SELECT m_value FROM multi_obs where m_type_id = $m_type_id and platform_id = $platform_id and sensor_id = $sensor_id and m_date = '$m_date' };
$sth = $dbh->prepare( $sql );
$sth->execute();
@stored_record = $sth->fetchrow_array;
my $DO_percent = @stored_record[0];
#water_temp
$sensor_id = 20;
$m_type_id = 1;
$sql = qq{ SELECT m_value FROM multi_obs where m_type_id = $m_type_id and platform_id = $platform_id and sensor_id = $sensor_id and m_date = '$m_date' };
$sth = $dbh->prepare( $sql );
$sth->execute();
@stored_record = $sth->fetchrow_array;
my $water_temp = sprintf("%.1f", @stored_record[0]*9/5+32);
#salinity
$sensor_id = 22;
$m_type_id = 3;
$sql = qq{ SELECT m_value FROM multi_obs where m_type_id = $m_type_id and platform_id = $platform_id and sensor_id = $sensor_id and m_date = '$m_date' };
$sth = $dbh->prepare( $sql );
$sth->execute();
@stored_record = $sth->fetchrow_array;
my $salinity = @stored_record[0];
#remaining_power
$sensor_id = 26;
$m_type_id = 7;
$sql = qq{ SELECT m_value FROM multi_obs where m_type_id = $m_type_id and platform_id = $platform_id and sensor_id = $sensor_id and m_date = '$m_date' };
$sth = $dbh->prepare( $sql );
$sth->execute();
@stored_record = $sth->fetchrow_array;
my $remaining_power = @stored_record[0];
$sth->finish;
$dbh->disconnect();
open (HTML_OUT, ">/var/www/html/longbay/dynamic/SpringDO.html");
my $m_date_webformat = get_local_time($m_date);
print HTML_OUT "Last update $m_date_webformat
";
print HTML_OUT "Dissolved Oxygen $DO_absolute mg/L
";
print HTML_OUT "Dissolved Oxygen(percent saturation) $DO_percent %
";
print HTML_OUT "Water Temperature $water_temp F
";
print HTML_OUT "Salinity $salinity ppt
";
print HTML_OUT "Battery Power Remaining(percent) $remaining_power %
";
print HTML_OUT "
";
close (HTML_OUT);
exit 0;
sub get_local_time
{
my $date = shift;
#print "date:".$date."\n";
my ($year, $month, $day, $hour, $minute, $second, $time_zone) = split(/[\/ :-]/,$date);
my $date_converted_1 = `date --date='$year-$month-$day $hour:$minute:$second +0000' +%s`;
my $date_converted_2 = `date -u -d '1970-01-01 $date_converted_1 seconds' +"%m/%d %r"`;
my $date_converted_3 = substr($date_converted_2,0,11).substr($date_converted_2,14,3);
#print "date_converted_3:".$date_converted_3."\n";
my $str_month = substr($date_converted_3,0,2);
$str_month =~ s/^0+//;
my $str_day = substr($date_converted_3,3,2);
$str_day =~ s/^0+//;
my $str_time = substr($date_converted_3,6,8);
$str_time =~ s/^0+//;
my $zone_display;
if ($time_zone = -5 ) {$zone_display = 'EST';} else {$zone_display = 'EDT';}
return $str_month."/".$str_day." ".$str_time." ".$zone_display;
}