Chart Widget und negative Werte, Anzeige von PV Daten

Begonnen von stefanru, 28 April 2023, 16:57:25

Vorheriges Thema - Nächstes Thema

stefanru

Hi,

gibt es eine Möglichkeit das das Chart Widget bei fill vom 0 Wert aus füllt?
Bei mir füllt es vom niedrigsten Wert aus.
Für die Anzeige der PV Daten wäre es toll wenn es vom 0 Wert aus füllen würde.
Plot macht das so aber das Chart widget leider nicht.

Siehe Bilder Chart und Plot im Anhang.

Vielen Dank und viele Grüße,
Stefan

eki

Ja, ist aber ein bisschen kompliziert (leider). Es wird die Möglichkeit (wie im Wiki bei der Wettervorhersage dargestellt) des Verbindens von Graphen verwendet (der Graph mit den eigentlichen Daten wird einfach bei 0 über eine logProxy Funktion geschlossen). Folgendes müsstest Du tun:

1. In FHEM ein logProxy Device definieren (define lp logProxy)
2. in 99_MyUtils eine Funktion definieren wie folgt:
sub logProxy_filldown0($$)
{
  my($devspec,$array) = @_;

  my @outarray;
  my $start = $array->[0]->[0];
  my $minsecs = 60*60; # Minimum distance between plots in seconds (here 15 minutes)
  my $acttime;
  my $lastp;
 
  @outarray[0] = $array->[0];
  @outarray[0]->[0] -= 1;
  @outarray[0]->[1] = 0;

  foreach my $point ( @{$array} ) {
    $acttime = $point->[0];
    push(@outarray,$point);
$lastp=$point;
  }
  lastp->[0] += 1;
  lastp->[1] = 0;
  push(@outarray,$lastp);

  return \@outarray;

3. Deine Plot Definition wie in folgendem Beispiel anpassen (einfach die FileLog_PVAnlage... Teile durch Deine PV Device und Readings ersetzen)
data-logdevice='["FileLog_PVAnlage","lp","lp","lp","lp"]'
data-columnspec='[ "4:PVAnlage.status-storage_level\\x3a::",
["FileLog:FileLog_PVAnlage,postFn=\"logProxy_filldown0\":4:PVAnlage.status-grid_power\\x3a::","Func:logProxy_values2Plot([[$from,0],[$to,0]])"],
["FileLog:FileLog_PVAnlage,postFn=\"logProxy_filldown0\":4:PVAnlage.status-load_power\\x3a::","Func:logProxy_values2Plot([[$from,0],[$to,0]])"],
["FileLog:FileLog_PVAnlage,postFn=\"logProxy_filldown0\":4:PVAnlage.status-pv_power\\x3a::","Func:logProxy_values2Plot([[$from,0],[$to,0]])"],
["FileLog:FileLog_PVAnlage,postFn=\"logProxy_filldown0\":4:PVAnlage.status-storage_power\\x3a::$fld[3]=-$fld[3]","Func:logProxy_values2Plot([[$from,0],[$to,0]])"]]'
data-style='["ftui l6 graph_shadow thinline","ftui l2fill thinline","ftui l1fill thinline","ftui l4fill thinline","ftui l6fill thinline"]'
data-ptype='["lines","lines","lines","lines","lines"]'
data-uaxis='["secondary","primary","primary","primary","primary"]'
data-legend='["Speicherladung","Bezug","Verbrauch","PV Input","Speicher"]'

Eisix

Hallo,

ich hab bei mir eine Nullinie eingezogen.

                                <div data-type="chart"
                                        data-logdevice='["lp","logdb","logdb","logdb","logdb","logdb"]'
                                        data-logfile='["-"]'
                                        data-columnspec='["ConstY:1","ShellyEM3:Power_P2:::","ShellyEM3:Power_P1:::","ShellyEM3:Power_P0:::","ShellyEM3:pv:::","ShellyEM3:Power_Total:::"]'
                                        data-style='["ftui l5dash","ftui l4fill","ftui l1fill","ftui l0fill","ftui l3","ftui l2"]'
                                        data-ptype='["lines","lines:0","lines:1","lines:2","lines","lines"]'
                                        data-legend='["0","L3","L2","L1","PV","Gesamt"]'
                                        data-uaxis='["primary"]'
                                        data-legend_stacking="true"
                                        data-showlegend="true"
                                        data-legendpos='["behind","top"]'
                                        data-yunit="W"
                                        data-minvalue="auto"
                                        data-maxvalue="auto"
                                        data-yunit_sec=""
                                        data-minvalue_sec="auto"
                                        data-maxvalue_sec="auto"
                                        data-height="400"
                                        data-width="900"
                                        data-nofulldays="true"
                                        data-daysago_start="6h"
                                        data-daysago_end="now"
                                        data-crosshair="true"
                                        data-cursorgroup="1"
                                        data-scrollgroup="1"
                                        data-showlegend="false"
                                        data-yticks="auto"
                                        data-xticks="auto"
                                        class="bottom"
                                ></div>


Ist nur eine Krücke sollte aber optisch ein ähnliches Resultat erzeugen.

Gruß
Eisix

stefanru

Ok, das mit logproxy hatte ich gesehen mich aber nicht dran getraut.
Danke für die Erklärungen.
Das mit der 0 Linie gefällt mir sehr gut.

Gruß,
Stefan

eki

Zitat von: Eisix am 03 Mai 2023, 15:02:03Hallo,

ich hab bei mir eine Nullinie eingezogen.

                                <div data-type="chart"
                                        data-logdevice='["lp","logdb","logdb","logdb","logdb","logdb"]'
                                        data-logfile='["-"]'
                                        data-columnspec='["ConstY:1","ShellyEM3:Power_P2:::","ShellyEM3:Power_P1:::","ShellyEM3:Power_P0:::","ShellyEM3:pv:::","ShellyEM3:Power_Total:::"]'
                                        data-style='["ftui l5dash","ftui l4fill","ftui l1fill","ftui l0fill","ftui l3","ftui l2"]'
                                        data-ptype='["lines","lines:0","lines:1","lines:2","lines","lines"]'
                                        data-legend='["0","L3","L2","L1","PV","Gesamt"]'
                                        data-uaxis='["primary"]'
                                        data-legend_stacking="true"
                                        data-showlegend="true"
                                        data-legendpos='["behind","top"]'
                                        data-yunit="W"
                                        data-minvalue="auto"
                                        data-maxvalue="auto"
                                        data-yunit_sec=""
                                        data-minvalue_sec="auto"
                                        data-maxvalue_sec="auto"
                                        data-height="400"
                                        data-width="900"
                                        data-nofulldays="true"
                                        data-daysago_start="6h"
                                        data-daysago_end="now"
                                        data-crosshair="true"
                                        data-cursorgroup="1"
                                        data-scrollgroup="1"
                                        data-showlegend="false"
                                        data-yticks="auto"
                                        data-xticks="auto"
                                        class="bottom"
                                ></div>


Ist nur eine Krücke sollte aber optisch ein ähnliches Resultat erzeugen.

Gruß
Eisix
Das finde ich, ist auf jeden Fall die einfachere Lösung verglichen zu der mit logProxy (manchmal denkt man einfach zu umständlich). Eisix, falls das OK für Dich ist, würde ich das ins Chart Wiki mit aufnehmen, können ja andere vielleicht auch gebrauchen.

Eisix

@eki
Kann gerne ins Wiki. Immer wieder froh wenn ich anderen hier auch helfen kann, nehme ja auch selbst genug Hilfe in Anspruch.

Gruß
Eisix