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

Kleiner Code-Bug.
Wollte wohl


my ($kd,$ku) = (1,1);


schreiben.
Kannst du bei dir ja schonmal ändern.
Ich ziehe es bei Gelegenheit mal gerade.

LG
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

Adimarantis

Danke für das update. Das Problem scheint weg zu sein.
Beim Rumprobieren mit delSeqDoublets ist mir noch eine Warning aufgefallen:
PERL WARNING: Argument "off" isn't numeric in numeric le (<=) at ./FHEM/93_DbRep.pm line 6008.
Passiert nur, wenn man eine Variance setzt. Anscheinend wird auch für nicht-numerische Werte ein Delta ermittelt. Geflaggt werden sie aber trotzdem (wahrscheinich wird vorher zusätzlich auf Gleichheit geprüft?).
Außerdem ist mir aufgefallen, dass man keine Variance von "0" setzen kann (was wahrscheinlich sinnfrei ist, weil das ja quasi der Default ist, richtig?) - sehr wohl aber eine von 0.0

Ich habe gestern auch mal ein delDoublets laufen lassen.   Erst advice, dann delete
2022.04.10 21:26:37.317 3: DbRep logdb_rep - number records identified to delete by "delDoublets adviceDelete": 1305480
2022.04.11 02:13:35.327 2: DbRep logdb_rep - DBD::mysql::st execute failed: Lost connection to MySQL server during query at ./FHEM/93_DbRep.pm line 5841.

Er hat aber wohl trotzdem einige Einträge gelöscht, da ein erneutes Advice heute morgen nur noch 488172 Einträge lieferte (dazwischen lief aber auch noch ein reduceLog).
Wobei, mir kommt gerade: Meine mySQL Database ist auf einem externen Server - evtl. war das die Zwangstrennung vom Internet. Zu dem Thema übrigens grosses Lob für dein Caching: Meine externe Datenbank war mal für mehrere Stunden ausgefallen - ich hab dabei aber keine Daten verloren.

Zuletzt noch eine Frage zu DbLog selbst: Dort kann man ja Devices und Types ausschliessen. Interessant wäre jetzt noch ein ROOM= - dann könnte ich z.B. meinen AUTOCREATE room ausschliessen in dem sich Dank rfxtrx433 massig Sensoren von Nachbarn tummeln.

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

DS_Starter

Zitat
Außerdem ist mir aufgefallen, dass man keine Variance von "0" setzen kann (was wahrscheinlich sinnfrei ist, weil das ja quasi der Default ist, richtig?) - sehr wohl aber eine von 0.0
Variance 0 ist der Standard. Deswegen macht es wenig Sinn 0 zu setzen. 0.0 geht durch weil ich die Perl Standard sub "looks_like_number" zur Prüfung verwende und die Routine 0 offensichtlich nicht als Ziffer akzeptiert. Vllt. setze ich die Eigabe 0 einfach nach 0.0 um, aber wie gesagt eigentlich Unsinn.

Zitat
DBD::mysql::st execute failed: Lost connection to MySQL server during query
Da kann das Modul nix für.  ;)

Zitat
Zuletzt noch eine Frage zu DbLog selbst: Dort kann man ja Devices und Types ausschliessen. Interessant wäre jetzt noch ein ROOM= - dann könnte ich z.B. meinen AUTOCREATE room ausschliessen in dem sich Dank rfxtrx433 massig Sensoren von Nachbarn tummeln.
Das prüfe ich mal bei Gelegenheit.

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

DS_Starter

