DbLogInclude: Wie mehrere Readings loggen wenn ein Reading matched

Begonnen von stefanru, 26 November 2019, 21:01:08

Vorheriges Thema - Nächstes Thema

DS_Starter

Hi Stefan,

naja, das entspricht dem generellen Vorgehen bei den Zeitabgrenzungen im Modul. Wenn du mit timeDiffToNow arbeitest bzw. kein timestamp_end gesetzt ist, wird immer die Zeit des Kommandostarts als Endezeit genommen. Die Zeitscheiben ergeben sich dann entsprechend.

Du könntest also beispielsweise timestamp_end auf current_year_end setzen. Dann würdest du so etwas bekommen:


2020.01.24 22:10:06.478 4: DbRep Rep.LogDB1 - data prepared to db write:
2020.01.24 22:10:06.478 4: DbRep Rep.LogDB1 - 2020-01-01 00:00:01|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|108781989.9649|
2020.01.24 22:10:06.662 4: DbRep Rep.LogDB1 - 2020-01-05 23:59:59|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|108781989.9649|
2020.01.24 22:10:06.664 4: DbRep Rep.LogDB1 - 2020-01-06 00:00:01|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|153251990.8751|
2020.01.24 22:10:06.666 4: DbRep Rep.LogDB1 - 2020-01-12 23:59:59|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|153251990.8751|
2020.01.24 22:10:06.668 4: DbRep Rep.LogDB1 - 2020-01-13 00:00:01|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|153643135.9409|
2020.01.24 22:10:06.669 4: DbRep Rep.LogDB1 - 2020-01-19 23:59:59|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|153643135.9409|
2020.01.24 22:10:06.671 4: DbRep Rep.LogDB1 - 2020-01-20 00:00:01|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|108673132.8991|
2020.01.24 22:10:06.673 4: DbRep Rep.LogDB1 - 2020-01-26 23:59:59|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|108673132.8991|
2020.01.24 22:10:06.675 4: DbRep Rep.LogDB1 - 2020-01-27 00:00:01|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|0.0000|
2020.01.24 22:10:06.676 4: DbRep Rep.LogDB1 - 2020-02-02 23:59:59|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|0.0000|
2020.01.24 22:10:06.678 4: DbRep Rep.LogDB1 - 2020-02-03 00:00:01|SMA_Energymeter|SMAEM|calculated|sum_week_Einspeisung_Wirkleistung_Zaehler|0.0000|
....


Nachteilig ist, dass es dann für die zukünftigen Wochen, die es noch nicht gibt 0 in die DB geschrieben wird.
Vielleicht kann man das durch eine geschickte Wahl der Zeiteingrenzung oder eine dynamische Änderung in deinen at-Scripten eine Optimierung finden.
Naja, man kann nicht alles haben  ;)

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

stefanru

#61
Hi Heiko,

das kling aber gut.
Also timestamp_end nur weit genug in die Zukunft setzen?
Finde ich praktikabel. Eigentlich müsste ich es nur immer auf Sonntag setzen im at.
Da bekomme ich sicher was hin.

P.S.: Current_Week_End kling perfekt für mich. Ich probiers gleich mal.
P.P.S: Perfekt! Es klappt!

Danke,
Stefan

DS_Starter

Ah ja ... Current_Week_End. Das ist mir nicht eingefallen  ???
Super Stefan .... geht doch (fast) alles  :D

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

stefanru

Hi Heiko,

soweit läuft alles bestens.

Eine Sache hätte ich noch, wenn die SUM laufen bekomme ich immer diese Meldung:
2020.02.08 01:28:07 1: PERL WARNING: Argument "" isn't numeric in sprintf at ./FHEM/93_DbRep.pm line 10708.
2020.02.08 01:28:07 3: DbRep logdbRepArbeitszeitWeek - number of lines updated in "logdb": 12
2020.02.08 01:28:07 3: DbRep logdbRepArbeitszeitWeek - number of lines inserted into "logdb": 0
2020.02.08 01:28:07 3: DbRep logdbRepArbeitszeit - number of lines updated in "logdb": 78
2020.02.08 01:28:07 3: DbRep logdbRepArbeitszeit - number of lines inserted into "logdb": 0

Ich habe schon bei den Werten gesucht die ich summiere  es ist aber kein nich Zahlenwert dabei?
Irgendeine Idee?

Kann ich etwas in Zeile 10708 einbauen um zu sehen worum es sich handelt?

Danke und Gruß,
Stefan

DS_Starter

Hallo Stefan,

schön zu lesen.  :)

Habe es mir angeschaut. Kann m.M. nur dann auftreten wenn in einem ausgewerteten Zeitraum keinerlei MAX auftriit, also ein leerer String zurückgeliefert wird. Würde auch zur Meldung passen.

Ich habe es (hoffentlich) gefixt. Teste mal bitte die Version aus meinem contrib.

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

stefanru

Reload 93_DbRep.pm bringt:

