76_SolarForecast: Version 1.51.9
git-svn-id: https://svn.fhem.de/fhem/trunk@29920 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -160,6 +160,8 @@ BEGIN {
|
|||||||
|
|
||||||
# Versions History intern
|
# Versions History intern
|
||||||
my %vNotesIntern = (
|
my %vNotesIntern = (
|
||||||
|
"1.51.9" => "03.05.2025 An inverter string must not be named 'none', setupInverterDevXX: 'strings=none' is added ".
|
||||||
|
"valInverter: add isource ",
|
||||||
"1.51.8" => "02.05.2025 _specialActivities: delete overhanging days at the change of month ".
|
"1.51.8" => "02.05.2025 _specialActivities: delete overhanging days at the change of month ".
|
||||||
"Bugfix: https://forum.fhem.de/index.php?msg=1340666 ",
|
"Bugfix: https://forum.fhem.de/index.php?msg=1340666 ",
|
||||||
"1.51.7" => "01.05.2025 __createAdditionalEvents: optimized for SVG 'steps', new key plantControl->genPVforecastsToEvent ".
|
"1.51.7" => "01.05.2025 __createAdditionalEvents: optimized for SVG 'steps', new key plantControl->genPVforecastsToEvent ".
|
||||||
@@ -469,7 +471,7 @@ use constant {
|
|||||||
LAGTIME => 1800, # Nachlaufzeit relativ zu Sunset bis Sperrung API Abruf
|
LAGTIME => 1800, # Nachlaufzeit relativ zu Sunset bis Sperrung API Abruf
|
||||||
|
|
||||||
PRDEF => 1.0, # default Performance Ratio (PR)
|
PRDEF => 1.0, # default Performance Ratio (PR)
|
||||||
STOREFFDEF => 0.9, # default Batterie Effizienz (https://www.energie-experten.org/erneuerbare-energien/photovoltaik/stromspeicher/wirkungsgrad)
|
STOREFFDEF => 0.90, # default Batterie Effizienz (https://www.energie-experten.org/erneuerbare-energien/photovoltaik/stromspeicher/wirkungsgrad)
|
||||||
TEMPCOEFFDEF => -0.45, # default Temperaturkoeffizient Pmpp (%/°C) lt. Datenblatt Solarzelle
|
TEMPCOEFFDEF => -0.45, # default Temperaturkoeffizient Pmpp (%/°C) lt. Datenblatt Solarzelle
|
||||||
TEMPMODINC => 25, # default Temperaturerhöhung an Solarzellen gegenüber Umgebungstemperatur bei wolkenlosem Himmel
|
TEMPMODINC => 25, # default Temperaturerhöhung an Solarzellen gegenüber Umgebungstemperatur bei wolkenlosem Himmel
|
||||||
TEMPBASEDEF => 25, # Temperatur Module bei Nominalleistung
|
TEMPBASEDEF => 25, # Temperatur Module bei Nominalleistung
|
||||||
@@ -6967,11 +6969,23 @@ sub _attrInverterDev { ## no critic "not used"
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($h->{strings}) {
|
if ($h->{strings}) {
|
||||||
for my $s (split ',', $h->{strings}) {
|
my $none = 0;
|
||||||
|
my @as = split ',', $h->{strings};
|
||||||
|
|
||||||
|
for my $s (@as) {
|
||||||
|
if ($s eq 'none') {
|
||||||
|
$none = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
if (!grep /^$s$/, keys %{$data{$name}{strings}}) {
|
if (!grep /^$s$/, keys %{$data{$name}{strings}}) {
|
||||||
return qq{The string '$s' is not a valid string name defined in attribute 'setupInverterStrings'.};
|
return qq{The string '$s' is not a valid string name defined in attribute 'setupInverterStrings'.};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($none && scalar(@as) > 1) {
|
||||||
|
return qq{If 'strings=none' is defined, no other string may be specified.};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$data{$name}{circular}{99}{attrInvChangedTs} = int time;
|
$data{$name}{circular}{99}{attrInvChangedTs} = int time;
|
||||||
@@ -6982,6 +6996,7 @@ sub _attrInverterDev { ## no critic "not used"
|
|||||||
delete $data{$name}{inverters}{$in}{istrings};
|
delete $data{$name}{inverters}{$in}{istrings};
|
||||||
delete $data{$name}{inverters}{$in}{iasynchron};
|
delete $data{$name}{inverters}{$in}{iasynchron};
|
||||||
delete $data{$name}{inverters}{$in}{ifeed};
|
delete $data{$name}{inverters}{$in}{ifeed};
|
||||||
|
delete $data{$name}{inverters}{$in}{isource};
|
||||||
}
|
}
|
||||||
elsif ($paref->{cmd} eq 'del') {
|
elsif ($paref->{cmd} eq 'del') {
|
||||||
delete $data{$name}{inverters}{$in};
|
delete $data{$name}{inverters}{$in};
|
||||||
@@ -7016,11 +7031,15 @@ sub _attrInverterStrings { ## no critic "not used"
|
|||||||
|
|
||||||
if ($paref->{cmd} eq 'set') {
|
if ($paref->{cmd} eq 'set') {
|
||||||
if ($aVal =~ /\?/xs) {
|
if ($aVal =~ /\?/xs) {
|
||||||
return qq{The inverter string designation is wrong. An inverter string name must not contain a '?' character!};
|
return qq{The inverter string designation is wrong. An inverter string name must not contain a '?' character};
|
||||||
}
|
}
|
||||||
|
|
||||||
my @istrings = split ",", $aVal;
|
my @istrings = split ",", $aVal;
|
||||||
|
|
||||||
|
for my $s (@istrings) {
|
||||||
|
return qq{An inverter string must not be named 'none'} if($s eq 'none');
|
||||||
|
}
|
||||||
|
|
||||||
for my $k (keys %{$data{$name}{solcastapi}}) {
|
for my $k (keys %{$data{$name}{solcastapi}}) {
|
||||||
next if ($k =~ /\?/xs || grep /^$k$/, @istrings);
|
next if ($k =~ /\?/xs || grep /^$k$/, @istrings);
|
||||||
delete $data{$name}{solcastapi}{$k};
|
delete $data{$name}{solcastapi}{$k};
|
||||||
@@ -9880,6 +9899,7 @@ sub _transferInverterValues {
|
|||||||
my $etuf = $etunit =~ /^kWh$/xi ? 1000 : 1;
|
my $etuf = $etunit =~ /^kWh$/xi ? 1000 : 1;
|
||||||
my $etotal = ReadingsNum ($indev, $edread, 0) * $etuf; # Erzeugung total (Wh)
|
my $etotal = ReadingsNum ($indev, $edread, 0) * $etuf; # Erzeugung total (Wh)
|
||||||
my $histetot = HistoryVal ($hash, $day, sprintf("%02d",$nhour), 'etotali'.$in, 0); # etotal zu Beginn einer Stunde
|
my $histetot = HistoryVal ($hash, $day, sprintf("%02d",$nhour), 'etotali'.$in, 0); # etotal zu Beginn einer Stunde
|
||||||
|
my $source = defined $h->{strings} && $h->{strings} eq 'none' ? 'bat' : 'pv'; # Energie-Bezug PV oder aus Batterie
|
||||||
|
|
||||||
my ($ethishour, $etotsvd);
|
my ($ethishour, $etotsvd);
|
||||||
|
|
||||||
@@ -9926,9 +9946,10 @@ sub _transferInverterValues {
|
|||||||
$data{$name}{inverters}{$in}{invertercap} = $h->{capacity} if(defined $h->{capacity}); # optionale Angabe max. WR-Leistung
|
$data{$name}{inverters}{$in}{invertercap} = $h->{capacity} if(defined $h->{capacity}); # optionale Angabe max. WR-Leistung
|
||||||
$data{$name}{inverters}{$in}{ilimit} = $h->{limit} // 100; # Wirkleistungsbegrenzung
|
$data{$name}{inverters}{$in}{ilimit} = $h->{limit} // 100; # Wirkleistungsbegrenzung
|
||||||
$data{$name}{inverters}{$in}{iicon} = $h->{icon} if($h->{icon}); # Icon des Inverters
|
$data{$name}{inverters}{$in}{iicon} = $h->{icon} if($h->{icon}); # Icon des Inverters
|
||||||
$data{$name}{inverters}{$in}{istrings} = $h->{strings} if($h->{strings}); # dem Inverter zugeordnete Strings
|
$data{$name}{inverters}{$in}{istrings} = $h->{strings} if($h->{strings}); # dem Inverter zugeordnete Strings | none
|
||||||
$data{$name}{inverters}{$in}{iasynchron} = $h->{asynchron} if($h->{asynchron}); # Inverter Mode
|
$data{$name}{inverters}{$in}{iasynchron} = $h->{asynchron} if($h->{asynchron}); # Inverter Mode
|
||||||
$data{$name}{inverters}{$in}{ifeed} = $feed; # Eigenschaften der Energielieferung
|
$data{$name}{inverters}{$in}{ifeed} = $feed; # Eigenschaften der Energielieferung
|
||||||
|
$data{$name}{inverters}{$in}{isource} = $source; # Eigenschaften des Energiebezugs, normal pv
|
||||||
|
|
||||||
$pvsum += $pv;
|
$pvsum += $pv;
|
||||||
$ethishoursum += $ethishour;
|
$ethishoursum += $ethishour;
|
||||||
@@ -17044,12 +17065,13 @@ sub _flowGraphic {
|
|||||||
my $pv2node = 0; # Summe PV-Erzeugung alle Inverter
|
my $pv2node = 0; # Summe PV-Erzeugung alle Inverter
|
||||||
my $pv2grid = 0;
|
my $pv2grid = 0;
|
||||||
my $pv2bat = 0;
|
my $pv2bat = 0;
|
||||||
|
my $bat2inv = 0; # Sonderfall Speisung Inverter aus Batterie statt PV
|
||||||
my $lfn = 0;
|
my $lfn = 0;
|
||||||
|
|
||||||
for my $pn (1..MAXPRODUCER) {
|
for my $pn (1..MAXPRODUCER) {
|
||||||
$pn = sprintf "%02d", $pn;
|
$pn = sprintf "%02d", $pn;
|
||||||
my $p = ProducerVal ($hash, $pn, 'pgeneration', undef);
|
my $p = ProducerVal ($name, $pn, 'pgeneration', undef);
|
||||||
my $feed = ProducerVal ($hash, $pn, 'pfeed', 'default');
|
my $feed = ProducerVal ($name, $pn, 'pfeed', 'default');
|
||||||
|
|
||||||
if (defined $p) {
|
if (defined $p) {
|
||||||
$p = __normDecPlaces ($p);
|
$p = __normDecPlaces ($p);
|
||||||
@@ -17065,18 +17087,21 @@ sub _flowGraphic {
|
|||||||
|
|
||||||
for my $in (1..MAXINVERTER) {
|
for my $in (1..MAXINVERTER) {
|
||||||
$in = sprintf "%02d", $in;
|
$in = sprintf "%02d", $in;
|
||||||
my $p = InverterVal ($hash, $in, 'igeneration', undef);
|
my $p = InverterVal ($name, $in, 'igeneration', undef);
|
||||||
my $feed = InverterVal ($hash, $in, 'ifeed', 'default');
|
my $feed = InverterVal ($name, $in, 'ifeed', 'default');
|
||||||
|
my $isource = InverterVal ($name, $in, 'isource', 'pv');
|
||||||
|
|
||||||
if (defined $p) {
|
if (defined $p) {
|
||||||
$p = __normDecPlaces ($p);
|
$p = __normDecPlaces ($p);
|
||||||
$pdcr->{$lfn}{pn} = $in; # Inverternummer
|
$pdcr->{$lfn}{pn} = $in; # Inverternummer
|
||||||
$pdcr->{$lfn}{feed} = $feed; # Eigenschaft der Energielieferung
|
$pdcr->{$lfn}{feed} = $feed; # Eigenschaft der Energielieferung
|
||||||
|
$pdcr->{$lfn}{isource} = $isource; # Art der Energiequelle (pv oder bat)
|
||||||
$pdcr->{$lfn}{ptyp} = 'inverter'; # Typ des Producers
|
$pdcr->{$lfn}{ptyp} = 'inverter'; # Typ des Producers
|
||||||
$pdcr->{$lfn}{p} = $p; # aktuelle PV
|
$pdcr->{$lfn}{p} = $p; # aktuelle PV
|
||||||
$pv2node += $p if($feed eq 'default'); # PV-Erzeugung Inverter für das Hausnetz
|
$pv2node += $p if($feed eq 'default'); # PV-Erzeugung Inverter für das Hausnetz
|
||||||
$pv2grid += $p if($feed eq 'grid'); # PV nur für das öffentliche Netz
|
$pv2grid += $p if($feed eq 'grid'); # PV nur für das öffentliche Netz
|
||||||
$pv2bat += $p if($feed eq 'bat'); # Direktladen PV nur in die Batterie
|
$pv2bat += $p if($feed eq 'bat'); # Direktladen PV nur in die Batterie
|
||||||
|
$bat2inv += $p if($isource eq 'bat'); # Sonderfall Speisung Inverter aus Batterie statt PV
|
||||||
|
|
||||||
$lfn++;
|
$lfn++;
|
||||||
}
|
}
|
||||||
@@ -17113,8 +17138,8 @@ sub _flowGraphic {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
## Producer Koordninaten Steuerhash
|
## Producer / Inverter Koordninaten Steuerhash
|
||||||
#####################################
|
################################################
|
||||||
my ($togrid, $tonode, $tobat) = __sortProducer ($pdcr); # lfn Producer sortiert nach ptyp und feed
|
my ($togrid, $tonode, $tobat) = __sortProducer ($pdcr); # lfn Producer sortiert nach ptyp und feed
|
||||||
|
|
||||||
my $psorted = {
|
my $psorted = {
|
||||||
@@ -17568,6 +17593,8 @@ sub __sortProducer {
|
|||||||
my @togrid = ();
|
my @togrid = ();
|
||||||
my @prod = ();
|
my @prod = ();
|
||||||
my @idef = ();
|
my @idef = ();
|
||||||
|
my @isrcpv = ();
|
||||||
|
my @isrcbat = ();
|
||||||
my @tonode = ();
|
my @tonode = ();
|
||||||
my @ibat = ();
|
my @ibat = ();
|
||||||
my @tobat = ();
|
my @tobat = ();
|
||||||
@@ -17576,15 +17603,23 @@ sub __sortProducer {
|
|||||||
my $ptyp = $pdcr->{$lfn}{ptyp}; # producer | inverter
|
my $ptyp = $pdcr->{$lfn}{ptyp}; # producer | inverter
|
||||||
my $feed = $pdcr->{$lfn}{feed}; # default | grid | bat
|
my $feed = $pdcr->{$lfn}{feed}; # default | grid | bat
|
||||||
|
|
||||||
push @igrid, $lfn if($ptyp eq 'inverter' && $feed eq 'grid');
|
push @igrid, $lfn if($ptyp eq 'inverter' && $feed eq 'grid'); # Lieferung an öffentliches Netz
|
||||||
push @prod, $lfn if($ptyp eq 'producer');
|
push @prod, $lfn if($ptyp eq 'producer');
|
||||||
push @idef, $lfn if($ptyp eq 'inverter' && $feed eq 'default');
|
push @idef, $lfn if($ptyp eq 'inverter' && $feed eq 'default'); # Lieferung an Inverterknoten
|
||||||
push @ibat, $lfn if($ptyp eq 'inverter' && $feed eq 'bat');
|
push @ibat, $lfn if($ptyp eq 'inverter' && $feed eq 'bat'); # Lieferung an Batterie
|
||||||
|
}
|
||||||
|
|
||||||
|
for my $inv (@idef) {
|
||||||
|
my $isource = $pdcr->{$inv}{isource};
|
||||||
|
|
||||||
|
push @isrcpv, $inv if($isource eq 'pv'); # Quelle ist PV-String
|
||||||
|
push @isrcbat, $inv if($isource eq 'bat'); # Quelle ist Batterie
|
||||||
}
|
}
|
||||||
|
|
||||||
push @togrid, @igrid;
|
push @togrid, @igrid;
|
||||||
push @tonode, @prod;
|
push @tonode, @prod;
|
||||||
push @tonode, @idef;
|
push @tonode, @isrcpv;
|
||||||
|
push @tonode, @isrcbat;
|
||||||
push @tobat, @ibat;
|
push @tobat, @ibat;
|
||||||
|
|
||||||
return (\@togrid, \@tonode, \@tobat);
|
return (\@togrid, \@tonode, \@tobat);
|
||||||
@@ -24867,6 +24902,7 @@ to ensure that the system configuration is correct.
|
|||||||
<tr><td> <b>ialias </b> </td><td>Alias of the device </td></tr>
|
<tr><td> <b>ialias </b> </td><td>Alias of the device </td></tr>
|
||||||
<tr><td> <b>iname </b> </td><td>Name of the device </td></tr>
|
<tr><td> <b>iname </b> </td><td>Name of the device </td></tr>
|
||||||
<tr><td> <b>invertercap </b> </td><td>the nominal power (W) of the inverter (if defined) </td></tr>
|
<tr><td> <b>invertercap </b> </td><td>the nominal power (W) of the inverter (if defined) </td></tr>
|
||||||
|
<tr><td> <b>isource </b> </td><td>Type of energy source of the inverter </td></tr>
|
||||||
<tr><td> <b>istrings </b> </td><td>List of strings assigned to the inverter (if defined) </td></tr>
|
<tr><td> <b>istrings </b> </td><td>List of strings assigned to the inverter (if defined) </td></tr>
|
||||||
</table>
|
</table>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -25974,7 +26010,8 @@ to ensure that the system configuration is correct.
|
|||||||
<ul>
|
<ul>
|
||||||
<table>
|
<table>
|
||||||
<colgroup> <col width="15%"> <col width="85%"> </colgroup>
|
<colgroup> <col width="15%"> <col width="85%"> </colgroup>
|
||||||
<tr><td> <b>pv</b> </td><td>Reading which provides the current PV generation as a positive value </td></tr>
|
<tr><td> <b>pv</b> </td><td>Reading which provides the current energy generation as a positive value. It is usually the PV energy, </td></tr>
|
||||||
|
<tr><td> </td><td>but can alternatively be the energy generation from a battery if 'strings=none' is specified. </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>etotal</b> </td><td>Reading which provides the total PV energy generated (a steadily increasing counter). </td></tr>
|
<tr><td> <b>etotal</b> </td><td>Reading which provides the total PV energy generated (a steadily increasing counter). </td></tr>
|
||||||
<tr><td> </td><td>If the reading violates the specification of a continuously rising counter, </td></tr>
|
<tr><td> </td><td>If the reading violates the specification of a continuously rising counter, </td></tr>
|
||||||
@@ -25987,10 +26024,12 @@ to ensure that the system configuration is correct.
|
|||||||
<tr><td> <b>strings</b> </td><td>Comma-separated list of the strings assigned to the inverter (optional). The string names </td></tr>
|
<tr><td> <b>strings</b> </td><td>Comma-separated list of the strings assigned to the inverter (optional). The string names </td></tr>
|
||||||
<tr><td> </td><td>are defined in the <a href=“#SolarForecast-attr-setupInverterStrings”>setupInverterStrings</a> attribute. </td></tr>
|
<tr><td> </td><td>are defined in the <a href=“#SolarForecast-attr-setupInverterStrings”>setupInverterStrings</a> attribute. </td></tr>
|
||||||
<tr><td> </td><td>If 'strings' is not specified, all defined string names are assigned to the inverter. </td></tr>
|
<tr><td> </td><td>If 'strings' is not specified, all defined string names are assigned to the inverter. </td></tr>
|
||||||
|
<tr><td> </td><td>With ‘<b>strings=none</b>’, no strings are assigned to the inverter and it is assumed that </td></tr>
|
||||||
|
<tr><td> </td><td>this inverter is supplied by an existing battery as a direct current source. </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>feed</b> </td><td>Defines special properties of the device's energy supply (optional). </td></tr>
|
<tr><td> <b>feed</b> </td><td>Defines special properties of the device's energy supply (optional). </td></tr>
|
||||||
<tr><td> </td><td>If the key is not set, the device feeds the PV energy into the house's AC grid. </td></tr>
|
<tr><td> </td><td>If the key is not set, the device feeds the PV energy into the house's AC grid. </td></tr>
|
||||||
<tr><td> </td><td><b>bat</b> - Solar charger for direct battery charging. Any surplus is fed into the inverter/house network. </td></tr>
|
<tr><td> </td><td><b>bat</b> - Solar charger for direct battery charging. Any surplus is fed into the Inverter node/house network. </td></tr>
|
||||||
<tr><td> </td><td><b>grid</b> - the energy is fed exclusively into the public grid </td></tr>
|
<tr><td> </td><td><b>grid</b> - the energy is fed exclusively into the public grid </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>limit</b> </td><td>Defines any active power limitation in % (optional). </td></tr>
|
<tr><td> <b>limit</b> </td><td>Defines any active power limitation in % (optional). </td></tr>
|
||||||
@@ -27401,6 +27440,7 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
<tr><td> <b>ialias </b> </td><td>Alias des Gerätes </td></tr>
|
<tr><td> <b>ialias </b> </td><td>Alias des Gerätes </td></tr>
|
||||||
<tr><td> <b>iname </b> </td><td>Name des Gerätes </td></tr>
|
<tr><td> <b>iname </b> </td><td>Name des Gerätes </td></tr>
|
||||||
<tr><td> <b>invertercap </b> </td><td>die nominale Leistung (W) des Wechselrichters (falls definiert) </td></tr>
|
<tr><td> <b>invertercap </b> </td><td>die nominale Leistung (W) des Wechselrichters (falls definiert) </td></tr>
|
||||||
|
<tr><td> <b>isource </b> </td><td>Art der Energiequelle des Inverters </td></tr>
|
||||||
<tr><td> <b>istrings </b> </td><td>Liste der dem Wechselrichter zugeordneten Strings (falls definiert) </td></tr>
|
<tr><td> <b>istrings </b> </td><td>Liste der dem Wechselrichter zugeordneten Strings (falls definiert) </td></tr>
|
||||||
</table>
|
</table>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -28508,7 +28548,8 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
<ul>
|
<ul>
|
||||||
<table>
|
<table>
|
||||||
<colgroup> <col width="15%"> <col width="85%"> </colgroup>
|
<colgroup> <col width="15%"> <col width="85%"> </colgroup>
|
||||||
<tr><td> <b>pv</b> </td><td>Reading welches die aktuelle PV-Erzeugung als positiven Wert liefert </td></tr>
|
<tr><td> <b>pv</b> </td><td>Reading welches die aktuelle Energie-Erzeugung als positiven Wert liefert. Üblicherweise ist es die PV-Energie, </td></tr>
|
||||||
|
<tr><td> </td><td>kann bei Angabe von 'strings=none' alternativ die Energie-Erzeugung aus einer Batterie sein. </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>etotal</b> </td><td>Reading welches die gesamte erzeugte PV-Energie liefert (ein stetig aufsteigender Zähler) </td></tr>
|
<tr><td> <b>etotal</b> </td><td>Reading welches die gesamte erzeugte PV-Energie liefert (ein stetig aufsteigender Zähler) </td></tr>
|
||||||
<tr><td> </td><td>Sollte des Reading die Vorgabe eines stetig aufsteigenden Zählers verletzen, behandelt </td></tr>
|
<tr><td> </td><td>Sollte des Reading die Vorgabe eines stetig aufsteigenden Zählers verletzen, behandelt </td></tr>
|
||||||
@@ -28521,11 +28562,13 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
|
|||||||
<tr><td> <b>strings</b> </td><td>Komma getrennte Liste der dem Wechselrichter zugeordneten Strings (optional). Die Stringnamen </td></tr>
|
<tr><td> <b>strings</b> </td><td>Komma getrennte Liste der dem Wechselrichter zugeordneten Strings (optional). Die Stringnamen </td></tr>
|
||||||
<tr><td> </td><td>werden im Attribut <a href="#SolarForecast-attr-setupInverterStrings">setupInverterStrings</a> definiert. </td></tr>
|
<tr><td> </td><td>werden im Attribut <a href="#SolarForecast-attr-setupInverterStrings">setupInverterStrings</a> definiert. </td></tr>
|
||||||
<tr><td> </td><td>Ist 'strings' nicht angegeben, werden alle definierten Stringnamen dem Wechselrichter zugeordnet. </td></tr>
|
<tr><td> </td><td>Ist 'strings' nicht angegeben, werden alle definierten Stringnamen dem Wechselrichter zugeordnet. </td></tr>
|
||||||
|
<tr><td> </td><td>Mit '<b>strings=none</b>' werden keine Strings dem Wechselrichter zugeordnet und es wird davon ausgegangen, dass </td></tr>
|
||||||
|
<tr><td> </td><td>dieser Wechselrichter von einer vorhandenen Batterie als Gleichstromquelle gespeist wird. </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>feed</b> </td><td>Definiert spezielle Eigenschaften der Energielieferung des Gerätes (optional). </td></tr>
|
<tr><td> <b>feed</b> </td><td>Definiert spezielle Eigenschaften der Energielieferung des Gerätes (optional). </td></tr>
|
||||||
<tr><td> </td><td>Ist der Schlüssel nicht gesetzt, speist das Gerät die PV-Energie in das Wechselstromnetz des Hauses ein. </td></tr>
|
<tr><td> </td><td>Ist der Schlüssel nicht gesetzt, speist das Gerät die PV-Energie in das Wechselstromnetz des Hauses ein. </td></tr>
|
||||||
<tr><td> </td><td><b>bat</b> - Solar-Ladegerät zur Batterie Direktladung. Ein Überschuß wird dem Inverter/Hausnetz zugeführt. </td></tr>
|
<tr><td> </td><td><b>bat</b> - Solar-Ladegerät zur Batterie Direktladung. Ein Überschuß wird dem Inverterknoten/Hausnetz zugeführt. </td></tr>
|
||||||
<tr><td> </td><td><b>grid</b> - die Energie wird ausschließlich in das öffentlich Netz eingespeist </td></tr>
|
<tr><td> </td><td><b>grid</b> - die Energie wird ausschließlich in das öffentliche Netz eingespeist </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
<tr><td> <b>limit</b> </td><td>Definiert eine eventuelle Wirkleistungsbeschränkung in % (optional). </td></tr>
|
<tr><td> <b>limit</b> </td><td>Definiert eine eventuelle Wirkleistungsbeschränkung in % (optional). </td></tr>
|
||||||
<tr><td> </td><td> </td></tr>
|
<tr><td> </td><td> </td></tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user