Perl spezielle mysql Auswertung

Begonnen von sn0000py, 22 November 2019, 12:15:19

Vorheriges Thema - Nächstes Thema

sn0000py

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.

DS_Starter

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
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

sn0000py

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

DS_Starter

Du brauchst das aktuellste DbRep, habe ich erst kürzlich als separate Routine implementiert.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

sn0000py