Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)

Begonnen von DS_Starter, 19 Mai 2016, 22:52:13

Vorheriges Thema - Nächstes Thema

DS_Starter

Ja, der behandelt die history.
Sehr komisch.
Setze doch mal verbose 4 bzw. 5 und schaue mal ins logfile.
Vllt. kommt dann der Aha-Effekt.
ESXi@NUC+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

Martin, ich habe ein " hinten vergessen:


set <dbrep> changeValue "%<< addLog","{$VALUE = (split("<<",$VALUE))[0]}"
ESXi@NUC+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

Ich habe es gerade erfolgeich getestet mit :

"%addlog%","{$VALUE = (split("<<",$VALUE))[0]}"


Setze dir hinter addlog noch ein "%". Möglicherweise folgt dort noch ein nicht sichtbares Zeichen.

Grüße
Heiko
ESXi@NUC+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

knxler

Hallo Heiko,

ich habe "%addlog%","{$VALUE = (split("<<",$VALUE))[0]}" und "%addlog","{$VALUE = (split("<<",$VALUE))[0]}" probiert.
Beides ohne Erfolg.
Hier mein verbous = 5 logging:

2018.03.07 20:30:31.137 1: DBReport done
2018.03.07 20:30:31.267 4: DbRep DBReport -> BlockingCall fetchrows_ParseDone finished
2018.03.07 20:30:31.538 1: set_Heizungs_val noting to do at_NiveauHK1: set_val: 7 = read_val: 7
2018.03.07 20:30:38.181 1: HMUARTLGW HMLAN1:keepAlive KeepAlive sent 4.991s too late, this might cause a disconnect!
2018.03.07 20:30:38.289 1: 192.168.0.203:2001 disconnected, waiting to reappear (HMLAN1:keepAlive)
2018.03.07 20:30:38.305 1: 192.168.0.203:2000 disconnected, waiting to reappear (HMLAN1)
2018.03.07 20:30:38.510 1: 192.168.0.203:2000 reappeared (HMLAN1)
2018.03.07 20:31:32.380 1: RCV L:0E N:21 F:82 CMD:02 SRC:Wohnzimmer_Fensterbereich_Ventil DST:Wohnzimmer_Tuer_Thermometer 0101000049 (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0x00 DOWN:0x00 LOWBAT:0x00 RSSI:0x49) (,WAKEMEUP,RPTEN)
2018.03.07 20:32:09.427 4: DbRep DBReport - -------- New selection ---------
2018.03.07 20:32:09.428 4: DbRep DBReport - Command: changeValue
2018.03.07 20:32:09.431 5: DbRep DBReport - Timestamp begin epocheseconds: 1517526000
2018.03.07 20:32:09.431 4: DbRep DBReport - Timestamp begin human readable: 2018-02-02 00:00:00
2018.03.07 20:32:09.431 5: DbRep DBReport - Timestamp end epocheseconds: 1517612399
2018.03.07 20:32:09.432 4: DbRep DBReport - Timestamp end human readable: 2018-02-02 23:59:59
2018.03.07 20:32:09.432 5: DbRep DBReport - weekday of start for selection: Fr  ->  wdadd: 259200
2018.03.07 20:32:09.433 4: DbRep DBReport - Aggregation: no
2018.03.07 20:32:09.472 4: DbRep DBReport -> Start BlockingCall change_Push
2018.03.07 20:32:09.479 5: DbRep DBReport -> Change old value "%addlog%" to new value "{$VALUE = (split(<<,$VALUE))[0]}" in database DBLogData
2018.03.07 20:32:09.480 5: DbRep DBReport - IsTimeSet: 1, IsAggrSet: 0
2018.03.07 20:32:09.494 5: DbRep DBReport - Device specifications use for select: %
2018.03.07 20:32:09.495 5: DbRep DBReport - Reading specification use for select: Temp_Aussen_Tiefpass
2018.03.07 20:32:09.495 4: DbRep DBReport - SQL execute: UPDATE history SET TIMESTAMP=TIMESTAMP,VALUE='{$VALUE = (split(<<,$VALUE))[0]}' WHERE VALUE='%addlog%' AND READING = 'Temp_Aussen_Tiefpass' AND TIMESTAMP >= '2018-02-02 00:00:00' AND TIMESTAMP <= '2018-02-02 23:59:59' ;
2018.03.07 20:32:10.102 4: DbRep DBReport -> BlockingCall change_Push finished
2018.03.07 20:32:10.110 4: DbRep DBReport -> Start BlockingCall change_Done
2018.03.07 20:32:10.161 1: DBReport done
2018.03.07 20:32:10.171 4: DbRep DBReport -> BlockingCall change_Done finished

