2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 06:39:11 +00:00

76_SolarForecast: contrib 1.42.0

git-svn-id: https://svn.fhem.de/fhem/trunk@29493 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2025-01-07 15:32:29 +00:00
parent 51fce89b6f
commit df4a5d0302

View File

@ -161,7 +161,7 @@ my %vNotesIntern = (
"entryGraphic: enrich hfcg hash, __normDecPlaces: use it from/to battery, ".
"setupBatteryDevXX : new icon & show key, colour of icon can be changed separately, maxbatteries set to 3 ".
"medianArray: switch to simpel array sort, Task 1: delete Weather-API status data at night ".
"add SoC forecast to NextHours store ",
"add SoC forecast to NextHours store, Battery bar chart: display of the device in the bar chart level 1 or 2 ",
"1.41.4" => "02.01.2025 minor change of Logtext, new special Readings BatPowerIn_Sum, BatPowerOut_Sum ".
"rename ctrlStatisticReadings to ctrlSpecialReadings ",
"1.41.3" => "01.01.2025 write/read battery values 0 .. maxbatteries to/from pvhistrory ".
@ -12760,7 +12760,6 @@ sub entryGraphic {
fsize => AttrNum ($name, 'graphicSpaceSize', 24),
maxVal => AttrNum ($name, 'graphicBeam1MaxVal', 0), # dyn. Anpassung der Balkenhöhe oder statisch ?
show_night => AttrNum ($name, 'graphicShowNight', 0), # alle Balken (Spalten) anzeigen ?
show_bat => 1, # Freischaltung Anzeige Batterie
show_diff => AttrVal ($name, 'graphicShowDiff', 'no'), # zusätzliche Anzeige $di{} in allen Typen
weather => AttrNum ($name, 'graphicShowWeather', 1), # Wetter Icons anzeigen
colorw => AttrVal ($name, 'graphicWeatherColor', $wthcolddef), # Wetter Icon Farbe Tag
@ -12843,10 +12842,11 @@ sub entryGraphic {
#########################
if ($gsel =~ /both/xs || $gsel =~ /forecast/xs) {
my %hfcg1;
$paref->{chartlvl} = 1; # Balkengrafik Ebene 1
## Werte aktuelle Stunde
##########################
$paref->{hfcg} = \%hfcg1; # (hfcg = hash forecast graphic)
$paref->{hfcg} = \%hfcg1; # hfcg = hash forecast graphic
$paref->{thishour} = _beamGraphicFirstHour ($paref);
## get consumer list and display it in Graphics
@ -12870,6 +12870,7 @@ sub entryGraphic {
$hfcg2{barcount} = $hfcg1{barcount}; # Anzahl Balken der Ebene1 zur Begrenzung Ebene 2 übernehmen
$paref->{chartlvl} = 2; # Balkengrafik Ebene 2
$paref->{beam1cont} = $paref->{beam3cont};
$paref->{beam2cont} = $paref->{beam4cont};
$paref->{colorb1} = AttrVal ($name, 'graphicBeam3Color', $b3coldef);
@ -12878,7 +12879,6 @@ sub entryGraphic {
$paref->{fcolor2} = AttrVal ($name, 'graphicBeam4FontColor', $b4fontcoldef);
$paref->{height} = AttrVal ($name, 'graphicBeamHeightLevel2', $paref->{height});
$paref->{weather} = 0;
$paref->{show_bat} = 0;
# Werte aktuelle Stunde
##########################
@ -14444,7 +14444,6 @@ sub _beamGraphic {
my $hfcg = $paref->{hfcg};
my $maxhours = $paref->{maxhours};
my $weather = $paref->{weather};
my $show_bat = $paref->{show_bat}; # Ladeempfehlungen anzeigen?
my $show_night = $paref->{show_night}; # alle Balken (Spalten) anzeigen ?
my $show_diff = $paref->{show_diff}; # zusätzliche Anzeige $di{} in allen Typen
my $lotype = $paref->{lotype};
@ -14475,7 +14474,7 @@ sub _beamGraphic {
my $barcount = $hfcg->{barcount} // 9999; # Anzahl Balken der vorangegangenen Ebene zur Begrenzung dieser Ebene
my $ret = q{};
$ret .= __weatherOnBeam ($paref) if($weather);
$ret .= __batRcmdOnBeam ($paref) if($show_bat);
$ret .= __batRcmdOnBeam ($paref);
my $m = $paref->{modulo} % 2;
if ($show_diff eq 'top') { # Zusätzliche Zeile Ertrag - Verbrauch
@ -14784,12 +14783,13 @@ sub __weatherOnBeam {
my $width = $paref->{width};
my $lang = $paref->{lang};
my $ret = q{};
my $barcount = $hfcg->{barcount} // 9999; # Anzahl Balken der vorangegangenen Ebene zur Begrenzung dieser Ebene
my $m = $paref->{modulo} % 2;
my $ii = 0;
my $ret = q{};
$ret .= "<tr class='$htr{$m}{cl}'><td class='solarfc'></td>"; # freier Platz am Anfang
my $ii = 0;
for my $i (0..($maxhours * 2) - 1) {
last if (!defined ($hfcg->{$i}{weather}));
@ -14807,7 +14807,7 @@ sub __weatherOnBeam {
};
$ii++; # wieviele Stunden Icons haben sind beechnet?
last if($ii > $maxhours);
last if($ii > $maxhours || $ii > $barcount);
# ToDo : weather_icon sollte im Fehlerfall Title mit der ID besetzen um in FHEMWEB sofort die ID sehen zu können
my ($icon_name, $title) = $hfcg->{$i}{weather} > 100 ?
weather_icon ($name, $lang, $hfcg->{$i}{weather}-100) :
@ -14901,10 +14901,11 @@ sub __batRcmdOnBeam {
next if($err);
my $bshow = BatteryVal ($name, $bn, 'bshowingraph', 0);
next if(!$bshow);
next if($bshow != $paref->{chartlvl}); # Anzeige nur auf Grafikebene "chartlvl"
my $ii = 0;
my $barcount = $hfcg->{barcount} // 9999; # Anzahl Balken der vorangegangenen Ebene zur Begrenzung dieser Ebene
$ret .= "<tr class='$htr{$m}{cl}'><td class='solarfc'></td>"; # freier Platz am Anfang
my $ii = 0;
for my $i (0..($maxhours * 2) - 1) {
if (!$show_night && $hfcg->{$i}{weather} > 99 && !$hfcg->{$i}{beam1} && !$hfcg->{$i}{beam2}) {
@ -14913,7 +14914,7 @@ sub __batRcmdOnBeam {
};
$ii++; # wieviele Stunden Icons sind bisher beechnet?
last if($ii > $maxhours);
last if($ii > $maxhours || $ii > $barcount);
my $bname = BatteryVal ($name, $bn, 'bname', '');
my $balias = BatteryVal ($name, $bn, 'balias', $bname);
@ -22912,7 +22913,8 @@ to ensure that the system configuration is correct.
<tr><td> </td><td> </td></tr>
<tr><td> <b>show</b> </td><td>Control of the battery display in the bar graph (optional) </td></tr>
<tr><td> </td><td><b>0</b> - no display of the device (default) </td></tr>
<tr><td> </td><td><b>1</b> - display of the device </td></tr>
<tr><td> </td><td><b>1</b> - Display of the device in the bar chart level 1 </td></tr>
<tr><td> </td><td><b>2</b> - Display of the device in the bar chart level 2 </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>asynchron</b> </td><td>Data collection mode according to the ctrlInterval setting (synchronous) or additionally by </td></tr>
<tr><td> </td><td>event processing (asynchronous). </td></tr>
@ -25381,7 +25383,8 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.
<tr><td> </td><td> </td></tr>
<tr><td> <b>show</b> </td><td>Steuerung der Anzeige der Batterie in der Balkengrafik (optional) </td></tr>
<tr><td> </td><td><b>0</b> - keine Anzeige des Gerätes (default) </td></tr>
<tr><td> </td><td><b>1</b> - Anzeige des Gerätes </td></tr>
<tr><td> </td><td><b>1</b> - Anzeige des Gerätes in der Balkengrafik Ebene 1 </td></tr>
<tr><td> </td><td><b>2</b> - Anzeige des Gerätes in der Balkengrafik Ebene 2 </td></tr>
<tr><td> </td><td> </td></tr>
<tr><td> <b>asynchron</b> </td><td>Modus der Datensammlung entsprechend Einstellung ctrlInterval (synchron) oder zusätzlich durch </td></tr>
<tr><td> </td><td>Eventverarbeitung (asynchron). </td></tr>