From 1ea814d75990eefa9fc8cf44ca9a73e28e371005 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Fri, 14 Jun 2019 12:49:48 +0000 Subject: [PATCH] 76_SMAPortal: contrib 2.3.2 git-svn-id: https://svn.fhem.de/fhem/trunk@19619 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SMAPortal.pm | 46 ++++++++++++++++++------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/fhem/contrib/DS_Starter/76_SMAPortal.pm b/fhem/contrib/DS_Starter/76_SMAPortal.pm index f55195655..35da87e76 100644 --- a/fhem/contrib/DS_Starter/76_SMAPortal.pm +++ b/fhem/contrib/DS_Starter/76_SMAPortal.pm @@ -161,6 +161,7 @@ use vars qw($FW_ME); # webname (default is fh # Versions History intern our %vNotesIntern = ( + "2.3.2" => "14.06.2019 add request string to verbose 5, add battery data to live and historical consumer data ", "2.3.1" => "13.06.2019 switch Credentials read from RAM to verbose 4, changed W/h->Wh and kW/h->kWh in PortalAsHtml ", "2.3.0" => "12.06.2019 add set on,off,automatic cmd for controlled devices ", "2.2.0" => "10.06.2019 relocate RestOfDay and Tomorrow data from level 3 to level 2, change readings to start all with uppercase, ". @@ -431,7 +432,7 @@ sub DbLog_split($$) { $value = $2; $unit = $3; } - if($event =~ m/Next04Hours-IsConsumption|RestOfDay-IsConsumption|Tomorrow-IsConsumption/) { + if($event =~ m/Next04Hours-IsConsumption|RestOfDay-IsConsumption|Tomorrow-IsConsumption|Battery/) { $event =~ /^L(.*):\s(.*)\s(.*)/; $reading = "L".$1; $value = $2; @@ -760,11 +761,16 @@ sub GetSetData($) { my $mde = "$ye-$me-01"; my $yds = "$1-01-01"; my $yde = ($1+1)."-01-01"; - + + my $ccdd = 'https://www.sunnyportal.com/Homan/ConsumerBalance/GetMeasuredValues?IntervalId=2&'.$PlantOid.'&StartTime='.$dds.'&EndTime='.$dde.''; + my $ccmd = 'https://www.sunnyportal.com/Homan/ConsumerBalance/GetMeasuredValues?IntervalId=4&'.$PlantOid.'&StartTime='.$mds.'&EndTime='.$mde.''; + my $ccyd = 'https://www.sunnyportal.com/Homan/ConsumerBalance/GetMeasuredValues?IntervalId=5&'.$PlantOid.'&StartTime='.$yds.'&EndTime='.$yde.''; + # Energiedaten aktueller Tag Log3 ($name, 4, "$name - Getting consumer energy data of current day"); - Log3 ($name, 4, "$name - Request date -> start: $dds, end: $dde"); - my $ccdaydata = $ua->get('https://www.sunnyportal.com/Homan/ConsumerBalance/GetMeasuredValues?IntervalId=2&'.$PlantOid.'&StartTime='.$dds.'&EndTime='.$dde.''); + Log3 ($name, 4, "$name - Request date -> start: $dds, end: $dde"); + Log3 ($name, 5, "$name - Request consumer current day data string ->\n$ccdd"); + my $ccdaydata = $ua->get($ccdd); Log3 ($name, 5, "$name - Return Code: ".$ccdaydata->code) if($v5d eq "consumerDayData"); @@ -776,7 +782,8 @@ sub GetSetData($) { # Energiedaten aktueller Monat Log3 ($name, 4, "$name - Getting consumer energy data of current month"); Log3 ($name, 4, "$name - Request date -> start: $mds, end: $mde"); - my $ccmonthdata = $ua->get('https://www.sunnyportal.com/Homan/ConsumerBalance/GetMeasuredValues?IntervalId=4&'.$PlantOid.'&StartTime='.$mds.'&EndTime='.$mde.''); + Log3 ($name, 5, "$name - Request consumer current month data string ->\n$ccmd"); + my $ccmonthdata = $ua->get($ccmd); Log3 ($name, 5, "$name - Return Code: ".$ccmonthdata->code) if($v5d eq "consumerMonthData"); @@ -788,7 +795,8 @@ sub GetSetData($) { # Energiedaten aktuelles Jahr Log3 ($name, 4, "$name - Getting consumer energy data of current year"); Log3 ($name, 4, "$name - Request date -> start: $yds, end: $yde"); - my $ccyeardata = $ua->get('https://www.sunnyportal.com/Homan/ConsumerBalance/GetMeasuredValues?IntervalId=5&'.$PlantOid.'&StartTime='.$yds.'&EndTime='.$yde.''); + Log3 ($name, 5, "$name - Request consumer current year data string ->\n$ccyd"); + my $ccyeardata = $ua->get($ccyd); Log3 ($name, 5, "$name - Return Code: ".$ccyeardata->code) if($v5d eq "consumerMonthData"); @@ -1517,7 +1525,7 @@ sub extractConsumerHistData($$$) { my ($hash,$chdata,$tf) = @_; my $name = $hash->{NAME}; my %consumers; - my ($key,$val,$i,$res,$gcr,$gct,$pcr,$pct,$tct); + my ($key,$val,$i,$res,$gcr,$gct,$pcr,$pct,$tct,$bcr,$bct); my $dl = AttrVal($name, "detailLevel", 1); if($dl <= 2) { @@ -1533,6 +1541,8 @@ sub extractConsumerHistData($$$) { $consumers{"${i}_ConsumerOid"} = $c->{'ConsumerOid'}; $consumers{"${i}_ConsumerLfd"} = $i; my $cpower = $c->{'TotalEnergy'}{'Measurement'}; # Energieverbrauch im Timeframe in Wh + my $bdc = $c->{'BatteryDischarging'}; # Batterieentladung in ? + my $bc = $c->{'BatteryCharging'}; # Batterieladung in ? my $cn = $consumers{"${i}_ConsumerName"}; # Verbrauchername $cn = substUmlauts($cn); @@ -1542,21 +1552,33 @@ sub extractConsumerHistData($$$) { $gct = $c->{'TotalEnergyMix'}{'GridConsumptionTotal'}; # Anteil des Netzbezugs im Timeframe am Gesamtverbrauch in Wh $pcr = $c->{'TotalEnergyMix'}{'PvConsumptionRelative'}; # Anteil des PV-Nutzung im Timeframe am Gesamtverbrauch in % $pct = $c->{'TotalEnergyMix'}{'PvConsumptionTotal'}; # Anteil des PV-Nutzung im Timeframe am Gesamtverbrauch in Wh + $bcr = $c->{'TotalEnergyMix'}{'BatteryConsumptionRelative'}; # Anteil der Batterie-Nutzung im Timeframe am Gesamtverbrauch in % + $bct = $c->{'TotalEnergyMix'}{'BatteryConsumptionTotal'}; # Anteil der Batterie-Nutzung im Timeframe am Gesamtverbrauch in Wh } readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalDay", sprintf("%.0f", $cpower)." Wh") if(defined($cpower) && $tf eq "day"); readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalMonth", sprintf("%.0f", $cpower)." Wh") if(defined($cpower) && $tf eq "month"); - readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalYear", sprintf("%.0f", $cpower)." Wh") if(defined($cpower) && $tf eq "year"); + readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalYear", sprintf("%.0f", $cpower)." Wh") if(defined($cpower) && $tf eq "year"); + readingsBulkUpdate($hash, "L3_BatteryDischargingDay", sprintf("%.0f", $bdc) ) if(defined($bdc) && $tf eq "day"); + readingsBulkUpdate($hash, "L3_BatteryDischargingMonth", sprintf("%.0f", $bdc) ) if(defined($bdc) && $tf eq "month"); + readingsBulkUpdate($hash, "L3_BatteryDischargingYear", sprintf("%.0f", $bdc) ) if(defined($bdc) && $tf eq "year"); + readingsBulkUpdate($hash, "L3_BatteryChargingDay", sprintf("%.0f", $bc) ) if(defined($bc) && $tf eq "day"); + readingsBulkUpdate($hash, "L3_BatteryChargingMonth", sprintf("%.0f", $bc) ) if(defined($bc) && $tf eq "month"); + readingsBulkUpdate($hash, "L3_BatteryChargingYear", sprintf("%.0f", $bc) ) if(defined($bc) && $tf eq "year"); readingsBulkUpdate($hash, "L3_${cn}_EnergyRelativeMonthGrid", sprintf("%.0f", $gcr)." %") if(defined($gcr) && $tf eq "month"); readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalMonthGrid", sprintf("%.0f", $gct)." Wh") if(defined($gct) && $tf eq "month"); readingsBulkUpdate($hash, "L3_${cn}_EnergyRelativeMonthPV", sprintf("%.0f", $pcr)." %") if(defined($pcr) && $tf eq "month"); - readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalMonthPV", sprintf("%.0f", $pct)." Wh") if(defined($pct) && $tf eq "month"); + readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalMonthPV", sprintf("%.0f", $pct)." Wh") if(defined($pct) && $tf eq "month"); + readingsBulkUpdate($hash, "L3_${cn}_EnergyRelativeMonthBatt", sprintf("%.0f", $bcr)." %") if(defined($bcr) && $tf eq "month"); + readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalMonthBatt", sprintf("%.0f", $bct)." Wh") if(defined($bct) && $tf eq "month"); readingsBulkUpdate($hash, "L3_${cn}_EnergyRelativeYearGrid", sprintf("%.0f", $gcr)." %") if(defined($gcr) && $tf eq "year"); readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalYearGrid", sprintf("%.0f", $gct)." Wh") if(defined($gct) && $tf eq "year"); readingsBulkUpdate($hash, "L3_${cn}_EnergyRelativeYearPV", sprintf("%.0f", $pcr)." %") if(defined($pcr) && $tf eq "year"); - readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalYearPV", sprintf("%.0f", $pct)." Wh") if(defined($pct) && $tf eq "year"); + readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalYearPV", sprintf("%.0f", $pct)." Wh") if(defined($pct) && $tf eq "year"); + readingsBulkUpdate($hash, "L3_${cn}_EnergyRelativeYearBatt", sprintf("%.0f", $bcr)." %") if(defined($bcr) && $tf eq "year"); + readingsBulkUpdate($hash, "L3_${cn}_EnergyTotalYearBatt", sprintf("%.0f", $bct)." Wh") if(defined($bct) && $tf eq "year"); $i++; } @@ -2565,7 +2587,7 @@ return;