Zitat
Zuletzt noch eine Frage zu DbLog selbst: Dort kann man ja Devices und Types ausschliessen. Interessant wäre jetzt noch ein ROOM= - dann könnte ich z.B. meinen AUTOCREATE room ausschliessen
Also das funktioniert bereits jetzt im DbLog. Das Attr excludeDevs können Devspec (http://fhemtest.myds.me:8083/fhem/docs/commandref_DE.html#devspec) angegeben werden.
Um Devices eines Raumes auszuschließen, ergänzt man das Attr zum Beispiel so:


room=Energie


room ist klein geschrieben weil es ja das Attr "room" darstellt.
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

RalfRog

Hinweis: $Id: 93_DbRep.pm 25731 2022-02-22 20:58:50Z DS_Starter $

Ich bekomme im DBRep bei manchen per "at" ausgeführten set <name> insert <Datum>,<Zeit>,<Wert> unvollstädige Einträge in der Datenbank.
Im Log (Verbose 3) steht dann Folgendes:

2022.05.05 21:31:00.007 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 966.
2022.05.05 21:31:00.007 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.05 21:31:00.008 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 967.
2022.05.05 21:31:00.008 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.05 21:31:00.009 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 968.
2022.05.05 21:31:00.009 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.05 21:31:00.009 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 969.
2022.05.05 21:31:00.010 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.05 21:31:00.011 3: DbRep DBRepPow - get initial structure information of database "fhem", remaining attempts: 3
2022.05.05 21:31:00.012 3: DbRep DBRepPow - Connectiontest to database mysql:database=fhem;host=localhost;port=3306 with user fhemuser
2022.05.05 21:31:00.106 3: DbRep DBRepPow - Index Report_Idx exists. Check ok
2022.05.05 21:31:00.122 3: DbRep DBRepPow - Initial data information retrieved - total time used: 0.0278 seconds
2022.05.05 21:31:00.140 3: DbRep DBRepPow - Connectiontest to db mysql:database=fhem;host=localhost;port=3306 successful


Das Ergebnis in der Datenbank sind leere Werte für Device, Reading, Value - nur für die Ausführung um 21:31 (05:29 ist ok und ohne Fehler)

TIMESTAMP;DEVICE;TYPE;EVENT;READING;VALUE;UNIT
2022-05-05 21:31:00;;manual;manual;;;

Korrekt kommt
TIMESTAMP;DEVICE;TYPE;EVENT;READING;VALUE;UNIT
2022-05-06 05:29:00;shelly_plug_s_df2674;manual;manual;power;0;


Ein "at" wurde erzeugt und das andere mit FHEM kopiert- die defs sehen so aus:

1)  *05:29:00 { fhem("set DBRepPow insert $today,05:29:00,0") }
2)  *21:31:00 { fhem("set DBRepPow insert $today,21:31:00,0") }


Das "at" um 05:29 führt zu korrekten Einträgen, das "at" um 21:31 zu dem Fehlern im Log und den fehlerhaften Einträgen.
Wird jedoch das "at" manuell per "set <at-name> execNow" ausgeführt landen korrekte Werte in der Datenbank.

Hat jemand eine Idee was die Ursache sein kann? Eigentlich müsste das Perlproblem doch jedesmal oder nie auftauchen!

Hier noch ein List des DBRep (Attribute Device und Reading sind gesetzt, das Reading enthält übrigens den manuellen Versuch per execNow)

Internals:
   DATABASE   fhem
   DEF        DBLogging
   FUUID      624f1c2e-f33f-a8ec-b32f-384b60f40596616e
   FVERSION   93_DbRep.pm:v8.48.2-s25731/2022-02-22
   LASTCMD    insert 2022-05-06,21:31:00,0
   MODEL      Client
   NAME       DBRepPow
   NOTIFYDEV  global,DBRepPow
   NR         492
   NTFY_ORDER 50-DBRepPow
   ROLE       Client
   STATE      done
   TYPE       DbRep
   UTF8       1
   HELPER:
     DBLOGDEVICE DBLogging
     GRANTS     DELETE,FILE,SELECT,INSERT,UPDATE
     IDRETRIES  2
     MINTS      2019-02-17 12:00:00
     PACKAGE    main
     VERSION    8.48.2
     DBREPCOL:
       COLSET     1
       DEVICE     64
       EVENT      512
       READING    64
       TYPE       64
       UNIT       32
       VALUE      128
   OLDREADINGS:
   READINGS:
     2022-05-06 15:10:20   data_inserted   2022-05-06 21:31:00, shelly_plug_s_df2674, manual, manual, power, 0,
     2022-05-06 15:10:20   number_lines_inserted 1
     2022-05-06 15:10:20   state           done
Attributes:
   comment    set DBRep1 reduceLog average=day
   device     shelly_plug_s_df2674
   reading    power
   room       Dbase
   useAdminCredentials 0
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

DS_Starter

Prinzipiell ist erstmal kein Fehler zu sehen und mir fehlt die Phantasie warum es nur um eine bestimmte Uhrzeit solche Probleme gibt.

Die Meldungen


2022.05.05 21:31:00.007 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 966.
2022.05.05 21:31:00.007 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.05 21:31:00.008 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 967.
2022.05.05 21:31:00.008 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.05 21:31:00.009 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 968.