Gruß Martin

DS_Starter

#679
Nimm mal bitte die neuste Version aus dem ersten Beitrag.

Bei mir sieht es nämlich etwas anders aus:


2018.03.07 20:04:54.357 4: DbRep Rep.LogDB1 - -------- New selection ---------
2018.03.07 20:04:54.359 4: DbRep Rep.LogDB1 - Command: changeValue
2018.03.07 20:04:54.364 4: DbRep Rep.LogDB1 - timeDiffToNow - day: 30, hour: , min: , sec: 
2018.03.07 20:04:54.365 4: DbRep Rep.LogDB1 - Time difference to current time for calculating Timestamp begin: 2592001 sec
2018.03.07 20:04:54.366 4: DbRep Rep.LogDB1 - Timestamp begin human readable: 2018-02-05 20:04:53
2018.03.07 20:04:54.367 4: DbRep Rep.LogDB1 - Timestamp end human readable: 2018-03-07 20:04:54
2018.03.07 20:04:54.371 4: DbRep Rep.LogDB1 - Aggregation: day
2018.03.07 20:04:54.386 4: DbRep Rep.LogDB1 - SQL execute: SELECT DEVICE,READING,TIMESTAMP,VALUE,UNIT FROM history where DEVICE = 'USV' AND TIMESTAMP >= '2018-02-05 20:04:53' AND TIMESTAMP < '2018-02-06' AND VALUE LIKE '%addlog%';


Wichtig ist das like in "AND VALUE LIKE '%addlog%';"  Bei dir wird "=" verwendet.

Edit: Ich hatte die Funktion mit Version 7.13.0 abgeändert. Weiß nicht welche V du einsetzt.
ESXi@NUC+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

knxler

Hallo Heiko,

leider ohne Erfolg.

Hier mein Logging
2018.03.07 21:07:29.716 4: DbRep DBReport - -------- New selection ---------
2018.03.07 21:07:29.717 4: DbRep DBReport - Command: changeValue
2018.03.07 21:07:29.719 5: DbRep DBReport - Timestamp begin epocheseconds: 1517526000
2018.03.07 21:07:29.719 4: DbRep DBReport - Timestamp begin human readable: 2018-02-02 00:00:00
2018.03.07 21:07:29.720 5: DbRep DBReport - Timestamp end epocheseconds: 1517612399
2018.03.07 21:07:29.720 4: DbRep DBReport - Timestamp end human readable: 2018-02-02 23:59:59
2018.03.07 21:07:29.721 5: DbRep DBReport - weekday of start for selection: Fr  ->  wdadd: 259200
2018.03.07 21:07:29.721 4: DbRep DBReport - Aggregation: no
2018.03.07 21:07:29.863 4: DbRep DBReport -> Start BlockingCall change_Push
2018.03.07 21:07:29.869 5: DbRep DBReport -> Change old value "%addlog%" to new value "{$VALUE = (split(<<,$VALUE))[0]}" in database DBLogData
2018.03.07 21:07:29.870 5: DbRep DBReport - IsTimeSet: 1, IsAggrSet: 0
2018.03.07 21:07:29.883 5: DbRep DBReport - Device specifications use for select: %
2018.03.07 21:07:29.884 5: DbRep DBReport - Reading specification use for select: Temp_Aussen_Tiefpass
2018.03.07 21:07:29.884 4: DbRep DBReport - SQL execute: UPDATE history SET TIMESTAMP=TIMESTAMP,VALUE='{$VALUE = (split(<<,$VALUE))[0]}' WHERE VALUE='%addlog%' AND READING = 'Temp_Aussen_Tiefpass' AND TIMESTAMP >= '2018-02-02 00:00:00' AND TIMESTAMP <= '2018-02-02 23:59:59' ;
2018.03.07 21:07:30.484 4: DbRep DBReport -> BlockingCall change_Push finished
2018.03.07 21:07:30.492 4: DbRep DBReport -> Start BlockingCall change_Done
2018.03.07 21:07:30.544 1: DBReport done
2018.03.07 21:07:30.555 4: DbRep DBReport -> BlockingCall change_Done finished

