From dbe7e3da6b19d8d01739d0e6aefe3d0b4b5553ec Mon Sep 17 00:00:00 2001 From: DeeSPe Date: Fri, 12 May 2017 20:36:09 +0000 Subject: [PATCH] 22_HOMEMODE: fix using old lastActivityResident on arrival git-svn-id: https://svn.fhem.de/fhem/trunk@14259 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/22_HOMEMODE.pm | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/fhem/FHEM/22_HOMEMODE.pm b/fhem/FHEM/22_HOMEMODE.pm index d6e200382..fba336317 100644 --- a/fhem/FHEM/22_HOMEMODE.pm +++ b/fhem/FHEM/22_HOMEMODE.pm @@ -255,6 +255,7 @@ sub HOMEMODE_Notify($$) $residentregex = $regex; } return if (!$resident); + $hash->{helper}{lar} = $resident; if (ReadingsVal($devname,"presence","") !~ /^maybe/) { my @presentdevicespresent; @@ -265,6 +266,10 @@ sub HOMEMODE_Notify($$) } if (grep /^.*:\s(present|appeared)$/,@{$events}) { + readingsBeginUpdate($hash); + readingsBulkUpdate($hash,"lastActivityByPresenceDevice",$devname); + readingsBulkUpdate($hash,"lastPresentByPresenceDevice",$devname); + readingsEndUpdate($hash,1); push @commands,$attr{$name}{"HomeCMDpresence-present-device"} if ($attr{$name}{"HomeCMDpresence-present-device"}); push @commands,$attr{$name}{"HomeCMDpresence-present-$resident-device"} if ($attr{$name}{"HomeCMDpresence-present-$resident-device"}); push @commands,$attr{$name}{"HomeCMDpresence-present-$resident-$devname"} if ($attr{$name}{"HomeCMDpresence-present-$resident-$devname"}); @@ -273,13 +278,13 @@ sub HOMEMODE_Notify($$) { CommandSet(undef,"$resident:FILTER=state!=home state home"); } - readingsBeginUpdate($hash); - readingsBulkUpdate($hash,"lastActivityByPresenceDevice",$devname); - readingsBulkUpdate($hash,"lastPresentByPresenceDevice",$devname); - readingsEndUpdate($hash,1); } elsif (grep /^.*:\s(absent|disappeared)$/,@{$events}) { + readingsBeginUpdate($hash); + readingsBulkUpdate($hash,"lastActivityByPresenceDevice",$devname); + readingsBulkUpdate($hash,"lastAbsentByPresenceDevice",$devname); + readingsEndUpdate($hash,1); push @commands,$attr{$name}{"HomeCMDpresence-absent-device"} if ($attr{$name}{"HomeCMDpresence-absent-device"}); push @commands,$attr{$name}{"HomeCMDpresence-absent-$resident-device"} if ($attr{$name}{"HomeCMDpresence-absent-$resident-device"}); push @commands,$attr{$name}{"HomeCMDpresence-absent-$resident-$devname"} if ($attr{$name}{"HomeCMDpresence-absent-$resident-$devname"}); @@ -291,10 +296,6 @@ sub HOMEMODE_Notify($$) { CommandSet(undef,"$resident:FILTER=state!=absent state absent"); } - readingsBeginUpdate($hash); - readingsBulkUpdate($hash,"lastActivityByPresenceDevice",$devname); - readingsBulkUpdate($hash,"lastAbsentByPresenceDevice",$devname); - readingsEndUpdate($hash,1); } } } @@ -780,6 +781,8 @@ sub HOMEMODE_set_modeAlarm($$$) { my ($name,$option,$amode) = @_; my $hash = $defs{$name}; + my $resident = $hash->{helper}{lar} ? $hash->{helper}{lar} : ReadingsVal($name,"lastActivityByResident",""); + delete $hash->{helper}{lar} if ($hash->{helper}{lar}); my @commands; push @commands,$attr{$name}{"HomeCMDmodeAlarm"} if ($attr{$name}{"HomeCMDmodeAlarm"}); push @commands,$attr{$name}{"HomeCMDmodeAlarm-$option"} if ($attr{$name}{"HomeCMDmodeAlarm-$option"}); @@ -788,7 +791,7 @@ sub HOMEMODE_set_modeAlarm($$$) readingsBulkUpdate($hash,"modeAlarm",$option); readingsEndUpdate($hash,1); HOMEMODE_TriggerState($hash) if ($hash->{SENSORSCONTACT} || $hash->{SENSORSMOTION}); - HOMEMODE_execCMDs($hash,HOMEMODE_serializeCMD($hash,@commands)) if (@commands); + HOMEMODE_execCMDs($hash,HOMEMODE_serializeCMD($hash,@commands),$resident) if (@commands); } sub HOMEMODE_execCMDs_belated($$$)