update function with blocking call; shoud fix fhem timeouts
This commit is contained in:
parent
470c4e135a
commit
2d32913bef
@ -210,7 +210,7 @@ sub TadoAPI_Set(@) {
|
||||
|
||||
} elsif( $cmd eq 'update' ) {
|
||||
Log3 $name, 3, "TadoAPI: set $name: processing ($cmd)";
|
||||
TadoAPI_UpdateFn($hash);
|
||||
TadoAPI_UpdateFnNb($hash);
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "$cmd finished\n";
|
||||
|
||||
} elsif( $cmd eq 'zoneUpdate' ) {
|
||||
@ -534,7 +534,7 @@ sub TadoAPI_Update(@){
|
||||
InternalTimer( $nextTimer, "TadoAPI_Update", $hash, 0 );
|
||||
|
||||
# update subs
|
||||
TadoAPI_UpdateFn($hash);
|
||||
TadoAPI_UpdateFnNb($hash);
|
||||
|
||||
return undef;
|
||||
}
|
||||
@ -674,8 +674,14 @@ sub TadoAPI_SetAllOverlays(@){
|
||||
}
|
||||
}
|
||||
}
|
||||
###### main update function
|
||||
sub TadoAPI_UpdateFnNb(@){
|
||||
my ($hash) = @_;
|
||||
delete($hash->{helper}{RUNNING_PID});
|
||||
$hash->{helper}{RUNNING_PID} = BlockingCall("TadoAPI_DoUpdate", $hash,"TadoAPI_UpdateFnNbDone", 120, "TadoAPI_UpdateFnNbAborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}));
|
||||
}
|
||||
|
||||
sub TadoAPI_UpdateFn(@){
|
||||
sub TadoAPI_DoUpdate($){
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
@ -702,14 +708,33 @@ sub TadoAPI_UpdateFn(@){
|
||||
url => $URL,
|
||||
header => { "Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}" },
|
||||
method => 'GET',
|
||||
timeout => 10,
|
||||
timeout => 15,
|
||||
incrementalTimout => 1,
|
||||
callback => \&TadoAPI_UpdateMobileReadingsCallback,
|
||||
hash => $hash
|
||||
};
|
||||
HttpUtils_NonblockingGet($request);
|
||||
|
||||
}
|
||||
return $name;
|
||||
}
|
||||
|
||||
sub TadoAPI_UpdateFnNbDone($){
|
||||
my ($string) = @_;
|
||||
|
||||
return unless(defined($string));
|
||||
|
||||
my @a = split("\\|",$string);
|
||||
my $hash = $defs{$a[0]};
|
||||
|
||||
delete($hash->{helper}{RUNNING_PID});
|
||||
Log3 $hash->{NAME}, 3, "BlockingCall for ".$hash->{NAME}." was DONE";
|
||||
}
|
||||
|
||||
sub TadoAPI_UpdateFnNbAborted($){
|
||||
my ($hash) = @_;
|
||||
|
||||
delete($hash->{helper}{RUNNING_PID});
|
||||
Log3 $hash->{NAME}, 3, "BlockingCall for ".$hash->{NAME}." was aborted";
|
||||
}
|
||||
|
||||
########################################################################################################################################################################
|
||||
|
Loading…
x
Reference in New Issue
Block a user