From 0bfa50910bbb33c1e0905aa091c69dc0b8555f13 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Wed, 16 Oct 2013 06:23:38 +0000 Subject: [PATCH] structure: relativeKnown fix git-svn-id: https://svn.fhem.de/fhem/trunk@4051 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_structure.pm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/98_structure.pm b/fhem/FHEM/98_structure.pm index 2b813d375..6a7618252 100755 --- a/fhem/FHEM/98_structure.pm +++ b/fhem/FHEM/98_structure.pm @@ -208,7 +208,10 @@ sub structure_Notify($$) } } if(defined($devstate)) { - return "" if(!$priority{$devstate} && $behavior eq "relativeKnown"); + if(!$priority{$devstate} && $behavior eq "relativeKnown") { + delete($hash->{INNTFY}); + return ""; + } $minprio = $priority{$devstate} if($priority{$devstate} && $priority{$devstate} < $minprio); $clientstate{$devstate} = 1; @@ -218,7 +221,10 @@ sub structure_Notify($$) } else { $devstate = ReadingsVal($d, "state", undef); if(defined($devstate)) { - return "" if(!$priority{$devstate} && $behavior eq "relativeKnown"); + if(!$priority{$devstate} && $behavior eq "relativeKnown") { + delete($hash->{INNTFY}); + return ""; + } $minprio = $priority{$devstate} if($priority{$devstate} && $priority{$devstate} < $minprio); $clientstate{$devstate} = 1; @@ -232,7 +238,7 @@ sub structure_Notify($$) my @cKeys = keys %clientstate; $newState = (@cKeys == 1 ? $cKeys[0] : "undefined"); - } elsif($behavior eq "relative" && $minprio < 99999) { + } elsif($behavior =~ "^relative" && $minprio < 99999) { $newState = $priority[$minprio]; } elsif($behavior eq "last"){ @@ -244,7 +250,8 @@ sub structure_Notify($$) " because device $dev->{NAME} has changed"; readingsBeginUpdate($hash); readingsBulkUpdate($hash, "LastDevice", $dev->{NAME}); - readingsBulkUpdate($hash, "LastDevice_Abs", structure_getChangedDevice($dev->{NAME})); + readingsBulkUpdate($hash, "LastDevice_Abs", + structure_getChangedDevice($dev->{NAME})); readingsBulkUpdate($hash, "state", $newState); readingsEndUpdate($hash, 1);