diff --git a/fhem/CHANGED b/fhem/CHANGED index 92b73b684..0fcfcab39 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,7 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: 93_DbLog: addLog - not available reading can be added as new one + (forum:#86966) - feature: 02_RSS: label and goto in layout definition (forum #86844) - change: 59_Weather: reverted changes in HTML routine (forum #87187) - feature: 59_Weather: italian translations and other (forum #87080) diff --git a/fhem/FHEM/93_DbLog.pm b/fhem/FHEM/93_DbLog.pm index aaa096259..5b5de6340 100644 --- a/fhem/FHEM/93_DbLog.pm +++ b/fhem/FHEM/93_DbLog.pm @@ -16,6 +16,7 @@ ############################################################################################################################################ # Versions History done by DS_Starter & DeeSPe: # +# 3.10.8 21.04.2018 addLog - not available reading can be added as new one (forum:#86966) # 3.10.7 16.04.2018 fix generate addLog-event if device or reading was not found by addLog # 3.10.6 13.04.2018 verbose level in addlog changed if reading not found # 3.10.5 12.04.2018 fix warnings @@ -203,7 +204,7 @@ use Time::HiRes qw(gettimeofday tv_interval); use Encode qw(encode_utf8); no if $] >= 5.017011, warnings => 'experimental::smartmatch'; -my $DbLogVersion = "3.10.7"; +my $DbLogVersion = "3.10.8"; my %columns = ("DEVICE" => 64, "TYPE" => 64, @@ -3598,9 +3599,11 @@ sub DbLog_AddLog($$$$$) { my $r = $defs{$dev_name}{READINGS}; my $DbLogExclude = AttrVal($dev_name, "DbLogExclude", undef); my @exrds; + my $found = 0; foreach my $rd (sort keys %{$r}) { # jedes Reading des Devices auswerten my $do = 1; + $found = 1 if($rd =~ m/^$rdspec$/); # Reading gefunden if($DbLogExclude && !$nce) { my @v1 = split(/,/, $DbLogExclude); for (my $i=0; $i Readings extracted from Regex: @exrds"; - if(!@exrds) { - Log3 $name, 2, "DbLog $name -> no Reading '$rdspec' of device '$dev_name' found by addLog !"; - next; + if(!$found) { + if(goodReadingName($rdspec) && defined($value)) { + Log3 $name, 3, "DbLog $name -> Reading '$rdspec' of device '$dev_name' not found - add it as new reading."; + push @exrds,$rdspec; + } elsif (goodReadingName($rdspec) && !defined($value)) { + Log3 $name, 2, "DbLog $name -> WARNING - new Reading '$rdspec' has no value - can't add it !"; + } else { + Log3 $name, 2, "DbLog $name -> WARNING - Readingname '$rdspec' is no valid or regexp - can't add regexp as new reading !"; + } } - + no warnings 'uninitialized'; foreach (@exrds) { $dev_reading = $_; @@ -5347,7 +5356,10 @@ sub dbReadings($@) {