From e383e174bc5a57069446854f58beddf24cad0c9c Mon Sep 17 00:00:00 2001 From: mgernoth <> Date: Mon, 5 Sep 2016 08:04:05 +0000 Subject: [PATCH] 00_HMUARTLGW.pm: resolve names in logIDs git-svn-id: https://svn.fhem.de/fhem/trunk@12119 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_HMUARTLGW.pm | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/fhem/FHEM/00_HMUARTLGW.pm b/fhem/FHEM/00_HMUARTLGW.pm index 7c7918a54..bb3311bc4 100644 --- a/fhem/FHEM/00_HMUARTLGW.pm +++ b/fhem/FHEM/00_HMUARTLGW.pm @@ -9,7 +9,6 @@ # TODO: # - Filter out "A112" from CUL_HM and synthesize response # - Hide crypto state from list so it can be binary -# - resolve names in logIDs package main; @@ -192,7 +191,8 @@ sub HMUARTLGW_DoInit($) $hash->{LGW_Init} = 1 if ($hash->{DevType} =~ m/^LGW/); - $hash->{Helper}{log} = [ split(/,/, AttrVal($name, "logIDs", "")) ]; + $hash->{Helper}{Log}{IDs} = [ split(/,/, AttrVal($name, "logIDs", "")) ]; + $hash->{Helper}{Log}{Resolve} = 1; RemoveInternalTimer($hash); @@ -1800,14 +1800,12 @@ sub HMUARTLGW_Attr(@) if ($cmd eq "set") { my @ids = split(/,/, $aVal); - return "wrong syntax: logIDs can only contain hmIDs, \"sys\" and \"all\"" - if (grep(!/^([\dabcdef]{6}|sys|all)$/i, @ids)); - - $hash->{Helper}{log} = \@ids; + $hash->{Helper}{Log}{IDs} = \@ids; + $hash->{Helper}{Log}{Resolve} = 1; $attr{$name}{$aName} = $aVal; } else { delete $attr{$name}{$aName}; - delete $hash->{Helper}{log}; + delete $hash->{Helper}{Log}; } } @@ -2242,10 +2240,23 @@ sub HMUARTLGW_getVerbLvl($$$$) { $hash = $hash->{lgwHash} if (defined($hash->{lgwHash})); - return (grep /^sys$/i, @{$hash->{Helper}{log}}) ? 0 : $def + #Lookup IDs on change + if (defined($hash->{Helper}{Log}{Resolve}) && $init_done) { + foreach my $id (@{$hash->{Helper}{Log}{IDs}}) { + next if ($id =~ /^([\da-f]{6}|sys|all)$/i); + + my $newId = substr(CUL_HM_name2Id($id),0,6); + next if ($newId !~ /^[\da-f]{6}$/i); + + $id = $newId; + } + delete($hash->{Helper}{Log}{Resolve}); + } + + return (grep /^sys$/i, @{$hash->{Helper}{Log}{IDs}}) ? 0 : $def if ((!defined($src)) || (!defined($dst))); - return (grep /^($src|$dst|all)$/i, @{$hash->{Helper}{log}}) ? 0 : $def; + return (grep /^($src|$dst|all)$/i, @{$hash->{Helper}{Log}{IDs}}) ? 0 : $def; } 1; @@ -2357,8 +2368,7 @@ sub HMUARTLGW_getVerbLvl($$$$) {
  • logIDs
    Enables selective logging of HMUARTLGW messages. A list of comma separated - HMIds can be entered which shall be logged. The attribute only allows - device-IDs, not channel IDs.
    + HMIds or HM device names/channel names can be entered which shall be logged.