From 7dd13d362af46d81d322b36ce1b125c63ebd73c6 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Mon, 9 Jan 2017 15:16:44 +0000 Subject: [PATCH] 93_FHEM2FHEM.pm: add attributes excludeEvents and eventOnly (Forum #62369) git-svn-id: https://svn.fhem.de/fhem/trunk@13024 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/93_FHEM2FHEM.pm | 52 ++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/fhem/FHEM/93_FHEM2FHEM.pm b/fhem/FHEM/93_FHEM2FHEM.pm index 0ccb0f8f7..1e97bed26 100755 --- a/fhem/FHEM/93_FHEM2FHEM.pm +++ b/fhem/FHEM/93_FHEM2FHEM.pm @@ -31,7 +31,8 @@ FHEM2FHEM_Initialize($) # Normal devices $hash->{DefFn} = "FHEM2FHEM_Define"; $hash->{UndefFn} = "FHEM2FHEM_Undef"; - $hash->{AttrList}= "dummy:1,0 disable:0,1 disabledForIntervals"; + $hash->{AttrList}= "dummy:1,0 disable:0,1 ". + "disabledForIntervals excludeEvents eventOnly:1,0"; } ##################################### @@ -138,6 +139,7 @@ FHEM2FHEM_Read($) } return if(IsDisabled($name)); + my $excl = AttrVal($name, "excludeEvents", undef); my $data = $hash->{PARTIAL}; #Log3 $hash, 5, "FHEM2FHEM/RAW: $data/$buf"; @@ -149,26 +151,31 @@ FHEM2FHEM_Read($) $rmsg =~ s/\r//; if($hash->{informType} eq "LOG") { - my ($type, $name, $msg) = split(" ", $rmsg, 3); + my ($type, $rname, $msg) = split(" ", $rmsg, 3); next if(!defined($msg)); # Bogus data my $re = $hash->{regexp}; - next if($re && !($name =~ m/^$re$/ || "$name:$msg" =~ m/^$re$/)); - Log3 $name, 4, "$name: $rmsg"; + next if($re && !($rname =~ m/^$re$/ || "$rname:$msg" =~ m/^$re$/)); + next if($excl && ($rname =~ m/^$excl$/ || "$rname:$msg" =~ m/^$excl$/)); + Log3 $name, 4, "$rname: $rmsg"; - if(!$defs{$name}) { - $defs{$name}{NAME} = $name; - $defs{$name}{TYPE} = $type; - $defs{$name}{STATE} = $msg; - $defs{$name}{FAKEDEVICE} = 1; # Avoid set/attr/delete/etc in notify - $defs{$name}{TEMPORARY} = 1; # Do not save it - DoTrigger($name, $msg); - delete($defs{$name}); + if(!$defs{$rname}) { + $defs{$rname}{NAME} = $rname; + $defs{$rname}{TYPE} = $type; + $defs{$rname}{STATE} = $msg; + $defs{$rname}{FAKEDEVICE} = 1; # Avoid set/attr/delete/etc in notify + $defs{$rname}{TEMPORARY} = 1; # Do not save it + DoTrigger($rname, $msg); + delete($defs{$rname}); } else { - if($msg =~ m/^([^:]*): (.*)$/) { - readingsSingleUpdate($defs{$name}, $1, $2, 1); + if(AttrVal($name,"eventOnly",0)) { + DoTrigger($rname, $msg); } else { - DoTrigger($name, $msg); + if($msg =~ m/^([^:]*): (.*)$/) { + readingsSingleUpdate($defs{$rname}, $1, $2, 1); + } else { + readingsSingleUpdate($defs{$rname}, "state", $msg, 1); + } } } @@ -416,6 +423,13 @@ FHEM2FHEM_Set($@)
  • dummy
  • disable
  • disabledForIntervals
  • +
  • eventOnly
    + if set, generate only events, do not set corresponding readings. + This is a compatibility feature, available only for LOG-Mode. +
  • +
  • excludeEvents <regexp> + do not publish events matching <regexp> +
  • @@ -517,6 +531,14 @@ FHEM2FHEM_Set($@)
  • dummy
  • disable
  • disabledForIntervals
  • +
  • eventOnly
    + falls gesetzt, werden nur die Events generiert, und es wird kein + Reading aktualisiert. Ist nur im LOG-Mode aktiv. +
  • +
  • excludeEvents <regexp> + die auf das <regexp> zutreffende Events werden nicht + bereitgestellt. +