[Gelöst] DBLog - SELECT als Reading darstellen

Begonnen von thgorjup, 18 Mai 2019, 21:57:51

Vorheriges Thema - Nächstes Thema

thgorjup

Hallo,
ich möchte das Ergebis eines SELECT's aus meinem DBLog in einem Reading darstellen. Wie kann ich das realisieren?


select count(VALUE) from history where DEVICE like 'ESPEasy_WS_Regensensor' AND cast(VALUE as INTEGER) > 100 AND TIMESTAMP >= datetime('now','-1 day') order by TIMESTAMP;


Das Ergebnis ist die Anzahl der Treffer, welche ich später in einem DOIF auswerten möchte.

Danke schonmal!
Gruß
Thomas
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

DS_Starter

Mit einem DbRep-Device.
Den select mit sqlCmd ausführen. Das Ergebnis steht in einem Reading SqlResult und kann weiter verarbeitet werden.
Siehe auch https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Werte_mittels_Event_.C3.BCbetragen

VG
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

thgorjup

Hmm, hab ich nicht ganz verstanden, trotzdem Danke.
Da ich ein wenig Perl kann, habe ich es jetzt anders gelöst.

99_myUtils.pm

# RainCount (Regen-Zähler)
sub RainCount() {

    use strict;
    use DBI;

    my $dbh = DBI->connect(         
    "dbi:SQLite:dbname=/var/log/fhem/fhem.db",
    "",                         
    "",                         
    { RaiseError => 1 },         
    ) or die $DBI::errstr;

    my $sth = $dbh->prepare("select count(VALUE) from history where DEVICE like 'ESPEasy_WS_Regensensor' AND cast(VALUE as INTEGER) > 100 AND TIMESTAMP >= datetime('now','-1 day') order by TIMESTAMP");
    $sth->execute();

    my $row = $sth->fetchrow_array();
    return $row;

}



UserReading:

attr ESPEasy_WS_Regensensor userReadings raincount {RainCount()}


Jetzt habe ich das Ergebnis im UserReading raincount stehen.


FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

DS_Starter

#3
Ja, allerdings wird es dein Fhem für die Zeit der Ausführung blockieren oder ganz lahmlegen wenn die Db nicht reagiert.
Und die ist generell keine gute Idee.
Nur so als Hinweis.
Definiere die einfach ein DbRep device und verwende sqlCmd wie in der commandref beschrieben.
Das ist wirklich nicht schwer.

Lg
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