diff --git a/fhem/FHEM/00_CUL.pm b/fhem/FHEM/00_CUL.pm index 6eb238409..4e6e53110 100755 --- a/fhem/FHEM/00_CUL.pm +++ b/fhem/FHEM/00_CUL.pm @@ -150,7 +150,7 @@ CUL_Define($$) if(uc($defs{$d}{FHTID}) =~ m/^$x/) { my $m = "$name: Cannot define multiple CULs with identical ". "first two digits ($x)"; - Log 1, $m; + Log3 $name, 1, $m; return $m; } } @@ -163,7 +163,7 @@ CUL_Define($$) $hash->{MatchList} = \%matchListSlowRF; if($dev eq "none") { - Log 1, "$name device is none, commands will be echoed only"; + Log3 $name, 1, "$name device is none, commands will be echoed only"; $attr{$name}{dummy} = 1; return undef; } @@ -187,7 +187,7 @@ CUL_Undef($$) $defs{$d}{IODev} == $hash) { my $lev = ($reread_active ? 4 : 2); - Log GetLogLevel($name,$lev), "deleting port for $d"; + Log3 $name, $lev, "deleting port for $d"; delete $defs{$d}{IODev}; } } @@ -233,7 +233,6 @@ CUL_Set($@) my $name = shift @a; my $type = shift @a; my $arg = join("", @a); - my $ll = GetLogLevel($name,3); return "This command is not valid in the current rfmode" if($sets{$type} && $sets{$type} ne AttrVal($name, "rfmode", "SlowRF")); @@ -262,7 +261,7 @@ CUL_Set($@) my $f1 = sprintf("%02x", int($f % 65536) / 256); my $f0 = sprintf("%02x", $f % 256); $arg = sprintf("%.3f", (hex($f2)*65536+hex($f1)*256+hex($f0))/65536*26); - Log $ll, "Setting FREQ2..0 (0D,0E,0F) to $f2 $f1 $f0 = $arg MHz"; + Log3 $name, 3, "Setting FREQ2..0 (0D,0E,0F) to $f2 $f1 $f0 = $arg MHz"; CUL_SimpleWrite($hash, "W0F$f2"); CUL_SimpleWrite($hash, "W10$f1"); CUL_SimpleWrite($hash, "W11$f0"); @@ -289,7 +288,7 @@ CUL_Set($@) GOTBW: $ob = sprintf("%02x", $ob+$bits); - Log $ll, "Setting MDMCFG4 (10) to $ob = $bw KHz"; + Log3 $name, 3, "Setting MDMCFG4 (10) to $ob = $bw KHz"; CUL_SimpleWrite($hash, "W12$ob"); CUL_SimpleWrite($hash, $hash->{initString}); @@ -303,7 +302,7 @@ GOTBW: } $v = sprintf("%02d", $v-1); $w = $ampllist[$v]; - Log $ll, "Setting AGCCTRL2 (1B) to $v / $w dB"; + Log3 $name, 3, "Setting AGCCTRL2 (1B) to $v / $w dB"; CUL_SimpleWrite($hash, "W1D$v"); CUL_SimpleWrite($hash, $hash->{initString}); @@ -313,7 +312,7 @@ GOTBW: if($arg !~ m/^\d+$/ || $arg < 4 || $arg > 16); my $w = int($arg/4)*4; my $v = sprintf("9%d",$arg/4-1); - Log $ll, "Setting AGCCTRL0 (1D) to $v / $w dB"; + Log3 $name, 3, "Setting AGCCTRL0 (1D) to $v / $w dB"; CUL_SimpleWrite($hash, "W1F$v"); CUL_SimpleWrite($hash, $hash->{initString}); @@ -362,7 +361,7 @@ WRITEEND: return "Expecting a 0-padded hex number" if((length($arg)&1) == 1 && $type ne "raw"); - Log $ll, "set $name $type $arg"; + Log3 $name, 3, "set $name $type $arg"; $arg = "l$arg" if($type eq "led"); $arg = "x$arg" if($type eq "patable"); CUL_SimpleWrite($hash, $arg); @@ -534,7 +533,7 @@ CUL_DoInit($) if($ver !~ m/^V/) { $attr{$name}{dummy} = 1; $msg = "Not an CUL device, got for V: $ver"; - Log 1, $msg; + Log3 $name, 1, $msg; return $msg; } $ver =~ s/[\r\n]//g; @@ -553,7 +552,7 @@ CUL_DoInit($) $cmds =~ s/$name cmds =>//g; $cmds =~ s/ //g; $hash->{CMDS} = $cmds; - Log 3, "$name: Possible commands: " . $hash->{CMDS}; + Log3 $name, 3, "$name: Possible commands: " . $hash->{CMDS}; CUL_SimpleWrite($hash, $hash->{initString}); @@ -563,9 +562,9 @@ CUL_DoInit($) ($err, $fhtid) = CUL_ReadAnswer($hash, "FHTID", 0, undef); return "$name: $err" if($err); $fhtid =~ s/[\r\n]//g; - Log 5, "GOT CUL fhtid: $fhtid"; + Log3 $name, 5, "GOT CUL fhtid: $fhtid"; if(!defined($fhtid) || $fhtid ne $hash->{FHTID}) { - Log 2, "Setting CUL fhtid from $fhtid to " . $hash->{FHTID}; + Log3 $name, 2, "Setting CUL fhtid from $fhtid to " . $hash->{FHTID}; CUL_SimpleWrite($hash, "T01" . $hash->{FHTID}); } @@ -626,7 +625,7 @@ CUL_ReadAnswer($$$$) } if($buf) { - Log 5, "CUL/RAW (ReadAnswer): $buf"; + Log3 $hash->{NAME}, 5, "CUL/RAW (ReadAnswer): $buf"; $mculdata .= $buf; } $mculdata = CUL_RFR_DelPrefix($mculdata) if($type eq "CUL_RFR"); @@ -663,7 +662,7 @@ CUL_XmitLimitCheck($$) if(@b > 163) { # Maximum nr of transmissions per hour (unconfirmed). my $name = $hash->{NAME}; - Log GetLogLevel($name,2), "CUL TRANSMIT LIMIT EXCEEDED"; + Log3 $name, 2, "CUL TRANSMIT LIMIT EXCEEDED"; DoTrigger($name, "TRANSMIT LIMIT EXCEEDED"); } else { @@ -718,7 +717,7 @@ CUL_WriteTranslate($$$) $msg = substr($msg,6,4) . substr($msg,10); } else { - Log GetLogLevel($name,2), "CUL cannot translate $fn $msg"; + Log3 $name, 2, "CUL cannot translate $fn $msg"; return (undef, undef); } return ($fn, $msg); @@ -732,8 +731,9 @@ CUL_Write($$$) ($fn, $msg) = CUL_WriteTranslate($hash, $fn, $msg); return if(!defined($fn)); + my $name = $hash->{NAME}; - Log 5, "$hash->{NAME} sending $fn$msg"; + Log3 $name, 5, "$hash->{NAME} sending $fn$msg"; my $bstring = "$fn$msg"; if($fn eq "F" || # FS20 message @@ -834,7 +834,7 @@ CUL_Read($) my $name = $hash->{NAME}; my $culdata = $hash->{PARTIAL}; - Log 5, "CUL/RAW: $culdata/$buf"; + Log3 $name, 5, "CUL/RAW: $culdata/$buf"; $culdata .= $buf; while($culdata =~ m/\n/) { @@ -859,9 +859,9 @@ CUL_Parse($$$$$) $rssi = hex(substr($dmsg, $l-2, 2)); $dmsg = substr($dmsg, 0, $l-2); $rssi = ($rssi>=128 ? (($rssi-256)/2-74) : ($rssi/2-74)); - Log GetLogLevel($name,5), "$name: $dmsg $rssi"; + Log3 $name, 5, "$name: $dmsg $rssi"; } else { - Log GetLogLevel($name,5), "$name: $dmsg"; + Log3 $name, 5, "$name: $dmsg"; } ########################################### @@ -939,7 +939,7 @@ CUL_Parse($$$$$) $dmsg = "TX".substr($dmsg,1); # t.* is occupied by FHTTK } else { DoTrigger($name, "UNKNOWNCODE $dmsg"); - Log GetLogLevel($name,2), "$name: unknown message $dmsg"; + Log3 $name, 2, "$name: unknown message $dmsg"; return; } @@ -986,8 +986,7 @@ CUL_SimpleWrite(@) } my $name = $hash->{NAME}; - my $ll5 = GetLogLevel($name,5); - Log $ll5, "SW: $msg"; + Log3 $name, 5, "SW: $msg"; $msg .= "\n" unless($nonl); @@ -1021,7 +1020,7 @@ CUL_Attr(@) $hash->{initString} = "X21\nAr"; # X21 is needed for RSSI reporting CUL_SimpleWrite($hash, $hash->{initString}); } else { - Log 2, $msg; + Log3 $name, 2, $msg; return $msg; } @@ -1034,7 +1033,7 @@ CUL_Attr(@) $hash->{initString} = "X21\nZr"; # X21 is needed for RSSI reporting CUL_SimpleWrite($hash, $hash->{initString}); } else { - Log 2, $msg; + Log3 $name, 2, $msg; return $msg; } @@ -1049,7 +1048,7 @@ CUL_Attr(@) } - Log 2, "Switched $name rfmode to $a[3]"; + Log3 $name, 2, "Switched $name rfmode to $a[3]"; delete $hash->{".clientArray"}; } diff --git a/fhem/FHEM/10_FS20.pm b/fhem/FHEM/10_FS20.pm index d13fb264f..ac9b904b1 100755 --- a/fhem/FHEM/10_FS20.pm +++ b/fhem/FHEM/10_FS20.pm @@ -147,7 +147,8 @@ Do_On_Till($@) my $hms_till = sprintf("%02d:%02d:%02d", $hr, $min, $sec); my $hms_now = sprintf("%02d:%02d:%02d", $lt[2], $lt[1], $lt[0]); if($hms_now ge $hms_till) { - Log 4, "on-till: won't switch as now ($hms_now) is later than $hms_till"; + Log3 $hash->{NAME}, 4, + "on-till: won't switch as now ($hms_now) is later than $hms_till"; return ""; } @@ -199,7 +200,7 @@ FS20_Set($@) return "Bad time spec" if($na == 3 && $a[2] !~ m/^\d*\.?\d+$/); my $v = join(" ", @a); - Log GetLogLevel($name,3), "FS20 set $v"; + Log3 $name, 3, "FS20 set $v"; (undef, $v) = split(" ", $v, 2); # Not interested in the name... my $val; @@ -214,8 +215,7 @@ FS20_Set($@) $val = (2**$i)*$j*0.25; if($val >= $a[2]) { if($val != $a[2]) { - Log GetLogLevel($name,2), - "$name: changing timeout to $val from $a[2]"; + Log3 $name, 2, "$name: changing timeout to $val from $a[2]"; } $c .= sprintf("%x%x", $i, $j); last LOOP; @@ -252,7 +252,7 @@ FS20_Set($@) if($newState) { my $to = sprintf("%02d:%02d:%02d", $val/3600, ($val%3600)/60, $val%60); $modules{FS20}{ldata}{$name} = $to; - Log 4, "Follow: +$to setstate $name $newState"; + Log3 $name, 4, "Follow: +$to setstate $name $newState"; CommandDefine(undef, $name."_timer at +$to ". "setstate $name $newState; trigger $name $newState"); } @@ -389,7 +389,7 @@ FS20_Parse($$) return "" if(IsIgnored($n)); # Little strange. readingsSingleUpdate($lh, "state", $v, 1); - Log GetLogLevel($n,4), "FS20 $n $v"; + Log3 $n, 4, "FS20 $n $v"; if($modules{FS20}{ldata}{$n}) { CommandDelete(undef, $n . "_timer"); @@ -408,7 +408,7 @@ FS20_Parse($$) } if($newState) { my $to = sprintf("%02d:%02d:%02d", $dur/3600, ($dur%3600)/60, $dur%60); - Log 4, "Follow: +$to setstate $n $newState"; + Log3 $n, 4, "Follow: +$to setstate $n $newState"; CommandDefine(undef, $n."_timer at +$to ". "setstate $n $newState; trigger $n $newState"); $modules{FS20}{ldata}{$n} = $to; diff --git a/fhem/FHEM/DevIo.pm b/fhem/FHEM/DevIo.pm index 19d477af3..751eff9bc 100644 --- a/fhem/FHEM/DevIo.pm +++ b/fhem/FHEM/DevIo.pm @@ -82,8 +82,8 @@ DevIo_SimpleWrite($$$) return if(!$hash); my $name = $hash->{NAME}; - my $ll5 = GetLogLevel($name,5); - Log $ll5, "SW: $msg"; +print LOG "DS: $name\n"; + Log3 $name, 5, "SW: $msg"; $msg = pack('H*', $msg) if($ishex); $hash->{USBDev}->write($msg) if($hash->{USBDev}); diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 7ebd0d81b..7c8427017 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -99,6 +99,8 @@ sub setGlobalAttrBeforeFork($); sub setReadingsVal($$$$); sub evalStateFormat($); sub latin1ToUtf8($); +sub Log($$); +sub Log3($$$); sub CommandAttr($$); sub CommandDefaultAttr($$); @@ -569,21 +571,30 @@ GetLogLevel(@) ################################################ +# the new Log with integrated loglevel checking sub -Log($$) +Log3($$$) { - my ($loglevel, $text) = @_; + my ($dev, $loglevel, $text) = @_; + + if(defined($dev) && + defined($attr{$dev}) && + defined (my $devlevel = $attr{$dev}{loglevel})) { + return if($loglevel > $devlevel); - return if($loglevel > $attr{global}{verbose}); + } else { + return if($loglevel > $attr{global}{verbose}); - my @t = localtime; + } + + my ($seconds, $microseconds) = gettimeofday(); + my @t = localtime($seconds); my $nfile = ResolveDateWildcards($attr{global}{logfile}, @t); OpenLogfile($nfile) if(!$currlogfile || $currlogfile ne $nfile); my $tim = sprintf("%04d.%02d.%02d %02d:%02d:%02d", $t[5]+1900,$t[4]+1,$t[3], $t[2],$t[1],$t[0]); if($attr{global}{mseclog}) { - my ($seconds, $microseconds) = gettimeofday(); $tim .= sprintf(".%03d", $microseconds/1000); } @@ -595,6 +606,14 @@ Log($$) return undef; } +################################################ +sub +Log($$) +{ + my ($loglevel, $text) = @_; + Log3(undef, $loglevel, $text); +} + ##################################### sub @@ -2707,8 +2726,7 @@ Dispatch($$$) } } else { - Log GetLogLevel($name,3), - "$name: Unknown $mname device detected, " . + Log3 $name, 3, "$name: Unknown $mname device detected, " . "define one to get detailed information."; return undef; @@ -2718,7 +2736,7 @@ Dispatch($$$) } if(!int(@found)) { DoTrigger($name, "UNKNOWNCODE $dmsg"); - Log GetLogLevel($name,3), "$name: Unknown code $dmsg, help me!"; + Log3 $name, 3, "$name: Unknown code $dmsg, help me!"; return undef; } }