deuten darauf hin dass keine Werte <Datum>,<Zeit>,<Wert> übergeben wurden, warum auch immer.

Teste doch bitte mal diese Form:


1)  *05:29:00 { CommandSet(undef, "DBRepPow insert $today,05:29:00,0") }
2)  *21:31:00 { CommandSet(undef, "DBRepPow insert $today,21:31:00,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

RalfRog

Ja ist nicht wirklich logisch.
Das Kommando CommandSet übernehm ich jetzt unbekannterweise einfach.

Kann man aus "eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }" ablesen, dass zumindest die Übergabe vom "at" an DBRep geklappt aht?

Ich werde mal nur das "at" um 21:31 umdefinieren.
Mal sehen was heute Abend passiert  ;D

Addon
Ich hatte es schon am 1. Mai eingebracht (https://forum.fhem.de/index.php/topic,127503.msg1220139.html#msg1220139). Es hat komischerweise am 2. und 3. funktioniert ab 4. dann nicht mehr. Wenn ich mich recht entsinne hatte ich auch nichts mehr am FHEM angefasst.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

DS_Starter

Ja, sehr merkwürdig wenn es mal problemlos geht und ein anderes mal nicht.
Na schauen wir mal auf den Test...
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

RalfRog

Zunächst mal das Fazit von heute Abend. Es hat funktioniert (alte und neue Funktion).

  • *21:31:00 { CommandSet(undef, "DBRepPow insert $today,21:31:00,0") }
  • *21:33:00 { fhem("set DBRepPow insert $today,21:33:00,0") }

Ich lass das jetzt mal ein paar Tage so laufen und beobachte die Eintagungen am Morgen und die beiden am Abend.

Doings:

6. Mai 17:10 Uhr
Änderung des "at" auf --> *21:31:00 { CommandSet(undef, "DBRepPow insert $today,21:31:00,0") }
execNow auf das geänderte "at" führt zum korrekten Ergebnis (wie die andere Definition auch)  ;)

6. Mai 17:16 Uhr
Kopie vom "at" erzeugt und die alte Definition nochmal 2 Minuten später
*21:33:00 { fhem("set DBRepPow insert $today,21:33:00,0") }
verbose 5 auf DBRep

6. Mai 23:50
Check: Datenbank korrekt befüllt
TIMESTAMP;DEVICE;TYPE;EVENT;READING;VALUE;UNIT
2022-05-06 21:33:00;shelly_plug_s_df2674;manual;manual;power;0;
2022-05-06 21:31:00;shelly_plug_s_df2674;manual;manual;power;0;

8. Mai
bisher Datenbank korrekt befüllt, keine PERL-Warnings

10. & 11. Mai
weiterhin Datenbank korrekt befüllt, keine PERL-Warnings
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

RalfRog

Fazit: Problem bisher nicht wieder aufgetreten.

Alle 3 AT's liefen seit 6. Mai sauber in die Datenbank.

define SolarPower_0     at *05:29:00 { fhem("set DBRepPow insert $today,05:29:00,0") }
define SolarPower_0W    at *21:31:00 { CommandSet(undef, "DBRepPow insert $today,21:31:00,0") }
define SolarPower_0Wneu at *21:33:00 { fhem("set DBRepPow insert $today,21:33:00,0") }


Fazit: merkwürdiges Verhaten, dass es mal zu:
      PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm
kommt und mal nicht

Deutet der Log-Eintrag
      eval: my $SELF= $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }   
nicht eigentlich darauf hin, dass im Modul der Text korrekt an eval übergeben wurde?

Ich werde den Ursprungszustand wieder herstellen und beim "DBRepPow" verbose 5 stehen lassen. Wenn es wiederkommt kann man vielleicht mehr sehen.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

DS_Starter

Zitat
Deutet der Log-Eintrag
      eval: my $SELF= $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }   
nicht eigentlich darauf hin, dass im Modul der Text korrekt an eval übergeben wurde?

Ja, das könnte man daraus ableiten. Die Warnings resultieren aus diesen Codezeilen:


          $i_device  = substr($i_device,  0, $hash->{HELPER}{DBREPCOL}{DEVICE});
          $i_reading = substr($i_reading, 0, $hash->{HELPER}{DBREPCOL}{READING});
          $i_value   = substr($i_value,   0, $hash->{HELPER}{DBREPCOL}{VALUE});
          $i_unit    = substr($i_unit,    0, $hash->{HELPER}{DBREPCOL}{UNIT});


