From a76ab777ac25ffb463a2deb258f1c519eff3788c Mon Sep 17 00:00:00 2001 From: jpawlowski Date: Mon, 11 May 2015 06:33:33 +0000 Subject: [PATCH] ROOMMATE, GUEST, RESIDENTS: stop any running wakeuptimers if user went away git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@8565 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/10_RESIDENTS.pm | 13 +++++++++++++ FHEM/20_GUEST.pm | 13 +++++++++++++ FHEM/20_ROOMMATE.pm | 13 +++++++++++++ 3 files changed, 39 insertions(+) diff --git a/FHEM/10_RESIDENTS.pm b/FHEM/10_RESIDENTS.pm index 975fb315b..e448868a5 100644 --- a/FHEM/10_RESIDENTS.pm +++ b/FHEM/10_RESIDENTS.pm @@ -925,6 +925,19 @@ sub RESIDENTS_UpdateReadings (@) { $newstate = "unspecified"; } + # stop any running wakeup-timers in case user went away + if ( $newstate eq "away" || $newstate eq "gone"|| $newstate eq "none" ) { + my $wakeupDeviceList = AttrVal( $name, "rgr_wakeupDevice", 0 ); + + for my $wakeupDevice ( split /,/, $wakeupDeviceList ) { + next if !$wakeupDevice; + + if ( defined( $defs{$wakeupDevice} ) && $defs{$wakeupDevice}{TYPE} eq "dummy" ) { + fhem "set $wakeupDevice:FILTER=running!=0 stop"; + } + } + } + # calculate presence state $presence = "present" if ( $newstate ne "gone" diff --git a/FHEM/20_GUEST.pm b/FHEM/20_GUEST.pm index 4ad0fc5c8..61eee0477 100644 --- a/FHEM/20_GUEST.pm +++ b/FHEM/20_GUEST.pm @@ -463,6 +463,19 @@ sub GUEST_Set($@) { ); } + # stop any running wakeup-timers in case user went away + if ( $newstate eq "away" || $newstate eq "gone" ) { + my $wakeupDeviceList = AttrVal( $name, "rg_wakeupDevice", 0 ); + + for my $wakeupDevice ( split /,/, $wakeupDeviceList ) { + next if !$wakeupDevice; + + if ( defined( $defs{$wakeupDevice} ) && $defs{$wakeupDevice}{TYPE} eq "dummy" ) { + fhem "set $wakeupDevice:FILTER=running!=0 stop"; + } + } + } + # calculate presence state my $newpresence = ( $newstate ne "none" diff --git a/FHEM/20_ROOMMATE.pm b/FHEM/20_ROOMMATE.pm index 0d7f87336..0ccf0aa04 100644 --- a/FHEM/20_ROOMMATE.pm +++ b/FHEM/20_ROOMMATE.pm @@ -464,6 +464,19 @@ sub ROOMMATE_Set($@) { ) ); } + + # stop any running wakeup-timers in case user went away + if ( $newstate eq "away" || $newstate eq "gone"|| $newstate eq "none" ) { + my $wakeupDeviceList = AttrVal( $name, "rr_wakeupDevice", 0 ); + + for my $wakeupDevice ( split /,/, $wakeupDeviceList ) { + next if !$wakeupDevice; + + if ( defined( $defs{$wakeupDevice} ) && $defs{$wakeupDevice}{TYPE} eq "dummy" ) { + fhem "set $wakeupDevice:FILTER=running!=0 stop"; + } + } + } # calculate presence state my $newpresence =