DS_Starter

Irgendwas stimmt noch nicht. In der aktuellsten Version gibt es die Ausgaben:


4: DbRep DBReport -> Start BlockingCall change_Push


nicht mehr.
Hast du das Modul nach dem Download umbenannt nacht 93_DbRep und fhem neu gestartet ?
ESXi@NUC+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

knxler

Hallo Heiko,

das wars. Ich habe nur ein Reload_CFG gemacht.
Danke!!

Noch einen schönen Abend.

Gruß Martin

DS_Starter

Prima .... wünsche ich dir auch.
Die V aus dem 1. Beitrag checke ich heute auch noch ein. Ist dann morgen im normalen Update.

LG,
Heiko
ESXi@NUC+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

Pyromane

Zitat von: DS_Starter am 04 März 2018, 20:54:15
Hallo Pyro, @all,

mir ist eine Idee gekommen deinen Vorschlag umzusetzen.

Hallo Heiko,

irgendwie habe ich die Antwort übersehen und habe das Update erst heute gesehen.

Funktioniert wie gewünscht:
MINTS      2017-11-19 22:44:35

Herzlichen Dank!

Wünsche ein schönes Wochenende!
Gruß
Pyro

Pyromane

Hallo Heiko,

heute habe ich das Update auf meinem produktiv System eingespielt und erhalte nach einem
get MyDbRep MinTimestamp
folgende Einträge im Log (hab die Abfrage mehrfach ausgeführt)
2018.03.11 17:03:26 1: Timeout for DbRep_getMinTs reached, terminated process 3673
2018.03.11 17:03:26 1: DbRep MyDbRep -> BlockingCall DbRep_getMinTs pid:3675 Timeout: process terminated
2018.03.11 17:03:31 1: Timeout for DbRep_getMinTs reached, terminated process 3675
2018.03.11 17:03:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/93_DbRep.pm line 1370.
2018.03.11 17:03:31 1: DbRep MyDbRep -> BlockingCall  pid: Timeout: process terminated
2018.03.11 17:04:05 1: Timeout for DbRep_getMinTs reached, terminated process 3705
2018.03.11 17:04:05 1: DbRep MyDbRep -> BlockingCall DbRep_getMinTs pid:3705 Timeout: process terminated