$i_device und $i_reading werden aus den gesetzten Attributen des Devices extrahiert, $i_value und $i_unit übergeben.
Wenn unit nicht übergeben wird, wird es im Modul substituiert.
Aus irgendwelchen Gründen klappt diese Ermittlung/Übergabe bei dir in einer bestimmten Situation nicht und der Code erzeugt die Warnungen.
Mir fehlt aber nach wie vor eine Idee unter welchen Umständen es dazu kommen kann wenn im Normalfall alles so funktioniert wie vorgesehen.
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

RalfRog

Danke Dir für das Anschauen.
Die Codezeilen hatte ich mir auch schon angesehen (leider viel zu wenig Kenntnisse in PERL) -- aber wie es dann weitergeht verstehe ich nicht wirklich.

Oder im "at" (um 21:31) waren "unsichtbare Zeichen", die sich auswirken wenn es automatisch getriggert wird und nicht bei manueller Ausführung mit "execNow".

Ich lass das jetzt mit verbose 5 mitlaufen (sind nur um die 20 Zeilen Log, 2xtäglich). Vielleicht gibt es Erkenntnisse.....

Update 12.5
FHEM Update durchgeführt... und jetzt abwarten  ;D

21:31 Uhr
na super wieder die PERL Warning - ich halte es hier schon mal fest Zusammenfassung später in einer Antwort
Die Logeinträge geben eher nichts her

2022.05.12 21:31:00.013 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 967.
2022.05.12 21:31:00.014 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ [b]fhem("set DBRepPow insert $today,21:31:00,0")[/b] }
2022.05.12 21:31:00.015 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 968.
2022.05.12 21:31:00.016 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.12 21:31:00.017 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 969.
2022.05.12 21:31:00.018 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.12 21:31:00.019 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/93_DbRep.pm line 970.
2022.05.12 21:31:00.020 3: eval: my $SELF=   $evalSpecials->{'%SELF'};{ fhem("set DBRepPow insert $today,21:31:00,0") }
2022.05.12 21:31:00.021 3: DbRep DBRepPow - get initial structure information of database "fhem", remaining attempts: 3
2022.05.12 21:31:00.023 3: DbRep DBRepPow - Connectiontest to database mysql:database=fhem;host=localhost;port=3306 with user fhemuser
2022.05.12 21:31:00.066 5: DbRep DBRepPow - start BlockingCall with PID "20285"
2022.05.12 21:31:00.114 4: DbRep DBRepPow - Database connect - user: fhemuser, UTF-8 option set: yes
2022.05.12 21:31:00.127 4: DbRep DBRepPow - Oldest timestamp determined: 2019-02-17 12:00:00
2022.05.12 21:31:00.137 4: DbRep DBRepPow - Encoding of database determined: utf8
2022.05.12 21:31:00.141 3: DbRep DBRepPow - Index Report_Idx exists. Check ok
2022.05.12 21:31:00.144 4: DbRep DBRepPow - Grants determined: INSERT,SELECT,DELETE,FILE,UPDATE
2022.05.12 21:31:00.155 5: DbRep DBRepPow - getInitData finished PID "20285"
2022.05.12 21:31:00.156 3: DbRep DBRepPow - Initial data information retrieved - total time used: 0.0322 seconds
2022.05.12 21:31:00.174 3: DbRep DBRepPow - Connectiontest to db mysql:database=fhem;host=localhost;port=3306 successful
2022.05.12 21:31:00.184 4: DbRep DBRepPow - -------- New selection ---------
2022.05.12 21:31:00.185 4: DbRep DBRepPow - Command: insert 2022-05-12 21:31:00,,,,
2022.05.12 21:31:00.205 5: DbRep DBRepPow - BlockingCall with PID "20287" started
2022.05.12 21:31:00.245 4: DbRep DBRepPow - Database connect - user: fhemuser, UTF-8 option set: yes
2022.05.12 21:31:00.313 5: DbRep DBRepPow -> Primary Key used in fhem.history: 1 (TIMESTAMP,DEVICE,READING)
2022.05.12 21:31:00.314 5: DbRep DBRepPow -> Primary Key used in fhem.current: 1 (DEVICE,READING)
2022.05.12 21:31:00.315 5: DbRep DBRepPow -> data to insert Timestamp: 2022-05-12 21:31:00, Device: , Type: manual, Event: manual, Reading: , Value: , Unit:
2022.05.12 21:31:00.315 4: DbRep DBRepPow - SQL prepare: INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)
2022.05.12 21:31:00.317 4: DbRep DBRepPow - begin transaction
2022.05.12 21:31:00.328 4: DbRep DBRepPow - transaction committed
2022.05.12 21:31:00.330 4: DbRep DBRepPow - Inserted into fhem.history: 2022-05-12 21:31:00, , manual, manual, , ,
2022.05.12 21:31:00.343 5: DbRep DBRepPow - BlockingCall PID "20287" finished


