Hallo,
ich holen mir mit "get DBLogging......." Einträge aus der Datenbank.
Nun wird dabei jedes mal ein Logeintrag geschrieben ins Log geschrieben.
2019.07.05 08:23:44 3: get DBLogging - - 2019-07-04_08:23:00 2019-07-04_08:23:59 KeSolarEdge:AC-Power : 2019-07-04_08:23:45 4934
#KeSolarEdge:AC-Power:::
2019.07.05 08:24:47 3: get DBLogging - - 2019-07-04_08:24:00 2019-07-04_08:24:59 dum_pv_energytoday:state : 2019-07-04_08:24:46 5.39
#dum_pv_energytoday:state:::
2019.07.05 08:24:47 3: get DBLogging - - 2019-07-04_08:24:00 2019-07-04_08:24:59 KeSolarEdge:AC-Power : 2019-07-04_08:24:45 4937
#KeSolarEdge:AC-Power:::
2019.07.05 08:25:50 3: get DBLogging - - 2019-07-04_08:25:00 2019-07-04_08:25:59 dum_pv_energytoday:state : 2019-07-04_08:25:45 5.47
#dum_pv_energytoday:state:::
2019.07.05 08:25:50 3: get DBLogging - - 2019-07-04_08:25:00 2019-07-04_08:25:59 KeSolarEdge:AC-Power : 2019-07-04_08:25:45 4986
#KeSolarEdge:AC-Power:::
Gibt es eine Möglichkeit das zu verhindern?
Verbose hab ich schon beim Notify und beim Dblogging auf 0 gestellt.
Vielen Dank
Gruß Zernima
Der Eintrag kommt nicht aus dem DbLog-Modul.
Wahrscheinlich wird er dort generiert wo der "get DBLogging......." aufgerufen wird.
Grüße,
Heiko
Hallo,
vielen lieben Dank für die Antwort.
Ich rufe das über ein Notify auf. Bei dem Notify hab ich aber auch schon verbose auf 0 gestellt. Da kann es glaub auch nicht herkommen.
Zeig doch mal bitte den kompletten Aufruf bzw. die Definition des Notify.
KeSolarEdge:Zustand.* {my $zeit24h=strftime "%Y-%m-%d_%H:%M:00", localtime time-1440*60;my $zeit24h1min=strftime "%Y-%m-%d_%H:%M:59", localtime time-1440*60;my $Einergievor24h = fhem("get DBLogging - - $zeit24h $zeit24h1min dum_pv_energytoday:state");my $Powervor24h = fhem("get DBLogging - - $zeit24h $zeit24h1min KeSolarEdge:AC-Power");
if(length($Einergievor24h) != 29){
fhem("setreading Energie_24h state ".(split(" ", $Einergievor24h))[1]);
}
if(length($Powervor24h) != 25){
fhem("setreading Power_24h state ".(split(" ", $Powervor24h))[1]);
}
}
nicht schön aber funktioniert :-)
Vermutlich kommt der Log-Eintrag doch aus dem Notify. Verbose 0 sollte da helfen und das Problem lösen.
Dann nur noch der Hinweis, dass du eventuell deinen Code etwas vereinfachen kannst mit einem DbRep-Aufruf. Kannst du mal probieren.
Auszug aus der Commandref:
Sobald ein DbRep-Device definiert ist, wird sowohl die Perl Funktion DbReadingsVal als auch das FHEM Kommando dbReadingsVal zur Verfügung gestellt. Mit dieser Funktion läßt sich, ähnlich dem allgemeinen ReadingsVal, der Wert eines Readings aus der Datenbank abrufen. Die Funktionsausführung erfolgt blockierend.
Die Befehlssyntax für die Perl Funktion ist:
DbReadingsVal("<name>","<device:reading>","<timestamp>","<default>")
Beispiele:
$ret = DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-01-13_08:00:00","");
Die Befehlssyntax als FHEM Kommando ist:
dbReadingsVal <name> <device:reading> <timestamp> <default>
Beispiel:
dbReadingsVal Rep.LogDB1 MyWetter:temperature 2018-01-13_08:00:00 0
<name> : Name des abzufragenden DbRep-Device
<device:reading> : Device:Reading dessen Wert geliefert werden soll
<timestamp> : Zeitpunkt des zu liefernden Readingwertes (*) im Format "YYYY-MM-DD_hh:mm:ss"
<default> : Defaultwert falls kein Readingwert ermittelt werden konnte
(*) Es wird der zeitlich zu <timestamp> passendste Readingwert zurück geliefert, falls kein Wert exakt zu dem angegebenen Zeitpunkt geloggt wurde.
Grüße,
Heiko
Vielen lieben Dnak für den tollen Tipp das funktioniert echt prima. Muss ich heute mal die Funktion umbauen..Top.
verbose 0 hab ich schon am notify...das bringt nix. :-[
Bitte :)
Zitatverbose 0 hab ich schon am notify...das bringt nix. :-[
Hmm, komisch. Kann ich mir momentan nicht erklären an welcher Stelle dieser Eintrag im Log generiert wird.
Im Dblog habe ich auch nochmal das Modul durchsucht und nichts gefunden, zumindest nicht in der aktuellen Version 4.1.1.
Hattest ja auch schon DbLog auf verbose 0 gestellt mit negativem Ergebnis was dazu passt.
Ich hab auch keine Ahnung wo das her kommt. Aber wäre egal wenn ich das neue notify zum laufen bekommen würde...
KeSolarEdge:Zustand.* {my $a = strftime "%Y-%m-%d_%H:%M:00", localtime time-1440*60;
my $b = DbReadingsVal('Rep_LogDB1','dum_pv_energytoday:state','$a','0');
my $c = DbReadingsVal('Rep_LogDB1','KeSolarEdge:AC-Power','$a','0');
fhem('setreading Energie_24h state $b');
fhem('setreading Power_24h state $c');
}
2019.07.06 10:33:46 3: PV_Energie_24h return value: Unknown command {my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command fhem('setreading, try help.
Unknown command fhem('setreading, try help.
Unknown command }
Irgendwie will das nicht ..keine Ahnung wieso.
Sieht da jemnd einen Fehler?
Nimm mal mein Beispiel als Vorlage. Habe ich getestet und funktioniert.
SMA_Energymeter:Einspeisung_Wirkleistung.* {my $a = strftime "%Y-%m-%d %H:%M:00", localtime time-1440*60;
my $b = DbReadingsVal('Rep.LogDB','SMA_Energymeter:Einspeisung_Wirkleistung',$a,'0');
fhem("setreading testdum Energy $b");
}
Achte auf die Leerzeichen im strftime und die Hochkommasetzung.
Lg,
Heiko
Sooooo
Vielen lieben Dank....Nachdem ich das Notify gelöscht und neu angelegt hab ist funktioniert nun alles .... Top... So muss sein. Ohne Logeinträge.