diff --git a/fhem/FHEM/98_freezemon.pm b/fhem/FHEM/98_freezemon.pm index 0af7127bf..84595a39c 100644 --- a/fhem/FHEM/98_freezemon.pm +++ b/fhem/FHEM/98_freezemon.pm @@ -22,6 +22,9 @@ # ############################################################################## # Changelog: +# 0.0.27: Slightly improved device detection +# added set Command getFreezes to enable usage of webCmd +# fixed some commandref typos # 0.0.26: Get command for Statistics # remove trailing/leading whitespace for ignored devices # 0.0.25: Further improved statistics function and clear statistics @@ -106,7 +109,7 @@ use B qw(svref_2object); use Blocking; use vars qw($FW_CSRF); -my $version = "0.0.26"; +my $version = "0.0.27"; my @logqueue = (); my @fmCmd = (); @@ -583,7 +586,7 @@ sub freezemon_ProcessTimer($) { sub freezemon_Set($@) { my ( $hash, $name, $cmd, @args ) = @_; my $usage = - "Unknown argument $cmd, choose one of active:noArg inactive:noArg clear:statistics_all,statistics_low,all"; +"Unknown argument $cmd, choose one of getFreezes:noArg active:noArg inactive:noArg clear:statistics_all,statistics_low,all"; return "\"set $name\" needs at least one argument" unless ( defined($cmd) ); @@ -638,6 +641,34 @@ sub freezemon_Set($@) { return "unknown argument $args[0]"; } } + elsif ( $cmd eq "getFreezes" ) { + my $ret = ""; + my @colors = ( "red", "yellow", "green", "white", "gray" ); + my @freezes = split( ",", ReadingsVal( $name, ".fm_freezes", "" ) ); + foreach (@freezes) { + my $loglevel = 1; + my $freeze = $_; + if ( $freeze =~ /f:(.*)d:/ ) { + $freeze = $1; + } + my %params = map { split /\:/, $_ } ( split /\ /, AttrVal( $name, "fm_log", "" ) ); + foreach my $param ( reverse sort { $a <=> $b } keys %params ) { + if ( $freeze > $param ) { + $loglevel = $params{$param}; + last; + } + } + $_ =~ s/(?<=.{240}).{1,}$/.../; + $_ =~ s/&%%CSRF%%/$FW_CSRF/; + $_ =~ s/#&%/,/g; + $ret .= "" . $loglevel . " - " . $_ . "
"; + + } + + return "" . $ret . ""; + + } + else { return $usage; } @@ -1035,13 +1066,24 @@ sub freezemon_getDevice($$) { #Log3 $name, 5, "[Freezemon] $name found a REF $fn " . Dumper( ${$arg} ); } } + elsif ( ref($shortarg) eq "" ) { + Log3 $name, 5, + "[Freezemon] $name found something that's not a REF $fn " . ref($shortarg) . " " . Dumper($shortarg); + + ( undef, $shortarg ) = split( /:|;/, $shortarg, 2 ); + } + else { - #Log3 $name, 3, "[Freezemon] $name found something that's not a HASH $fn ".ref($shortarg)." ".Dumper($shortarg); + Log3 $name, 5, + "[Freezemon] $name found something that's a REF but not a HASH $fn " + . ref($shortarg) . " " + . Dumper($shortarg); + $shortarg = "N/A"; } if ( !defined($shortarg) ) { - #Log3 $name, 5, "Freezemon: something went wrong $fn " . Dumper($arg); + Log3 $name, 5, "Freezemon: something went wrong $fn " . Dumper($arg); $shortarg = "N/A"; } else { @@ -1502,14 +1544,14 @@ sub freezemon_getLogPath($) {

freezemon