Ein List sieht danach wie folgt aus:
Internals:
   DATABASE   fhemdaten
   DEF        myDbLog
   LASTCMD    minTimestamp
   NAME       MyDbRep
   NOTIFYDEV  global,MyDbRep
   NR         9
   NTFY_ORDER 50-MyDbRep
   ROLE       Client
   STATE      disconnected
   TYPE       DbRep
   UTF8       0
   VERSION    7.14.3
   HELPER:
     DBLOGDEVICE myDbLog
   Helper:
     DBLOG:
       errortext:
         myDbLog:
           TIME       1520784245.61213
           VALUE      Timeout
       state:
         myDbLog:
           TIME       1520784245.61213
           VALUE      disconnected
   READINGS:
     2018-03-11 17:04:05   errortext       Timeout: process terminated
     2018-03-11 17:04:05   state           disconnected
   dbloghash:
     COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
     CONFIGURATION ./db.conf
     DEF        ./db.conf .*:.*
     MODE       asynchronous
     MODEL      POSTGRESQL
     NAME       myDbLog
     NR         6
     NTFY_ORDER 50-myDbLog
     PID        1488
     REGEXP     .*:.*
     STATE      connected
     TYPE       DbLog
     VERSION    3.8.9
     dbconn     Pg:database=fhemdaten;host=localhost
     dbuser     fhem
     HELPER:
       COLSET     1
       DEVICECOL  64
       EVENTCOL   512
       OLDSTATE   connected
       READINGCOL 64
       TYPECOL    64
       UNITCOL    32
       VALUECOL   128
     Helper:
       DBLOG:
         state:
           myDbLog:
             TIME       1520784206.43397
             VALUE      connected
     READINGS:
       2018-03-11 17:06:12   CacheUsage      20
       2018-03-11 17:05:56   NextSync        2018-03-11 17:06:26 or if CacheUsage 500 reached
       2018-02-28 23:18:20   countCurrent    967
       2018-03-11 17:01:38   countHistory    27924284
       2018-03-11 17:05:56   state           connected
     cache:
       index      358
Attributes:
   allowDeletion 1
   timestamp_begin 2017-12-31 23:56:46
   verbose    5


Kann es sein dass der Timeout etwas zu kurz gesetzt ist?
Auf der Konsole dauert die Abfrage meines ältesten Datensatzes ca 14 Sekunden.

Grüße
Gerald

DS_Starter

Hallo Gerald,

Zitat
Kann es sein dass der Timeout etwas zu kurz gesetzt ist?
Auf der Konsole dauert die Abfrage meines ältesten Datensatzes ca 14 Sekunden.

So isses. Ich ändere das und stelle ein update in ein paar Minuten zur Verfügung.

Grüße
Heiko
ESXi@NUC+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

So, ist im ersten Beitrag. HAbe den Timeout für diese Spezialfunktion auf 90 Sek. erhöht. Sollte jetzt auch bei dir passen und genug Luft sein.

LG,
Heiko
ESXi@NUC+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

Pyromane

Zitat von: DS_Starter am 11 März 2018, 17:41:09
So, ist im ersten Beitrag. HAbe den Timeout für diese Spezialfunktion auf 90 Sek. erhöht. Sollte jetzt auch bei dir passen und genug Luft sein.

Funktioniert wie vorgesehen. Herzlichen Dank für den schnellen Fix!

Wünsche eine angenehme Nachtruhe
Pyro

ToKa

Hallo Heiko,

bin heute endlich dazugekommen meine Batterie-Werte mit changeValue von den %-Zeichen zu befreien. Mit den von Dir gemachten Angaben hat das nicht ganz geklappt. Der Wert war OK, aber die Unit wurde bei allen Einträgen auf 2 gesetzt. Konnte das dann aber wieder reparieren und ein %-Zeichen eintragen. Im Log tauchten außerdem die nachfolgenden Meldungen auf.

2018.03.17 15:58:21 1: PERL WARNING: Use of uninitialized value $dn in substr at ./FHEM/93_DbLog.pm line 3739.
2018.03.17 15:58:21 1: PERL WARNING: Use of uninitialized value $dt in substr at ./FHEM/93_DbLog.pm line 3740.
2018.03.17 15:58:21 1: PERL WARNING: Use of uninitialized value $evt in substr at ./FHEM/93_DbLog.pm line 3741.
2018.03.17 15:58:21 1: PERL WARNING: Use of uninitialized value $rd in substr at ./FHEM/93_DbLog.pm line 3742.


Eingeschränkt hatte ich auf reading="battery" und den Zeitraum auf das aktuelle Jahr.

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight