Hallo Leute!
Erstmal muss ich euch gestehen, dass ich absolut neu bin auf dem Gebiet Perl. Peinlich wäre jetzt nur wenn das von mir angehängte Script gar nicht Perl ist, dennoch bitte ich euch mir dies nicht übel zu nehmen.
Was ich benötige ist folgendes:
Dieses Script ließt bei mir mittels Digitemp alle meine Sensoren aus und übermittelt die Daten an eine MYSQL Datenbank.
Das funktioniert ausgezeichnet, nur hätte ich jetzt gerne den Zusatz, dass er mir die Dateien auch in eine Text Datei schreibt.
Den Zusatz brauche ich dafür, um die Dateien auf meinem Sat-Receiver abzurufen zu können.
Ich wäre euch wirklich sehr dankbar, wenn ihr mir bei der Erweiterung des Scripts auf die Sprünge helfen könntet.
Was leider noch hinzukommt ist das die Werte in Fahrenheit ausgelesen werden. Besteht vielleicht die Möglichkeit eine direkte Umrechnung durchzuführen, bevor die Daten in die Textdatei geschreiben werden?
In der MYSQL Datenbank benötige ich die Dateien jedoch in Fahrenheit
Mfg
Manuel
Erstmal muss ich euch gestehen, dass ich absolut neu bin auf dem Gebiet Perl. Peinlich wäre jetzt nur wenn das von mir angehängte Script gar nicht Perl ist, dennoch bitte ich euch mir dies nicht übel zu nehmen.
Was ich benötige ist folgendes:
Dieses Script ließt bei mir mittels Digitemp alle meine Sensoren aus und übermittelt die Daten an eine MYSQL Datenbank.
Das funktioniert ausgezeichnet, nur hätte ich jetzt gerne den Zusatz, dass er mir die Dateien auch in eine Text Datei schreibt.
Den Zusatz brauche ich dafür, um die Dateien auf meinem Sat-Receiver abzurufen zu können.
Ich wäre euch wirklich sehr dankbar, wenn ihr mir bei der Erweiterung des Scripts auf die Sprünge helfen könntet.
Code:
# The DigiTemp Configuration file to use
my $digitemp_rcfile = "/etc/digitemp.conf";
my $digitemp_binary = "/usr/bin/digitemp";
my $debug = 0;
my $var1 = shift;
if (defined($var1) && $var1 eq 'debug') {
$debug = 1;
print "Debug mode on\n";
}
# 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(/ /);
#Safety limits: erroneous data tends to be very high or very low
#This usually happens when the sensor is having trouble (water, bad connection)
if ($temperature < -80 || $temperature > 180) {
print "Erroneous data for $serialnumber: $temperature ... Skipping";
#continue;
} else {
$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";
}
}
$dbh->disconnect;
Was leider noch hinzukommt ist das die Werte in Fahrenheit ausgelesen werden. Besteht vielleicht die Möglichkeit eine direkte Umrechnung durchzuführen, bevor die Daten in die Textdatei geschreiben werden?
In der MYSQL Datenbank benötige ich die Dateien jedoch in Fahrenheit
Mfg
Manuel