1
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-07 22:29:19 +00:00

76_SMAPortal: contrib 2.7.2

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@22064 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2020-05-29 13:30:24 +00:00
parent 82fa1ace50
commit 88d758fc26

View File

@ -134,7 +134,7 @@ BEGIN {
# Versions History intern # Versions History intern
my %vNotesIntern = ( my %vNotesIntern = (
"2.7.2" => "28.05.2020 delete cookie file if max read retries reached ", "2.7.2" => "28.05.2020 delete cookie file if threshold of read retries reached ",
"2.7.1" => "28.05.2020 change cookie default location to ./log/<name>_cookie.txt ", "2.7.1" => "28.05.2020 change cookie default location to ./log/<name>_cookie.txt ",
"2.7.0" => "27.05.2020 improve stability of data retrieval, new command delCookieFile, new readings dailyCallCounter and dailyIssueCookieCounter ". "2.7.0" => "27.05.2020 improve stability of data retrieval, new command delCookieFile, new readings dailyCallCounter and dailyIssueCookieCounter ".
"current PV generation and consumption available in SMA graphics, some more improvements ", "current PV generation and consumption available in SMA graphics, some more improvements ",
@ -199,7 +199,7 @@ sub Initialize {
"cookielifetime ". "cookielifetime ".
"detailLevel:1,2,3,4 ". "detailLevel:1,2,3,4 ".
"disable:0,1 ". "disable:0,1 ".
"getDataRetries:1,2,3,4,5,6,7,8,9,10 ". "getDataRetries:4,5,6,7,8,9,10,11,12,13,14,15 ".
"interval ". "interval ".
"showPassInLog:1,0 ". "showPassInLog:1,0 ".
"timeout ". "timeout ".
@ -958,7 +958,7 @@ sub ParseData { ## no critic
$ccyeardata_content = decode_json($cy) if($cy); $ccyeardata_content = decode_json($cy) if($cy);
my $timeout = AttrVal($name, "timeout", 30); my $timeout = AttrVal($name, "timeout", 30);
if($reread) { # login war erfolgreich, aber set/get muss jetzt noch ausgeführt werden if($reread) { # login war erfolgreich, aber set/get muss jetzt noch ausgeführt werden
delete($hash->{HELPER}{RUNNING_PID}); delete($hash->{HELPER}{RUNNING_PID});
readingsSingleUpdate($hash, "L1_Login-Status", "successful", 1); readingsSingleUpdate($hash, "L1_Login-Status", "successful", 1);
$hash->{HELPER}{RUNNING_PID} = BlockingCall("FHEM::SMAPortal::GetSetData", "$name|$getp|$setp", "FHEM::SMAPortal::ParseData", $timeout, "FHEM::SMAPortal::ParseAborted", $hash); $hash->{HELPER}{RUNNING_PID} = BlockingCall("FHEM::SMAPortal::GetSetData", "$name|$getp|$setp", "FHEM::SMAPortal::ParseData", $timeout, "FHEM::SMAPortal::ParseAborted", $hash);
@ -966,16 +966,22 @@ sub ParseData { ## no critic
return; return;
} }
if($retry && $hash->{HELPER}{RETRIES}) { # Livedaten konnten nicht gelesen werden, neuer Versuch zeitverzögert if($retry && $hash->{HELPER}{RETRIES}) { # Livedaten konnten nicht gelesen werden, neuer Versuch zeitverzögert
delete($hash->{HELPER}{RUNNING_PID}); delete($hash->{HELPER}{RUNNING_PID});
my $max = AttrVal($name, "getDataRetries", 1);
my $act = $max - $hash->{HELPER}{RETRIES}; # Index aktueller Wiederholungsversuch
delcookiefile ($hash, 1) if($max - $act <= 1); # Schwellenwert erreicht ($max-1 Leseversuche) -> Cookie File löschen
$hash->{HELPER}{RETRIES} -= 1; $hash->{HELPER}{RETRIES} -= 1;
InternalTimer(gettimeofday()+3, "FHEM::SMAPortal::retrygetdata", $hash, 0); InternalTimer(gettimeofday()+3, "FHEM::SMAPortal::retrygetdata", $hash, 0);
return; return;
} }
if($retry && !$hash->{HELPER}{RETRIES}) { # Livedaten konnten nicht gelesen werden, max. Versuche erreicht -> Cookie File löschen if($retry && !$hash->{HELPER}{RETRIES}) { # Daten konnten trotz maxRetry nicht abgerufen werden.
delete($hash->{HELPER}{RUNNING_PID}); delete $hash->{HELPER}{RUNNING_PID};
delcookiefile ($hash, 1); $hash->{HELPER}{GETTER} = "all";
$hash->{HELPER}{SETTER} = "none";
return; return;
} }
@ -1809,7 +1815,7 @@ sub analyzeLivedata { #
my ($reread,$retry) = (0,0); my ($reread,$retry) = (0,0);
my $max = AttrVal($name, "getDataRetries", 1); my $max = AttrVal($name, "getDataRetries", 1);
my $act = AttrVal($name, "getDataRetries", 1) - $hash->{HELPER}{RETRIES}; # Index aktueller Wiederholungsversuch my $act = $max - $hash->{HELPER}{RETRIES}; # Index aktueller Wiederholungsversuch
my $attstr = "Attempts read data again ... ($act of $max)"; my $attstr = "Attempts read data again ... ($act of $max)";
my $livedata_content = decode_json($lc); my $livedata_content = decode_json($lc);
@ -2911,7 +2917,9 @@ return;
<a name="getDataRetries"></a> <a name="getDataRetries"></a>
<li><b>getDataRetries &lt;Anzahl&gt; </b><br> <li><b>getDataRetries &lt;Anzahl&gt; </b><br>
Number of repetitions (get data) in case of no live data are fetched from the SMA Sunny Portal (default: 3). </li><br> Maximal number of repetitions (get data) in case of no live data are fetched from the SMA Sunny Portal. <br>
(default: 3)
</li><br>
<a name="interval"></a> <a name="interval"></a>
<li><b>interval &lt;seconds&gt; </b><br> <li><b>interval &lt;seconds&gt; </b><br>
@ -3126,8 +3134,10 @@ return;
<a name="getDataRetries"></a> <a name="getDataRetries"></a>
<li><b>getDataRetries &lt;Anzahl&gt; </b><br> <li><b>getDataRetries &lt;Anzahl&gt; </b><br>
Anzahl der Wiederholungen (get data) im Fall dass keine Live-Daten vom SMA Sunny Portal geliefert Maximale Anzahl von Wiederholungen (get data) für den Fall, dass keine Live-Daten aus dem SMA Sunny Portal geholt
wurden (default: 3). </li><br> werden konnten. <br>
(default: 3)
</li><br>
<a name="interval"></a> <a name="interval"></a>
<li><b>interval &lt;Sekunden&gt; </b><br> <li><b>interval &lt;Sekunden&gt; </b><br>