diff --git a/98_TadoAPI.pm b/98_TadoAPI.pm index 1ee2c15..cd5fb00 100644 --- a/98_TadoAPI.pm +++ b/98_TadoAPI.pm @@ -81,6 +81,8 @@ TadoAPI_Initialize($) "showPosData:0,1 " . "updateIntervall " . $main::readingFnAttributes; + + return; } sub TadoAPI_Init($$) @@ -88,6 +90,7 @@ sub TadoAPI_Init($$) my ($hash,$args) = @_; my $u = "wrong syntax: define TadoAPI []"; return $u if(int(@$args) < 2); + return; } sub TadoAPI_Define($$) @@ -140,6 +143,7 @@ sub TadoAPI_Define($$) }else{ $hash->{STATE}="no password set"; } + return; } sub TadoAPI_Set(@) { @@ -269,6 +273,7 @@ sub TadoAPI_Set(@) { } return $message if $message; return TadoAPI_Catch($@) if $@; + return; } sub TadoAPI_Get(@) { @@ -367,6 +372,7 @@ sub TadoAPI_Get(@) { } return $message if $message; return TadoAPI_Catch($@) if $@; + return; } } @@ -376,6 +382,7 @@ sub TadoAPI_Catch($) { $exception =~ /^(.*)( at.*FHEM.*)$/; return $1; } + return; } sub TadoAPI_Undefine($$) { @@ -383,6 +390,7 @@ sub TadoAPI_Undefine($$) { RemoveInternalTimer($hash); #todo remove tokenfile + return; } sub TadoAPI_CheckStatus(@){ @@ -401,6 +409,7 @@ sub TadoAPI_CheckStatus(@){ #test if api is reachable Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $AuthURL"; HttpUtils_NonblockingGet($param); + return; } sub TadoAPI_LoadToken(@){ @@ -412,9 +421,10 @@ sub TadoAPI_LoadToken(@){ my $Token = undef; if($apiStatus){ - eval { open(my $TOKENFILE, '<', $tokenFileName) or die("ERROR: $!"); - $Token = decode_json(<$TOKENFILE>)}; + close($TOKENFILE); + eval { $Token = decode_json($TOKENFILE)}; + if($@ || $tokenLifeTime < gettimeofday()){ Log3 $name, 5, "TadoAPI $name" . ": " . "Error while loading: $@ ,requesting new one" if $@; Log3 $name, 5, "TadoAPI $name" . ": " . "Token is expired, requesting new one" if $tokenLifeTime < gettimeofday(); @@ -428,10 +438,10 @@ sub TadoAPI_LoadToken(@){ $Token = TadoAPI_TokenRefresh($hash); } } - close($TOKENFILE); return $Token if $Token; } - TadoAPI_CheckStatus($hash); + TadoAPI_CheckStatus($hash); + return; } sub TadoAPI_NewTokenRequest(@) { @@ -488,17 +498,19 @@ sub TadoAPI_NewTokenRequest(@) { return $decoded_data; } } + return; } sub TadoAPI_TokenRefresh(@) { my ($hash) = @_; my $name = $hash->{NAME}; my $tokenFileName = $tokenFile."_".$name; + my $Token = undef; # load token - eval { - open(my $TOKENFILE, '<', $hash->{TOKEN_FILE}) or die("ERROR: $!"); - $TokenData = decode_json(<$TOKENFILE>)}; + open(my $TOKENFILE, '<', $tokenFileName) or die("ERROR: $!"); + close($TOKENFILE); + eval { $Token = decode_json($TOKENFILE)}; $data = { client_id => $client_id, @@ -537,8 +549,8 @@ sub TadoAPI_TokenRefresh(@) { }else{ #write token data in file open(my $TOKENFILE, q{>}, $tokenFileName) or die("ERROR: $!"); - print TOKENFILE $data . "\n"; - close(TOKENFILE); + print $TOKENFILE $data . "\n"; + close($TOKENFILE); # token lifetime management $hash->{TOKEN_LIFETIME} = gettimeofday() + $decoded_data->{'expires_in'}; @@ -548,6 +560,7 @@ sub TadoAPI_TokenRefresh(@) { return $decoded_data; } } + return; } sub TadoAPI_Update(@){ @@ -570,6 +583,7 @@ sub TadoAPI_Update(@){ # update subs TadoAPI_UpdateFn($hash); + return; } ######################## tado methods ######################## @@ -689,6 +703,7 @@ sub TadoAPI_SetZoneOverlayById(@){ Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL"; HttpUtils_NonblockingGet($request); } + return; } sub TadoAPI_SetAllOverlays(@){ @@ -705,6 +720,7 @@ sub TadoAPI_SetAllOverlays(@){ TadoAPI_SetZoneOverlayById($hash, $zoneID, $setting); } } + return; } sub TadoAPI_GetAllZoneOverlays(@){ @@ -718,6 +734,7 @@ sub TadoAPI_GetAllZoneOverlays(@){ my ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay ) = TadoAPI_GetZoneReadingsById($hash, $zoneID); readingsSingleUpdate($hash, "OverlayType_" . $zoneName, $overlay, 1); } + return; } sub TadoAPI_UpdateFn(@){ @@ -755,6 +772,7 @@ sub TadoAPI_UpdateFn(@){ Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL"; HttpUtils_NonblockingGet($request); } + return; } ######################################################################################################################################################################## @@ -776,6 +794,7 @@ sub TadoAPI_callback($){ $hash->{STATE}="error"; Log3 $name, 3, "TadoAPI $name" . ": " . "API error: apiStatus $apiStatus ($err)"; } + return; } sub TadoAPI_UpdateAllZoneReadingsCallback($){ @@ -829,6 +848,7 @@ sub TadoAPI_UpdateAllZoneReadingsCallback($){ readingsEndUpdate( $hash, 0 ); $hash->{LastRequest}="OK"; } + return; } sub Tado_UpdateZoneOverlayCallback($) @@ -871,6 +891,7 @@ sub Tado_UpdateZoneOverlayCallback($) readingsDelete($hash, "Zone" . $zoneID . "Lock"); } } + return; } sub TadoAPI_LogInfoCallback($){ @@ -887,6 +908,7 @@ sub TadoAPI_LogInfoCallback($){ { Log3 $name, 3, "TadoAPI $name" . ": " . $param->{infotext} .":\n" . $data . "\n"; } + return; } sub TadoAPI_SetGeoByIdCallback($){ @@ -902,6 +924,7 @@ sub TadoAPI_SetGeoByIdCallback($){ { Log3 $name, 3, "url ".$param->{url}." returned: $data"; } + return; } sub TadoAPI_UpdateMobileReadingsCallback($){ @@ -932,6 +955,7 @@ sub TadoAPI_UpdateMobileReadingsCallback($){ } } } + return; } sub TadoAPI_GetZoneInfo(@) { @@ -1018,6 +1042,7 @@ sub TadoAPI_GetZoneInfo(@) { HttpUtils_NonblockingGet($request); } } + return; } sub TadoAPI_SetGeoById(@){ @@ -1049,6 +1074,7 @@ sub TadoAPI_SetGeoById(@){ Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL"; HttpUtils_NonblockingGet($request); } + return; } ###################################### @@ -1068,6 +1094,7 @@ sub TadoAPI_SetTimedZoneOverlay(@){ my ($hash, $zoneID, $duration, $setting) = @_; my $name = $hash->{NAME}; TadoAPI_SetZoneOverlayById($hash, $zoneID, $setting, $duration); + return; } @@ -1108,6 +1135,7 @@ sub TadoAPI_GetHomeId(@){ } } } + return; } sub TadoAPI_GetGeoById(@){ @@ -1158,6 +1186,7 @@ sub TadoAPI_GetGeoById(@){ Log3 $name, 5, "TadoAPI $name" . ": " . "GetGeoById: parsing passed item"; return my ($setting, $distance) = TadoAPI_ParseMobileItem($hash, $item); } + return; } sub TadoAPI_ParseMobileItem(@){ @@ -1233,6 +1262,7 @@ sub TadoAPI_GetMobileDevices(@) { } } } + return; } sub TadoAPI_GetZoneCount(@) { @@ -1280,6 +1310,7 @@ sub TadoAPI_GetZoneCount(@) { } } } + return; } sub TadoAPI_GetZoneNameById(@) { @@ -1295,6 +1326,7 @@ sub TadoAPI_GetZoneNameById(@) { } } Log3 $name, 3, "TadoAPI $name" . ": " . "Error GetZoneNameById: Wrong zone ID ($zoneID)"; + return; } sub TadoAPI_GetZoneReadingsById(@){ @@ -1348,6 +1380,7 @@ sub TadoAPI_GetZoneReadingsById(@){ } } } + return; } sub TadoAPI_GetTadoDevices(@) { @@ -1393,6 +1426,7 @@ sub TadoAPI_GetTadoDevices(@) { } } } + return; } ###################################################### @@ -1460,6 +1494,7 @@ sub TadoAPI_readPassword($) else { Log3 $name,3,"$name, no Tado password found in FhemUtils/uniqueID"; + return; } }