22:35
Ausführen "set SolarPower_0W execNow" kein Fehler   :-\

2022.05.12 22:35:05.793 4: DbRep DBRepPow - -------- New selection ---------
2022.05.12 22:35:05.794 4: DbRep DBRepPow - Command: insert 2022-05-12 21:31:00,shelly_plug_s_df2674,power,0,
2022.05.12 22:35:05.814 5: DbRep DBRepPow - BlockingCall with PID "23724" started
2022.05.12 22:35:05.855 4: DbRep DBRepPow - Database connect - user: fhemuser, UTF-8 option set: yes
2022.05.12 22:35:05.929 5: DbRep DBRepPow -> Primary Key used in fhem.history: 1 (TIMESTAMP,DEVICE,READING)
2022.05.12 22:35:05.930 5: DbRep DBRepPow -> Primary Key used in fhem.current: 1 (DEVICE,READING)
2022.05.12 22:35:05.931 5: DbRep DBRepPow -> data to insert Timestamp: 2022-05-12 21:31:00, Device: shelly_plug_s_df2674, Type: manual, Event: manual, Reading: power, Value: 0, Unit:
2022.05.12 22:35:05.932 4: DbRep DBRepPow - SQL prepare: INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)
2022.05.12 22:35:05.934 4: DbRep DBRepPow - begin transaction
2022.05.12 22:35:05.944 4: DbRep DBRepPow - transaction committed
2022.05.12 22:35:05.945 4: DbRep DBRepPow - Inserted into fhem.history: 2022-05-12 21:31:00, shelly_plug_s_df2674, manual, manual, power, 0,
2022.05.12 22:35:05.960 5: DbRep DBRepPow - BlockingCall PID "23724" finished
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

frober

Hallo Heiko,

bestände die Möglichkeit, das insert optional um Device/Reading zu erweitern?

Ich habe das Problem, dass meine Aktoren nur beim Schalten ein Event ausgeben. D.h. da diese nur alle paar Tage schalten habe ich dann nur ein "ON" im Plot und sehe einen Balken für den ganzen Tag, bis den Aktor wieder ausschaltet.

Ich würde gerne zeitgleich zum "ON", mit dem gleichen Timestamp ein "OFF" in die Datenbank schreiben (evtl. 1s früher).

Da es mehrere Devices betrifft, brauche ich genauso viele DbReps oder ich muss vor dem Insert die 2 Attr setzen. Dann kommt aber auch das "save config" zum tragen.

Bsp: nicht getestet:
Zitatdefine Test notify MYSENSOR_(2|3):(status(1|2|3|4)|status):on {my $t = {ReadingsTimestamp("$NAME","EVTPART0",'undef')}, my @T = split(/ /, $t), fhem("attr insertDB Device $NAME; attr insertDB Reading $EVTPART0; set insertDB insert $T[0],$T[1],off"}

Eleganter wäre so etwas:
Zitatdefine Test notify MYSENSOR_(2|3):(status(1|2|3|4)|status):on {my $t = {ReadingsTimestamp("$NAME","EVTPART0",'undef')}, my @T = split(/ /, $t), fhem("set insertDB insert $T[0],$T[1],off,$NAME,$EVTPART0"}

oder hast du noch eine andere Idee?

Grüße Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Hallo Bernd,

ja das kann ich machen und sollte kein Problem sein.
Allerdings muss man dann als User noch ein ",," einschieben wenn man keine Einheit mitgibt.

set insertDB insert $T[0],$T[1],off,<Unit>,$NAME,$EVTPART0

also so:

set insertDB insert $T[0],$T[1],off,,$NAME,$EVTPART0

Aber das sollte kein Problem sein. Man muss dann nur daran denken.
Die Reihenfolge von dem String ist dann zwar ein bisschen komisch, aber muss halt sein um die
kompatibel zum aktuellen Statement zu sein.
Melde mich wenn ich es implementiert habe.

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

frober

Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...