Hallo ich suche eine Möglichkeit, bzw Beispiele für den Zugriff von perl auf die mysql Datenbank.
Grund: ich brauche eine spezielle Auswertung - und zwar habe ich zwei Werte
Mischer und Energie
Mischer ist ein Wert zwischen 0 und 100, Energie ist der stetig steigende Wert von 0 bis.
Ich muss nun jeden Bereich finden, wo Mischer auf 0 geht, dann muss ich 15 minuten warten (also im log 15 minuten), dann den Energie wert merken.
Danach den Zeitpunkt suchen wo der Mischer wieder auf > 0 geht, und mir dann die Differenz des Energiewertes rausschreiben.
Ich vermute mit dem DBRep schaffe ich sowas nicht, daher würde ich das ganz einfach in nem simplen programm auslagern, wo ich das rehcne, dazu bräuchte ich aber ein zwei einfache Beispiele für den Zugriff auf die DB.
Hallo sn0000py,
ich habe jetzt noch nicht allzu viel Zeit in Überlegungen zu deiner Aufgabenstellung investiert, aber
ich glaube die Vorgehensweise in diesem Wiki-Artikel https://wiki.fhem.de/wiki/Summe_aller_Einschaltzeiten_eines_Ger%C3%A4tes könnte dir helfen.
Ich würde versuchen es mit Hilfe von DbRep zu erledigen, damit du dir durch die Datenbankoperationen keine Hänger bzw. Freezes ins System holst.
Ansonsten kannst du dir die Connect-Routine aus DbRep (sofern mind. ein Device definiert) in dein Programm einbauen, was z.B. so aussehen könnte:
($err,$dbh) = DbRep_dbConnect($name,0); # $name -> DbRep-Device welches mit dem relevanten DbLog verbunden ist
if ($err) {
# mache Fehlerbehandlung
return ;
}
eval {$sth = $dbh->prepare($sql);
$r = $sth->execute();
};
if ($@) {
# mache Fehlerbehandlung
return ;
}
# ansonsten Auswertung über verschiedene $sth-Mothoden, z.B.:
while (my @line = $sth->fetchrow_array()) {
Log3 ($name, 4, "DbRep $name - SQL result: @line");
my $row = join("|", @line);
push(@rows, $row);
# Anzahl der Datensätze
$nrows++;
}
Hoffe es hilft dir etwas.
Grüße,
Heiko
hallo wollte da gerade mal testen, aber bei mir kennt er die DbRep_dbConnect funktion nicht?
Undefined subroutine &main::DbRep_dbConnect called at ./FHEM/99_myUtils.pm line 912.
Habe diese funktion auch in keiner anderen .pm Datei gefunden
Du brauchst das aktuellste DbRep, habe ich erst kürzlich als separate Routine implementiert.
Danke hat funktioniert :D