From 78903948ae6afc7659e1957d03a84b741cfbba5b Mon Sep 17 00:00:00 2001 From: loredo Date: Sun, 30 Aug 2015 17:00:58 +0000 Subject: [PATCH] 70_Pushover: add internal timer for regular connectivity check to Pushover backend API git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@9177 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/70_Pushover.pm | 45 +++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/fhem/FHEM/70_Pushover.pm b/fhem/FHEM/70_Pushover.pm index 0bf0d0da6..443488f2c 100644 --- a/fhem/FHEM/70_Pushover.pm +++ b/fhem/FHEM/70_Pushover.pm @@ -129,13 +129,9 @@ sub Pushover_Define($$) { if ( !Pushover_addExtension( $name, "Pushover_CGI", $infix ) ); } - readingsSingleUpdate( $hash, "state", "initialized", 0 ); - - my $cmd = "token=" . $token . "&user=" . $user; - $cmd .= "&" . AttrVal( $hash, "device", "" ) - if ( AttrVal( $hash, "device", "" ) ne "" ); - - Pushover_SendCommand( $hash, "users/validate.json", $cmd ); + # start Validation Timer + RemoveInternalTimer($hash); + InternalTimer( gettimeofday() + 5, "Pushover_ValidateUser", $hash, 0 ); return undef; } @@ -478,6 +474,19 @@ sub Pushover_ReceiveCommand($$$) { } } + + # simple error handling if no JSON module was loaded + elsif ( $return !~ m/"status":1,/ ) { + $state = "unauthorized"; + if ( $return =~ m/"errors":\[(.*)\]/ ) { + $values{result} = "Error: " . $1; + } + else { + $values{result} = "Unspecified error"; + } + } + + Pushover_SendCommand( $hash, "users/validate.json", $cmd ); } readingsBulkUpdate( $hash, "lastResult", $values->{result} ); @@ -496,6 +505,28 @@ sub Pushover_ReceiveCommand($$$) { return; } +#------------------------------------------------------------------------------ +sub Pushover_ValidateUser ($;$) { + my ( $hash, $update ) = @_; + my $name = $hash->{NAME}; + + Log3 $name, 5, "Pushover $name: called function Pushover_ValidateUser()"; + + RemoveInternalTimer($hash); + InternalTimer( gettimeofday() + 600, "Pushover_ValidateUser", $hash, 0 ); + + return + if ( AttrVal( $name, "disable", 0 ) == 1 ); + + my $cmd = "token=" . $token . "&user=" . $user; + $cmd .= "&" . AttrVal( $hash, "device", "" ) + if ( AttrVal( $hash, "device", "" ) ne "" ); + + Pushover_SendCommand( $hash, "users/validate.json", $cmd ); + + return; +} + #------------------------------------------------------------------------------ sub Pushover_SetMessage { my $hash = shift;