From 03b2130625ba46f67d1d2782e4cc029ca5d9b157 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 21 May 2024 10:29:07 +0200 Subject: [PATCH] fix: api call,rate limit --- FHEM/73_GardenaSmartBridge.pm | 33 ++++++++++++++++++++++++++------- controls_GardenaSmartDevice.txt | 4 ++-- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/FHEM/73_GardenaSmartBridge.pm b/FHEM/73_GardenaSmartBridge.pm index 524578e..ba44fe7 100644 --- a/FHEM/73_GardenaSmartBridge.pm +++ b/FHEM/73_GardenaSmartBridge.pm @@ -264,6 +264,8 @@ sub Attr { if ( $cmd eq 'set' && $attrVal eq '1' ) { RemoveInternalTimer( $hash, "FHEM::GardenaSmartBridge::getDevices" ); + RemoveInternalTimer( $hash, + "FHEM::GardenaSmartBridge::getToken" ); readingsSingleUpdate( $hash, 'state', 'inactive', 1 ); Log3 $name, 3, "GardenaSmartBridge ($name) - disabled"; } @@ -691,6 +693,20 @@ sub ErrorHandling { "GardenaSmartBridge ($dname) - RequestERROR: check the ???"; } + elsif ( $decode_json->{errors}[0]{code} eq "ratelimit.exceeded" ) { + Log3 $dname, 5, + "GardenaSmartBridge ($dname) - RequestERROR: error ratelimit.exceeded"; + readingsBulkUpdate( $dhash, "lastRequestState", "too many requests", 1 ); + readingsBulkUpdate( $dhash, "state", "inactive", 1 ); + # remove all timer and disable bridge + readingsBulkUpdate( $dhash, "disable", "1", 1 ); +# AttrVal( $name, 'disable', '1'); + RemoveInternalTimer( $dhash, "FHEM::GardenaSmartBridge::getDevices" ); + RemoveInternalTimer( $dhash, "FHEM::GardenaSmartBridge::getToken" ); + + + return; # post request max. + } else { Log3 $dname, 5, @@ -1176,21 +1192,21 @@ sub getToken { Write( $hash, - '"data": {"type":"token", "attributes":{"username": "' + '"data":{"type":"token","attributes":{"username":"' . AttrVal( $name, 'gardenaAccountEmail', 'none' ) - . '","password": "' + . '","password":"' . ReadPassword( $hash, $name ) - . '", "client_id":"smartgarden-jwt-client"}}', + . '","client_id":"smartgarden-jwt-client"}}', undef, undef ); Log3 $name, 4, - '"data": {"type":"token", "attributes":{"username": "' + '"data": {"type":"token", "attributes":{"username":"' . AttrVal( $name, 'gardenaAccountEmail', 'none' ) - . '","password": "' + . '","password":"' . ReadPassword( $hash, $name ) - . '", "client_id":"smartgarden-jwt-client"}}'; + . '","client_id":"smartgarden-jwt-client"}}'; Log3 $name, 3, "GardenaSmartBridge ($name) - send credentials to fetch Token and locationId"; @@ -1289,7 +1305,10 @@ sub createHttpValueStrings { my ( $hash, $payload, $deviceId, $abilities, $service_id ) = @_; my $session_id = $hash->{helper}{session_id}; - my $header = "Content-Type: application/json"; + my $header = 'Content-Type: application/json'; + $header .= "\r\norigin: https://smart.gardena.com"; + + #my $header = "Content-Type: application/json; origin: https://smart.gardena.com"; my $uri = ''; my $method = 'POST'; $header .= "\r\nAuthorization: Bearer $session_id" diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt index b3411e5..340df72 100644 --- a/controls_GardenaSmartDevice.txt +++ b/controls_GardenaSmartDevice.txt @@ -1,2 +1,2 @@ -UPD 2024-04-15_15:52:28 49971 FHEM/73_GardenaSmartBridge.pm -UPD 2024-04-15_15:52:28 127762 FHEM/74_GardenaSmartDevice.pm +UPD 2024-05-21_10:28:45 50909 FHEM/73_GardenaSmartBridge.pm +UPD 2024-05-21_09:01:54 127762 FHEM/74_GardenaSmartDevice.pm