2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-21 20:06:18 +00:00

76_SMAPortal: contrib 3.7.0

git-svn-id: https://svn.fhem.de/fhem/trunk@23197 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2020-11-20 21:33:59 +00:00
parent e62501e26d
commit 3f74479867

View File

@ -2049,7 +2049,7 @@ sub __dispatchGet {
my $tag = $paref->{tag}; # Kennzeichen der abzurufenen Daten
my $state = $paref->{state};
my $fnref = $paref->{fnaref}; # Referenz zu Array der aufzurufenden Funktion(en) zur Datenextraktion
my $addon = $paref->{addon}; # optionales Addon für aufzurufende Funktion
my $addon = $paref->{addon}; # optionales Addon für aufzurufende Funktion oder spezielle Steuerungen
my $daref = $paref->{daref}; # Referenz zum Datenarray
my $hash = $defs{$name};
@ -2064,7 +2064,8 @@ sub __dispatchGet {
($reread,$retry,$errstate,$state) = ___analyzeData ({ name => $name,
errstate => $errstate,
state => $state,
data => $data
data => $data,
addon => $addon
});
return ($errstate,$state,$reread,$retry) if($errstate || $reread || $retry);
@ -2112,7 +2113,8 @@ sub __dispatchPost {
ua => $ua,
errstate => $errstate,
state => $state,
data => $data
data => $data,
addon => $addon
});
return ($errstate,$state) if($errstate);
@ -2228,6 +2230,8 @@ sub ___analyzeData { ## no critic 'complexity'
my $state = $paref->{state};
my $ua = $paref->{ua};
my $ad = $paref->{data};
my $addon = $paref->{addon} // ""; # addon kann Optionen zur Analysesteuerung enthalten
my $hash = $defs{$name};
my ($reread,$retry) = (0,0);
my $data = "";
@ -2326,8 +2330,8 @@ sub ___analyzeData { ## no critic 'complexity'
$njdat = encode("utf8", $ad->decoded_content);
Log3 ($name, 5, "$name - No JSON Data received:\n ".$njdat);
if($rescode != 302) { # 302 -> HTTP-Antwort liefert zusätzlich eine URL im Header-Feld Location. Es soll eine zweite, ansonsten identische Anfrage an die in Location angegebene neue URL gestellt werden.
$errstate = 0;
if($rescode != 302 || $addon !~ /noJSONdata/x) { # 302 -> HTTP-Antwort liefert zusätzlich eine URL im Header-Feld Location. Es soll eine zweite, ansonsten identische Anfrage an die in Location angegebene neue URL gestellt werden.
$errstate = 1;
$state = "ERROR - see logfile for further information";
}
}
@ -3277,7 +3281,7 @@ sub extractManageConsumerByEnergy {
$paref->{name} = $name;
$paref->{state} = $state;
$paref->{addon} = $d; # das gemanagte Device in addon mitgeben
$paref->{addon} = "$d:noJSONdata"; # das gemanagte Device in addon mitgeben
($errstate,$state,$reread,$retry) = _getConsumerEnergySetting ($paref);
}
@ -3305,22 +3309,16 @@ sub extractConsumerEnergySetting {
Log3 ($name, 4, "$name - extracting current Consumer energy settings ");
my $d = $addon;
my $cclv = $stpl{consumerCurrentdata}{level};
my ($d) = split ":", $addon;
my $cclv = $stpl{consumerCurrentdata}{level};
my $dcont = encode("utf8", $data->decoded_content);
my $ad_content = encode("utf8", $data->decoded_content);
my ($gcval) = $ad_content =~ /var\sgridConsumptionValue\s=\s(.*?);/x;
my ($pvval) = $ad_content =~ /var\spvValue\s=\s(.*?);/x;
# Log3 ($name, 1, "$name - CONTENT: $ad_content");
Log3 ($name, 1, "$name - 1. gcval: $gcval, pvval: $pvval ");
my ($gcval) = $dcont =~ /var\sgridConsumptionValue\s=\s(.*?);/x;
my ($pvval) = $dcont =~ /var\spvValue\s=\s(.*?);/x;
$gcval = sprintf("%.2f",$gcval) * 100;
$pvval = sprintf("%.2f",$pvval) * 100;
Log3 ($name, 1, "$name - 2. gcval: $gcval, pvval: $pvval ");
push @$daref, "${cclv}_${d}_SwitchCondition:GridConsumption=$gcval% PV=$pvval%";
return;