syntax error at ./FHEM/93_DbRep.pm line 61, near ""08.02.2020  fix PERL WARNING: Argument "" isn't numeric in sprintf at ./FHEM/93_DbRep.pm line 10708 ""
BEGIN not safe after errors--compilation aborted at ./FHEM/93_DbRep.pm line 1709.


Gruß,
Stefan

DS_Starter

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

stefanru

Jetzt hats geklappt.
Ich schaue ob der Fehler weg ist und melde mich wieder.

Danke!

stefanru

Keine Meldungen mehr im Log.
Alles Super.

Dank dir!
Gruß,
Stefan

DS_Starter

Danke Stefan ! 
Werde die Version morgen einchecken ....

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

DS_Starter

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

stefanru

Hallo Heiko,

werden bei SUM keine 0 Werte mehr in die DB geschrieben?
Ich bekomme für eine Woche das hier:

2020-02-24__geofancy__lastPosDur_rr_Stefan__SUM__2020-02-24  29429.0000
2020-02-25__geofancy__lastPosDur_rr_Stefan__SUM__2020-02-25  33811.0000
2020-02-26__geofancy__lastPosDur_rr_Stefan__SUM__2020-02-26  35323.0000
2020-02-27__geofancy__lastPosDur_rr_Stefan__SUM__2020-02-27  30600.0000
2020-02-28__geofancy__lastPosDur_rr_Stefan__SUM__2020-02-28  31904.0000
2020-02-29__geofancy__lastPosDur_rr_Stefan__SUM__2020-02-29  -
2020-03-01__geofancy__lastPosDur_rr_Stefan__SUM__2020-03-01  -


Und für die Tage mit "-" werden keine Werte in die DB geschrieben.
Das führt bei mir dann dazu, dass der Wert des letzten Tages mit einem Wert, hier 2020-02-28, über die nächsten 2 Tage im Plot geht.

Ich weiß das ist wieder eine Besonderheit meiner Zeitaufzeichnung.
Keine 0 Werte schreiben ist wohl schon richtig.

Kann ich mit einer User funktion wenn "-" ausgerechnet wird einen "0" in die DB schreiben?

Gruß,
Stefan

DS_Starter

Hi Stefan,

Zitatwerden bei SUM keine 0 Werte mehr in die DB geschrieben?
Also geändert ist nichts. 0 wird geschrieben, wenn die Summe = 0 ist.
Für Tage mit "-" gibt es offenbar keine Werte bzw. kein Ergebnis.

ZitatKann ich mit einer User funktion wenn "-" ausgerechnet wird einen "0" in die DB schreiben?
Nicht direkt wenn du "sumValue writeToDB" ausführst.
Aber es gibt ein paar Workarounds die mir adhoc einfallen ...

* changeValue im DbRep drüber laufen lassen -> set <name> changeValue "-","0" , du must natürlich darauf achten in dem benutzten DbRep das Device und Reading richtig einzustellen damit nur die "-" umgesetzt werden die umgesetzt werden sollen

* im SVG-Editor mit Regex arbeiten und das "-" in "0" umwandeln -> $val=~s/-/0/ 

Habe die Vorschläge jetzt nicht ausgetestet, aber sollte so klappen. Gibt bestimmt noch mehr Möglichkeiten.

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

stefanru

Hi Heiko,

danke für deine Antwort.

Völlig Richtig, an den Tagen bei denen "-" erzeugt wird gibt es keine Werte zum Summieren.
Mein Problem ist dass sumValue display die "-" anzeigt aber sumValue writeToDB nichts in die DB schreibt.
In der DB landet also bei "-" garnichts. Ich bräuchte für die tage aber ein "0" Eintrag.
Somit gehen denke ich die beiden Lösungsvorschläge weiter nicht.

Ich habe auch versucht einen 0 Wert einzufügen den der SUM dann hätte auswerten können.
Es kam aber weiter "-".
Erst wenn ein Wert > 0 da war hat er auch den Wert in die DB summiert.

Das ganze ist irgendwie seltsam, da ich am Anfang als wir das ganze hier besprochen und getestet haben durchaus 0 Werte hatte.

Wenn dir auf anhieb nichts einfällt schaue ich mir das näher an und versuche mal herauszufinden was da genau passiert.

Gruß und Danke,
Stefan



DS_Starter

Da fällt mir tatsächlich erstmal nichts weiter ein. Auf jeden Fall hat sich seit unserer initialen Einrichtung bzw. dem letten Fix nichts im Modul geändert.

ZitatMein Problem ist dass sumValue display die "-" anzeigt aber sumValue writeToDB nichts in die DB schreibt.
Ja, die Anzeige soll dem User verdeutlichen, dass eben nichts selektiert werden konnte. In der DB müssen in dem betrachteten Zeitraum irgendwelche Werte vorhanden sein damit DbRep etwas auswerten kann.
Wenn 0 in der DB steht, müssen aber Ergebnisse kommen !

Guck dir mal mit verbose 4/5 an was genau selektiert wird.
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