#!/usr/bin/perl -w # # strom_edv.pl: liest den aktuellen Verbrauchswert aus de Datenbank und gibt diesen cacti-tauglich in der # Einheit Watt aus. # # (c) Django 2009 - email: michael@nausch.org # # Ausgabe: direkt auf der Konsole # # Eingabe: Tabelle current aus MySQL-Datenbank fhem # # Returncodes: 0 = Alles OK # 1 = Fehler bei der MySQL-Verbindung # 2 = Fehler beim Lesen aus der MySQL-DB # # Version: # 0.01 12.01.09: Erste Version # Todo : nix ;) ################################################################################################################# use strict; use DBI; use DBD::mysql; use IO::File; my ($query,$dbquery,$sthm,$sthd,$sqlstate,$sql,@row,$sqltodo,%row1,$line,$insql,$val,$dosql,$sqlstated); ### MySQL Setup ### my $DBuser="fhemuser"; # Username des MySQL-Clients my $DBpass="Gas_und_Stromzaehler"; # Passwort des MySQL-Clients my $dbhm=DBI->connect("dbi:mysql:database=fhem;host=localhost;port=3306","$DBuser","$DBpass", { PrintError => 1, } ); unless ( $dbhm ){ print "Fehler bei der Verbindung zu MySQL\n"; exit("1"); } $sql="SELECT value *1000 FROM current WHERE reading = 'power_kW'"; #sql statement ausführen $sthd=$dbhm->prepare($sql); # SQL-Statement zusammensetzen/vorbereiten $sthd->execute(); # SQL-Statement ausführen #rückgabestatus der sqlabfrage überprüfen. wenn fehler dann beenden des programms if ($sqlstated) { print "Fehler beim Lesen aus der MySQL Tabelle fhem:current\nQUERY: $sql\nSTATE: $sqlstated"; exit("2"); }; ### Rückgabewerte der SQL-Abfrage bearbeiten und ausgeben ### $insql=undef; while (@row=$sthd->fetchrow_array()) { $insql=undef; foreach $line (@row) { $val=''; $val=$line if ($line); $insql.="$val" } } print "power:$insql\n";