From 9abd0a917375e599a9a35defd4ada28274b07577 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 28 Jul 2021 21:42:34 +0200 Subject: [PATCH 1/5] fix helper debug device for post --- FHEM/73_GardenaSmartBridge.pm | 10 +++++++--- controls_GardenaSmartDevice.txt | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/FHEM/73_GardenaSmartBridge.pm b/FHEM/73_GardenaSmartBridge.pm index d446edf..29876b4 100644 --- a/FHEM/73_GardenaSmartBridge.pm +++ b/FHEM/73_GardenaSmartBridge.pm @@ -242,6 +242,7 @@ sub Define { $hash->{VERSION} = version->parse($VERSION)->normal; $hash->{INTERVAL} = 60; $hash->{NOTIFYDEV} = "global,$name"; + $hash->{helper}{debug_device} = 'none'; CommandAttr( undef, $name . ' room GardenaSmart' ) if ( AttrVal( $name, 'room', 'none' ) eq 'none' ); @@ -714,8 +715,11 @@ sub ErrorHandling { return; } - if (defined($hash->{helper}{debug_device})){ - Log3 $name, 5, "GardenaSmartBridge DEBUG Device"; + if (defined($hash->{helper}{debug_device}) + && $hash->{helper}{debug_device} ne 'none' + ){ + Log3 $name, 4, "GardenaSmartBridge DEBUG Device"; + $hash->{helper}{debug_device} = 'none'; my @device_spec = ("name", "id", "category"); my $devJson=$decode_json->{devices}; my $output = '.:{ DEBUG OUTPUT for '.$devJson->{name}.' }:. \n'; @@ -1224,7 +1228,7 @@ sub createHttpValueStrings { && defined( $hash->{helper}{locations_id} ) ); } - $uri = '/devices/'.InternalVal($hash->{helper}{debug_device}, 'DEVICEID', 0 ) if ( exists ($hash->{helper}{debug_device})); + $uri = '/devices/'.InternalVal($hash->{helper}{debug_device}, 'DEVICEID', 0 ) if ( ($hash->{helper}{debug_device}) ne 'none' ); $uri = '/auth/token' if ( !defined( $hash->{helper}{session_id} ) ); if ( defined( $hash->{helper}{locations_id} ) ) { diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt index 504f087..98727c3 100644 --- a/controls_GardenaSmartDevice.txt +++ b/controls_GardenaSmartDevice.txt @@ -1,2 +1,2 @@ -UPD 2021-06-28_15:56:58 47009 FHEM/73_GardenaSmartBridge.pm -UPD 2021-07-16_20:26:01 56217 FHEM/74_GardenaSmartDevice.pm +UPD 2021-07-28_21:42:12 47158 FHEM/73_GardenaSmartBridge.pm +UPD 2021-07-28_21:36:45 56217 FHEM/74_GardenaSmartDevice.pm -- 2.45.2 From b423fc73fc2768c910bb28201c5432ceb16eb2d8 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 28 Jul 2021 21:45:10 +0200 Subject: [PATCH 2/5] pump version --- FHEM/73_GardenaSmartBridge.pm | 2 +- controls_GardenaSmartDevice.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FHEM/73_GardenaSmartBridge.pm b/FHEM/73_GardenaSmartBridge.pm index 29876b4..f75ae1f 100644 --- a/FHEM/73_GardenaSmartBridge.pm +++ b/FHEM/73_GardenaSmartBridge.pm @@ -1491,7 +1491,7 @@ sub DeletePassword { ], "release_status": "stable", "license": "GPL_2", - "version": "v2.4.4", + "version": "v2.4.5", "author": [ "Marko Oldenburg " ], diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt index 98727c3..7473625 100644 --- a/controls_GardenaSmartDevice.txt +++ b/controls_GardenaSmartDevice.txt @@ -1,2 +1,2 @@ -UPD 2021-07-28_21:42:12 47158 FHEM/73_GardenaSmartBridge.pm +UPD 2021-07-28_21:43:23 47158 FHEM/73_GardenaSmartBridge.pm UPD 2021-07-28_21:36:45 56217 FHEM/74_GardenaSmartDevice.pm -- 2.45.2 From 908fe4fc24df33c4b6f169d40ea5ebe535ba5553 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 28 Jul 2021 21:51:36 +0200 Subject: [PATCH 3/5] check also location_id so we have token and user id ... --- FHEM/73_GardenaSmartBridge.pm | 3 ++- controls_GardenaSmartDevice.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/FHEM/73_GardenaSmartBridge.pm b/FHEM/73_GardenaSmartBridge.pm index f75ae1f..b157b98 100644 --- a/FHEM/73_GardenaSmartBridge.pm +++ b/FHEM/73_GardenaSmartBridge.pm @@ -1228,7 +1228,8 @@ sub createHttpValueStrings { && defined( $hash->{helper}{locations_id} ) ); } - $uri = '/devices/'.InternalVal($hash->{helper}{debug_device}, 'DEVICEID', 0 ) if ( ($hash->{helper}{debug_device}) ne 'none' ); + $uri = '/devices/'.InternalVal($hash->{helper}{debug_device}, 'DEVICEID', 0 ) if ( ($hash->{helper}{debug_device}) ne 'none' + && defined( $hash->{helper}{locations_id} ) ); $uri = '/auth/token' if ( !defined( $hash->{helper}{session_id} ) ); if ( defined( $hash->{helper}{locations_id} ) ) { diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt index 7473625..b63cc67 100644 --- a/controls_GardenaSmartDevice.txt +++ b/controls_GardenaSmartDevice.txt @@ -1,2 +1,2 @@ -UPD 2021-07-28_21:43:23 47158 FHEM/73_GardenaSmartBridge.pm +UPD 2021-07-28_21:51:10 47290 FHEM/73_GardenaSmartBridge.pm UPD 2021-07-28_21:36:45 56217 FHEM/74_GardenaSmartDevice.pm -- 2.45.2 From 43b4c15a9db6ef215dd950245ce6fbf2d3442d39 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sat, 7 Aug 2021 23:52:29 +0200 Subject: [PATCH 4/5] debug, token fix --- FHEM/73_GardenaSmartBridge.pm | 40 ++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/FHEM/73_GardenaSmartBridge.pm b/FHEM/73_GardenaSmartBridge.pm index b157b98..5f5dca2 100644 --- a/FHEM/73_GardenaSmartBridge.pm +++ b/FHEM/73_GardenaSmartBridge.pm @@ -207,6 +207,7 @@ sub Initialize { $hash->{AttrFn} = \&Attr; $hash->{AttrList} = 'debugJSON:0,1 ' + . 'debugDEVICE:0,1 ' . 'disable:1 ' . 'interval ' . 'disabledForIntervals ' @@ -241,8 +242,7 @@ sub Define { . '/v1'; $hash->{VERSION} = version->parse($VERSION)->normal; $hash->{INTERVAL} = 60; - $hash->{NOTIFYDEV} = "global,$name"; - $hash->{helper}{debug_device} = 'none'; + $hash->{NOTIFYDEV} = "global,$name"; CommandAttr( undef, $name . ' room GardenaSmart' ) if ( AttrVal( $name, 'room', 'none' ) eq 'none' ); @@ -261,7 +261,7 @@ sub Undef { my $hash = shift; my $name = shift; - RemoveInternalTimer($hash); + RemoveInternalTimer($hash, "FHEM::GardenaSmartBridge::getDevices"); delete $modules{GardenaSmartBridge}{defptr}{BRIDGE} if ( defined( $modules{GardenaSmartBridge}{defptr}{BRIDGE} ) ); @@ -282,7 +282,7 @@ sub Attr { if ( $attrName eq 'disable' ) { if ( $cmd eq 'set' && $attrVal eq '1' ) { - RemoveInternalTimer($hash); + RemoveInternalTimer($hash, "FHEM::GardenaSmartBridge::getDevices"); readingsSingleUpdate( $hash, 'state', 'inactive', 1 ); Log3 $name, 3, "GardenaSmartBridge ($name) - disabled"; } @@ -307,13 +307,13 @@ sub Attr { if ( $cmd eq 'set' ) { return 'Interval must be greater than 0' if ( $attrVal == 0 ); - RemoveInternalTimer($hash); + RemoveInternalTimer($hash, "FHEM::GardenaSmartBridge::getDevices"); $hash->{INTERVAL} = $attrVal; Log3 $name, 3, "GardenaSmartBridge ($name) - set interval: $attrVal"; } elsif ( $cmd eq 'del' ) { - RemoveInternalTimer($hash); + RemoveInternalTimer($hash, "FHEM::GardenaSmartBridge::getDevices"); $hash->{INTERVAL} = 60; Log3 $name, 3, "GardenaSmartBridge ($name) - delete User interval and set default: 60"; @@ -417,7 +417,7 @@ sub Get { my $list = ""; $list .= " debug_devices_list:" .join( ',', @{ $hash->{helper}{deviceList} }) - if ( AttrVal( $name, "debugJSON", "none") ne "none" + if ( AttrVal( $name, "debugDEVICE", "none") ne "none" && exists($hash->{helper}{deviceList}) ); return "Unknown argument $cmd,choose one of $list"; } @@ -713,13 +713,26 @@ sub ErrorHandling { delete $dhash->{helper}{deviceAction} if ( defined( $dhash->{helper}{deviceAction} ) ); + readingsSingleUpdate( $hash, 'token', 'none', 1 ) + if ( !defined( $hash->{helper}{session_id} ) ); + + getToken($hash) + if ( !defined( $hash->{helper}{session_id} ) ); return; } + elsif (defined ($decode_json->{message}) + && $decode_json->{message} eq 'Unauthorized') { + Log3 $name, 3, + "GardenaSmartBridge ($name) - Unauthorized -> fetch new token "; + getToken($hash); + return; + } + if (defined($hash->{helper}{debug_device}) && $hash->{helper}{debug_device} ne 'none' ){ Log3 $name, 4, "GardenaSmartBridge DEBUG Device"; - $hash->{helper}{debug_device} = 'none'; + delete $hash->{helper}{debug_device}; my @device_spec = ("name", "id", "category"); my $devJson=$decode_json->{devices}; my $output = '.:{ DEBUG OUTPUT for '.$devJson->{name}.' }:. \n'; @@ -791,6 +804,10 @@ sub ResponseProcessing { $hash->{helper}{session_id} = $decode_json->{data}{id}; $hash->{helper}{user_id} = $decode_json->{data}{attributes}->{user_id}; $hash->{helper}{refresh_token} = $decode_json->{data}{attributes}->{refresh_token}; + $hash->{helper}{token_expired} = gettimeofday() + $decode_json->{data}{attributes}->{expires_in}; + + InternalTimer($hash->{helper}{token_expired}, + "FHEM::GardenaSmartBridge::getToken", $hash ); Write( $hash, undef, undef, undef ); Log3 $name, 3, "GardenaSmartBridge ($name) - fetch locations id"; @@ -951,7 +968,6 @@ sub WriteReadings { elsif ( $decode_json->{abilities}[0]{properties} [$properties]{name} eq 'wifi_status' ) { - #TODO: read valies if bridge connected to wifi readingsBulkUpdateIfChanged( $hash, 'wifi_status-ssid', $v->{ssid} ) if (ref($v->{ssid}) ne 'HASH'); @@ -987,7 +1003,7 @@ sub getDevices { my $hash = shift; my $name = $hash->{NAME}; - RemoveInternalTimer($hash); + RemoveInternalTimer($hash, "FHEM::GardenaSmartBridge::getDevices"); if ( not IsDisabled($name) ) { @@ -1228,7 +1244,7 @@ sub createHttpValueStrings { && defined( $hash->{helper}{locations_id} ) ); } - $uri = '/devices/'.InternalVal($hash->{helper}{debug_device}, 'DEVICEID', 0 ) if ( ($hash->{helper}{debug_device}) ne 'none' + $uri = '/devices/'.InternalVal($hash->{helper}{debug_device}, 'DEVICEID', 0 ) if ( defined ($hash->{helper}{debug_device}) && defined( $hash->{helper}{locations_id} ) ); $uri = '/auth/token' if ( !defined( $hash->{helper}{session_id} ) ); @@ -1492,7 +1508,7 @@ sub DeletePassword { ], "release_status": "stable", "license": "GPL_2", - "version": "v2.4.5", + "version": "v2.4.6", "author": [ "Marko Oldenburg " ], -- 2.45.2 From c3882d4af33aaaeed82052887b2dc7391ac84205 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sat, 7 Aug 2021 23:54:37 +0200 Subject: [PATCH 5/5] enable hook on new system --- FHEM/73_GardenaSmartBridge.pm | 1 - controls_GardenaSmartDevice.txt | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/FHEM/73_GardenaSmartBridge.pm b/FHEM/73_GardenaSmartBridge.pm index 5f5dca2..88bdc0b 100644 --- a/FHEM/73_GardenaSmartBridge.pm +++ b/FHEM/73_GardenaSmartBridge.pm @@ -391,7 +391,6 @@ sub Notify { ) ) { - InternalTimer( gettimeofday() + $hash->{INTERVAL}, "FHEM::GardenaSmartBridge::getDevices", $hash ); Log3 $name, 4, diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt index b63cc67..9aed8bc 100644 --- a/controls_GardenaSmartDevice.txt +++ b/controls_GardenaSmartDevice.txt @@ -1,2 +1,2 @@ -UPD 2021-07-28_21:51:10 47290 FHEM/73_GardenaSmartBridge.pm -UPD 2021-07-28_21:36:45 56217 FHEM/74_GardenaSmartDevice.pm +UPD 2021-08-07_23:54:26 48067 FHEM/73_GardenaSmartBridge.pm +UPD 2021-08-01_15:08:54 56217 FHEM/74_GardenaSmartDevice.pm -- 2.45.2