DbLog UserCommand zum Loeschen von Falschmessung

Begonnen von Sailor, 20 November 2021, 12:44:21

Vorheriges Thema - Nächstes Thema

Sailor

Ein herzerfrischendes "Moin" vom achtern Diek vorweg!

Ich habe  ein wiederholtes Problem dessen Antwort ich hier im Forum trotz Suchfunktion nicht mehr wiederfinde.
Ich bin mir sicher ich hätte diese Frage nach einem entsprechenden SQL - Befehl  schon mal gestellt und auch eine Antwort bekommen.
Leider bin ich in SQL eine absolute Niete.

Das Device "CH_ElectricityCalculator" enthält ein Reading mit dem Namen "CH_ElectricityCounter_IEC_01_energyCalc_PowerCurrent" welches fleißig die Werte in die Datenbank "myDbLog" schreibt.
Nur manchmal kommt es aufgrund von Aussetzern und Offset-Justierungen zu seltsamen Ausreißern wonach ich zum Teil Leistungswerte von -300000W habe und manchmal auch +150000W.
Diese versauen mir die graphische Darstellung im Chart.

Frage:
Wie lautet der userCommand wenn ich folgende Werte aus der Datenbank löschen will:
a) Alle Werte kleiner 0W
b) Alle Werte größer 27000W

Danke

Gruß
    Sailor
******************************
Man wird immer besser...

DS_Starter

#1
Moin,

gleich vorweg ... benutze besser DbRep für die Datenbankpflege. Die Funktion in DbLog ist nur noch "historisch" und ist spartanisch implementiert.

Die SQL wäre:
delete from history where device="CH_ElectricityCalculator" and reading="CH_ElectricityCounter_IEC_01_energyCalc_PowerCurrent" and (value > 27000 or value < 0);

Mit einem select vorab kannst du dir erstmal einen Überblick verschaffen was gelöscht werden würde:
select value from history where device="CH_ElectricityCalculator" and reading="CH_ElectricityCounter_IEC_01_energyCalc_PowerCurrent" and (value > 27000 or value < 0);

Im DbRep nutzt du dafür den Setter "sqlCmd".

Im DbLog kannst du aber grundsätzlich verhindern dass solche Ausreißer geloggt werden. Das Attr valueFn bietet dir diese Möglichkeit:

{
  if ($DEVICE eq "CH_ElectricityCalculator" && $READING eq "CH_ElectricityCounter_IEC_01_energyCalc_PowerCurrent" && ($VALUE > 27000 || $VALUE < 0 )) {
    $IGNORE=1;
  }
}



Den Code kann man vermutlich straffen. Soll nur das Prinzip verdeutlichen.

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

Sailor

Moin Heiko

Zitat von: DS_Starter am 20 November 2021, 13:22:57
gleich vorweg ... benutze besser DbRep für die Datenbankpflege. Die Funktion in DbLog ist nur noch "historisch" und ist spartanisch implementiert.
OK


Zitat von: DS_Starter am 20 November 2021, 13:22:57
Mit einem select vorab kannst du dir erstmal einen Überblick verschaffen was gelöscht werden würde:
select value from history where device="CH_ElectricityCalculator" and reading="CH_ElectricityCounter_IEC_01_energyCalc_PowerCurrent" and (value > 27000 or value < 0);
Auweia, plötzlich 13000 Readings!  :o


Zitat von: DS_Starter am 20 November 2021, 13:22:57
Die SQL wäre:
delete from history where device="CH_ElectricityCalculator" and reading="CH_ElectricityCounter_IEC_01_energyCalc_PowerCurrent" and (value > 27000 or value < 0);
Im DbRep nutzt du dafür den Setter "sqlCmd".
Hat geklappt, Danke!


Zitat von: DS_Starter am 20 November 2021, 13:22:57
Im DbLog kannst du aber grundsätzlich vernindern dass solche Ausreißer geloggt werden. Das Attr valueFn bietet dir diese Möglichkeit:
{
  if ($DEVICE eq "CH_ElectricityCalculator" && $READING eq "CH_ElectricityCounter_IEC_01_energyCalc_PowerCurrent" && ($VALUE > 20000 || $VALUE < 0 ) {
    $IGNORE=1;
  }
}

Habe ich eingerichtet, aber mit 27000 und einer ")" - Klammer mehr.

DANKE!

Gruß
    Sailor
******************************
Man wird immer besser...

DS_Starter

Moin,

habe es oben korrigiert falls mal jemand liest und auch verwenden will.

LG,
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