From 5954c2c8fef70bb6f9fe0d3d500ea02b9a9f3d65 Mon Sep 17 00:00:00 2001 From: jpawlowski Date: Sun, 9 Mar 2014 15:57:04 +0000 Subject: [PATCH] GUEST: add missing sleeptimer start git-svn-id: https://svn.fhem.de/fhem/trunk@5176 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/20_GUEST.pm | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/fhem/FHEM/20_GUEST.pm b/fhem/FHEM/20_GUEST.pm index 2d520d722..26be25982 100644 --- a/fhem/FHEM/20_GUEST.pm +++ b/fhem/FHEM/20_GUEST.pm @@ -23,7 +23,7 @@ # along with fhem. If not, see . # # -# Version: 1.0.2 +# Version: 1.0.3 # # Major Version History: # - 1.0.0 - 2014-02-08 @@ -37,6 +37,7 @@ use strict; use warnings; use Time::Local; use Data::Dumper; +use SetExtensions; sub GUEST_Set($@); sub GUEST_Define($$); @@ -343,7 +344,7 @@ sub GUEST_Set($@) { } elsif ( defined( $a[2] ) ) { return -"Invalid 2nd argument, choose one of home gotosleep asleep awoken absent gone "; +"Invalid 2nd argument, choose one of home gotosleep asleep awoken absent none "; } else { $newstate = $a[1]; @@ -403,6 +404,24 @@ sub GUEST_Set($@) { GUEST_Set( $hash, $name, "silentSet", "mood", $mood_default ); } + # if state is asleep, start sleep timer + readingsBulkUpdate( $hash, "lastSleep", $datetime ) + if ( $newstate eq "asleep" ); + + # if prior state was asleep, update sleep statistics + if ( $state eq "asleep" + && defined( $hash->{READINGS}{lastSleep}{VAL} ) ) + { + readingsBulkUpdate( $hash, "lastAwake", $datetime ); + readingsBulkUpdate( + $hash, + "lastDurSleep", + GUEST_TimeDiff( + $datetime, $hash->{READINGS}{lastSleep}{VAL} + ) + ); + } + # calculate presence state my $newpresence = ( $newstate ne "none" @@ -732,10 +751,13 @@ sub GUEST_AutoGone($;$) { ################################### sub GUEST_DurationTimer($;$) { my ( $mHash, @a ) = @_; - my $hash = ( $mHash->{HASH} ) ? $mHash->{HASH} : $mHash; - my $name = $hash->{NAME}; - my $state = ( $hash->{READINGS}{state}{VAL} ) ? $hash->{READINGS}{state}{VAL} : "initialized"; - my $silent = ( defined( $a[0] ) && $a[0] eq "1" ) ? 1 : 0; + my $hash = ( $mHash->{HASH} ) ? $mHash->{HASH} : $mHash; + my $name = $hash->{NAME}; + my $state = + ( $hash->{READINGS}{state}{VAL} ) + ? $hash->{READINGS}{state}{VAL} + : "initialized"; + my $silent = ( defined( $a[0] ) && $a[0] eq "1" ) ? 1 : 0; my $timestampNow = gettimeofday(); my $diff; my $durPresence = "0";