diff --git a/fhem/contrib/DS_Starter/93_DbLog.pm b/fhem/contrib/DS_Starter/93_DbLog.pm index 226b00641..279a1bda2 100644 --- a/fhem/contrib/DS_Starter/93_DbLog.pm +++ b/fhem/contrib/DS_Starter/93_DbLog.pm @@ -1,5 +1,5 @@ ############################################################################################################################################ -# $Id: 93_DbLog.pm 21801 2020-04-29 09:37:37Z DS_Starter $ +# $Id: 93_DbLog.pm 22018 2020-05-24 06:33:11Z DS_Starter $ # # 93_DbLog.pm # written by Dr. Boris Neubert 2007-12-30 @@ -30,6 +30,7 @@ no if $] >= 5.017011, warnings => 'experimental::smartmatch'; # Version History intern by DS_Starter: our %DbLog_vNotesIntern = ( + "4.10.1" => "22.06.2020 configCheck changed for SQLite ", "4.10.0" => "22.05.2020 improve configCheck, new vars \$LASTTIMESTAMP and \$LASTVALUE in valueFn / DbLogValueFn, Forum:#111423 ", "4.9.13" => "12.05.2020 commandRef changed, AutoInactiveDestroy => 1 for dbh ", "4.9.12" => "28.04.2020 fix line breaks in set function, Forum: #110673 ", @@ -1041,7 +1042,7 @@ sub DbLog_ParseEvent($$$$) { # - temperature # - humidity if ($reading =~ m(^temperature)) { $unit = "°C"; } # wenn reading mit temperature beginnt - elsif($reading =~ m(^humidity)) { $unit = "%"; } + elsif($reading =~ m(^humidity)) { $unit = "%"; } # wenn reading mit humidity beginnt # the interpretation of the argument depends on the device type # EMEM, M232Counter, M232Voltage return plain numbers @@ -1592,22 +1593,27 @@ sub DbLog_Log($$) { if(@row_array) { # synchoner Mode return if($hash->{HELPER}{REOPEN_RUNS}); # return wenn "reopen" mit Ablaufzeit gestartet ist + my $error = DbLog_Push($hash, $vb4show, @row_array); Log3 ($name, 5, "DbLog $name -> DbLog_Push Returncode: $error") if($error && $vb4show); + CancelDelayedShutdown($name) if($hash->{HELPER}{SHUTDOWNSEQ}); Log3 ($name, 2, "DbLog $name - Last database write cycle done") if(delete $hash->{HELPER}{SHUTDOWNSEQ}); - my $state = $error?$error:(IsDisabled($name))?"disabled":"connected"; - my $evt = ($state eq $hash->{HELPER}{OLDSTATE})?0:1; + + my $state = $error ? $error : (IsDisabled($name)) ? "disabled" : "connected"; + my $evt = ($state eq $hash->{HELPER}{OLDSTATE}) ? 0 : 1; readingsSingleUpdate($hash, "state", $state, $evt); $hash->{HELPER}{OLDSTATE} = $state; # Notify-Routine Laufzeit ermitteln $net = tv_interval($nst); + } else { CancelDelayedShutdown($name) if($hash->{HELPER}{SHUTDOWNSEQ}); Log3 ($name, 2, "DbLog $name - no data for last database write cycle") if(delete $hash->{HELPER}{SHUTDOWNSEQ}); } } + if($net && AttrVal($name, "showNotifyTime", undef)) { readingsSingleUpdate($hash, "notify_processing_time", sprintf("%.4f",$net), 1); } @@ -4005,14 +4011,14 @@ sub DbLog_configcheck($) { } if($dbmodel =~ /SQLITE/) { my $dev = (DbLog_sqlget($hash,"SELECT sql FROM sqlite_master WHERE name = '$history'"))[0]; - $cdat_dev = $dev?$dev:"no result"; + $cdat_dev = $dev // "no result"; $cdat_typ = $cdat_evt = $cdat_rdg = $cdat_val = $cdat_unt = $cdat_dev; - $cdat_dev =~ s/.*DEVICE.varchar\(([\d]*)\).*/$1/e; - $cdat_typ =~ s/.*TYPE.varchar\(([\d]*)\).*/$1/e; - $cdat_evt =~ s/.*EVENT.varchar\(([\d]*)\).*/$1/e; - $cdat_rdg =~ s/.*READING.varchar\(([\d]*)\).*/$1/e; - $cdat_val =~ s/.*VALUE.varchar\(([\d]*)\).*/$1/e; - $cdat_unt =~ s/.*UNIT.varchar\(([\d]*)\).*/$1/e; + ($cdat_dev) = $cdat_dev =~ /DEVICE.varchar\(([\d]+)\)/x; + ($cdat_typ) = $cdat_typ =~ /TYPE.varchar\(([\d]+)\)/x; + ($cdat_evt) = $cdat_evt =~ /EVENT.varchar\(([\d]+)\)/x; + ($cdat_rdg) = $cdat_rdg =~ /READING.varchar\(([\d]+)\)/x; + ($cdat_val) = $cdat_val =~ /VALUE.varchar\(([\d]+)\)/x; + ($cdat_unt) = $cdat_unt =~ /UNIT.varchar\(([\d]+)\)/x; } if ($dbmodel !~ /SQLITE/) { $cdat_dev = @sr_dev?($sr_dev[1]):"no result"; @@ -6169,12 +6175,12 @@ sub DbLog_setVersionInfo($) { if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) { # META-Daten sind vorhanden $modules{$type}{META}{version} = "v".$v; # Version aus META.json überschreiben, Anzeige mit {Dumper $modules{DbLog}{META}} - if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 93_DbLog.pm 21801 2020-04-29 09:37:37Z DS_Starter $ im Kopf komplett! vorhanden ) + if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 93_DbLog.pm 22018 2020-05-24 06:33:11Z DS_Starter $ im Kopf komplett! vorhanden ) $modules{$type}{META}{x_version} =~ s/1.1.1/$v/g; } else { $modules{$type}{META}{x_version} = $v; } - return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbLog.pm 21801 2020-04-29 09:37:37Z DS_Starter $ im Kopf komplett! vorhanden ) + return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbLog.pm 22018 2020-05-24 06:33:11Z DS_Starter $ im Kopf komplett! vorhanden ) if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) { # es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen # mit {->VERSION()} im FHEMWEB kann Modulversion abgefragt werden