From 0dc50648c060d46124bbe1a95fee7a5d03059e32 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Tue, 3 Nov 2020 21:13:03 +0000 Subject: [PATCH] 76_SMAPortal: contrib 3.6.2 git-svn-id: https://svn.fhem.de/fhem/trunk@23091 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SMAPortal.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fhem/contrib/DS_Starter/76_SMAPortal.pm b/fhem/contrib/DS_Starter/76_SMAPortal.pm index ab66443c6..d49a441d5 100644 --- a/fhem/contrib/DS_Starter/76_SMAPortal.pm +++ b/fhem/contrib/DS_Starter/76_SMAPortal.pm @@ -949,7 +949,7 @@ sub GetSetData { ## no critic 'complexity' if($errstate) { $st = encode_base64 ( $state,""); return "$name|0|0|$errstate|$getp|$setp|$st"; - } + } ### die Anlagen Asset Daten auslesen (Funktionen aus %mandatory mit doit=1) ### (Hash %mandatory ist leer wenn kein SMA Home Manager eingesetzt) @@ -1959,8 +1959,11 @@ sub __dispatchPost { fields => $fields, content => $cont, }); + + $ua->cookie_jar->extract_cookies($data); ($reread,$retry,$errstate,$state) = ___analyzeData ({ name => $name, + ua => $ua, errstate => $errstate, state => $state, data => $data @@ -2067,6 +2070,7 @@ sub ___analyzeData { ## no critic 'complexity' my $name = $paref->{name}; my $errstate = $paref->{errstate}; my $state = $paref->{state}; + my $ua = $paref->{ua}; my $ad = $paref->{data}; my $hash = $defs{$name}; my ($reread,$retry) = (0,0); @@ -2075,7 +2079,7 @@ sub ___analyzeData { ## no critic 'complexity' my $v5d = AttrVal($name, "verbose5Data", "none"); my $ad_content = encode("utf8", $ad->decoded_content); my $act = $hash->{HELPER}{RETRIES}; # Index aktueller Wiederholungsversuch - my $attstr = "Attempts read data again in $sleepretry s ... ($act of $maxretries)"; # Log vorbereiten + my $attstr = "Attempts read data again in $sleepretry s ... ($act of $maxretries)"; # Log vorbereiten my $wm1e = qq{Updating of the live data was interrupted}; my $wm1d = qq{Die Aktualisierung der Live-Daten wurde unterbrochen}; @@ -2089,6 +2093,7 @@ sub ___analyzeData { ## no critic 'complexity' $data = eval{decode_json($ad_content)} or do { $data = $ad_content }; my $jsonerror = $ad->header('Jsonerror') // ""; # Portal meldet keine Verarbeitung des Reaquests möglich (z.B. Jahr 0000 zur Auswertung angefordert) + if($jsonerror) { $errstate = 1; $state = "SMA Portal failure: "."Message -> ".$data->{Message}.",\nStackTrace -> ".$data->{StackTrace}.",\nExceptionType -> ".$data->{ExceptionType};