src/digitemp/perl/digitemp_mysql.pl
#!/usr/bin/perl -W
# DigiTemp MySQL logging script
# Copyright 2002 by Brian C. Lane <bcl@brianlane.com>
# All Rights Reserved
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
#
# -------------------------[ HISTORY ]-------------------------------------
# 01/08/2004 The storage definition should have been decimal(6,2) instead
# bcl of decimal(3,2).
# See http://www.mysql.com/doc/en/Numeric_types.html for a
# good description of how decimal(a,b) works.
#
# 08/18/2002 Putting together this MySQL logging script for the new
# bcl release of DigiTemp.
#
# -------------------------------------------------------------------------
# CREATE table digitemp (
# dtKey int(11) NOT NULL auto_increment,
# time timestamp NOT NULL,
# SerialNumber varchar(17) NOT NULL,
# Fahrenheit decimal(6,2) NOT NULL,
# PRIMARY KEY (dtKey),
# KEY serial_key (SerialNumber),
# KEY time_key (time)
# );
#
# GRANT SELECT,INSERT ON digitemp.* TO dt_logger@localhost
# IDENTIFIED BY 'TopSekRet';
#
# -------------------------------------------------------------------------
use DBI;
# Database info
my $db_name = "digitemp";
my $db_user = "dt_logger";
my $db_pass = "TopSekRet";
# The DigiTemp Configuration file to use
my $digitemp_rcfile = "/home/brian/digitemp.cfg";
my $digitemp_binary = "/home/brian/bin/digitemp";
my $debug = 0;
# Connect to the database
my $dbh = DBI->connect("dbi:mysql:$db_name","$db_user","$db_pass")
or die "I cannot connect to dbi:mysql:$db_name as $db_user - $DBI::errstr\n";
# Gather information from DigiTemp
# Read the output from digitemp
# Output in form SerialNumber<SPACE>Temperature in Fahrenheit
open( DIGITEMP, "$digitemp_binary -q -a -o\"%R %.2F\" -c $digitemp_rcfile |" );
while( <DIGITEMP> )
{
print "$_\n" if($debug);
chomp;
($serialnumber,$temperature) = split(/ /);
my $sql="INSERT INTO digitemp SET SerialNumber='$serialnumber',Fahrenheit=$temperature";
print "SQL: $sql\n" if($debug);
$dbh->do($sql) or die "Can't execute statement $sql because: $DBI::errstr";
}
close( DIGITEMP );
$dbh->disconnect;