Hauptmenü

[FTUI 3] Charts

Begonnen von grossmaggul, 15 Januar 2021, 10:23:02

Vorheriges Thema - Nächstes Thema

Knallkopp_02

Ich bins nochmal und habe noch ein Frage.

Gibt es eine Möglichkeit die Anzeige des Balkens um eine bestimmte Zeit zu verschieben im Chart selber.

Folgendes Problem stellt sich.
Ich lasse um kurz nach 0 Uhr Werte schreiben, da dort der Tag vorbei ist und alle Werte berechnet sind die ich brauche.
In der Anzeige wird nun logischerweise die Balkenmitte auf dem Tageswechsel angezeigt. Kann ich die Anzeige irgendwie um 12h auf den Mittag des Vortages verschieben damit der Balken für den Tag gilt und nicht für "2"?

Lieben Gruß und ein schönes Wochenende euch allen.
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

Eisix




Hallo Knallkopp,

ja mit lp. Allerdings ist mir da gerade ein Problem aufgefallen wenn man zwei hat. Wenn ich sie gleichzeitig anzeigen will sieht man nichts. Blende ich einen aus wird der andere gezeigt und umgekehrt. Ist der eine ftui-chart-data ein normales dblog dann funktioniert es korrekt.

      <ftui-chart title="Stromverbrauch kWh" unit="month" y-min="0">
                <ftui-chart-data label="PV kWh Tag" type="bar" color="yellow" log="lp" spec="DbLog:logdb,offset=-60*60*24:SUN_2000_Ertrag:Schalter_SUN_2000_ENERGY_Total_EnergyDayLast"></ftui-chart-data>
                <ftui-chart-data label="kWh Tag" type="bar" color="#ff0000" log="lp" spec="DbLog:logdb,offset=-60*60*24:ShellyEM3_Zaehler:ShellyEM3_Zaehlerstand_EnergyDayLast"></ftui-chart-data>
                <ftui-chart-controls units="month, year"></ftui-chart-controls>
        </ftui-chart>


Gruß
Eisix

TimoD

Stehe vor folgendem Problem:

 ich würde gerne einen Plot erstellen, welcher eine horizontale Linie aus einer Variable des FHEM Devices macht.

Variable
EVU_Tibber:fc0_avg

Aufruf
ConstY:????

Habe nun herausgefunden, wie ich es als Plot löse:
Link

Bekomme es aber nicht in die Definition von FTUI3:
      <ftui-chart-data
     point-radius="1" color="red" fill="false"
                       fill log="myLogProxy" spec="ConstY:(ReadingsVal("EVU_Tibber","fc0_avg","0")/100)" [update]="TeslaSkipFull:Update:Time">
      </ftui-chart-data>

Funktioniert nicht, wie müsste den die Deklaration aussehen für ConstY & lokale Variable in FTUI3? Vielen lieben Dank :-)

TimoD

#258
Und dann habe ich noch zwei Fragen zu update / color, bei Anzeige als bars, gibt es die Möglichkeit, die Farbe der Balken, nach dem Inhalt zu skalieren?

Also z.B. color="step('0: danger, 7: warning, 20: success')"

Kann man das Update auch bei bsp:

              <ftui-chart-data
                                 point-radius="2" color="blue" fill="false"
                               fill log="myLogProxy" spec="ConstX:TimeNow(),0,1" [update]="TeslaSkipFull:Update" y-axis-id="y1">
              </ftui-chart-data>
trigger? Mit der Definition hier findet keine Aktualisierung statt. (Gibt es ein ForeReload o.ä. nur für das Chart)

Vielen lieben Dank :-)

Knallkopp_02

Hallo Eisix,
ich kann zumindest bestätigen, dass wenn man den Offset setzt nichts angezeigt bekommt.

was hat das mit dem lp aufsich? ist das ein anderes logging?

Gruß Knallkopp_02
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

joesy

Hallo zusammen,

ich habe auch ein Problem, bei dem ich nicht weiß, ob das so ist oder ich etwas falsch konfiguriere.

Wenn ich in einen Balkendiagramm 2 Graphen anzeigen lasse. Die Balken werden schmaler, aber dann übereinander dargestellt.

<ftui-chart width="90%" height="300px" unit="day" type="bar" y-label="Stromeinspeisung in Wh" x-min="0" x-max="24" y-min="1" y1-min="1" y-max="600" y1-max="600">
  <ftui-chart-data type="bar" fill label="Stromertrag pro Stunde" log="myDbLog" file="history" [update]="{{consumption}}:consumption:time" spec="{{consumption}}:consumption::delta-h:$val=($val/1)"></ftui-chart-data>
  <ftui-chart-data type="bar" fill color="red" label="Stromeinspeisung pro Stunde" log="myDbLog" file="history" spec="Stromzaehler:total_feed::delta-h:$val=($val/1)"></ftui-chart-data>
  <ftui-chart-controls units="day"></ftui-chart-controls>
</ftui-chart>

Danke
JoachimDu darfst diesen Dateianhang nicht ansehen.

Heiner

Hi,

erstaml grossen Dank an alle die FTUI V3 entwicklen, wesentlich schneller und einfacher als die erste Version.

Ich hab noch ein Problem mit Charts. Ich versuche die Regenvorhersage der ersten Version nachzubauen
(https://wiki.fhem.de/wiki/FTUI_Widget_Chart#7-Tage-Wettervorhersage_mit_Proplanta)

Aktuell kann ich meines wissens nur den Typ day, week, month oder 30d auswaehlen.

Wobei 30d "rollender Monat sein sollte also immer heute beginnt und 30 Tage in die Zukunft blickt.

Kann man auch irgendwie 7d oder 5d bauen.

Aktuell in der alten Version lasse ich mir die Regenwarscheinichkeit im Chart ueber 5 Tage darstellen.

Danke schon mal fuer eure Hilfe
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Eisix

Zitat von: Knallkopp_02 am 02 April 2023, 12:56:55Hallo Eisix,
ich kann zumindest bestätigen, dass wenn man den Offset setzt nichts angezeigt bekommt.

was hat das mit dem lp aufsich? ist das ein anderes logging?

Gruß Knallkopp_02


Hallo,

Das mit dem Offset sollte eigentlich nur mit lp (https://wiki.fhem.de/wiki/LogProxy#M.C3.B6gliche_.3Coptions.3E) funktionieren.

Für mich sieht es so aus als wenn die beiden lp's sich gegenseitig überschreiben. Haben beide den gleichen Zeitstempel. Da scheint eine Bedingung zu fehlen die das ganze nebeneinander packt.
Eigentlich wollte ich die beiden Bars stapeln(stacked) aber das habe ich auch noch nicht zum laufen gekriegt.
Gibt es jemanden mit einem funktionierenden Beispiel?

Gruß
Eisix

Knallkopp_02

DBLOG nutze ich ja, kannte den Begriff LP nicht.

dasmit dem Offset wenn ich nur 1 Wert habe kann ich auch bestätigen, dass es läuft.

Nur gestapelt macht er keinen Offset, auch wenn alle Werte damit angegeben sind und auch den gleichen Zeitstempel haben. bei mir ist es 23:59:59, die ich alle um 12h nach vorn verschieben möchte.

Gruß Knallkopp_02 und noch einen schönen Ostermontag an alle
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

Familienpapi

Zitat von: Heiner am 07 April 2023, 10:20:48Hi,

erstaml grossen Dank an alle die FTUI V3 entwicklen, wesentlich schneller und einfacher als die erste Version.

Ich hab noch ein Problem mit Charts. Ich versuche die Regenvorhersage der ersten Version nachzubauen
(https://wiki.fhem.de/wiki/FTUI_Widget_Chart#7-Tage-Wettervorhersage_mit_Proplanta)

Aktuell kann ich meines wissens nur den Typ day, week, month oder 30d auswaehlen.

Wobei 30d "rollender Monat sein sollte also immer heute beginnt und 30 Tage in die Zukunft blickt.

Kann man auch irgendwie 7d oder 5d bauen.

Aktuell in der alten Version lasse ich mir die Regenwarscheinichkeit im Chart ueber 5 Tage darstellen.

Danke schon mal fuer eure Hilfe


Hallo Zusammen,
da würde ich mich gerne anschliessen wollen. Ich habe zwar die alten Charts in der 3er Oberfläche einbauen können, sehe das jedoch nicht als zielführend an.
Gibt es bereits Ansätze, dies über das alte Setup auf die 3er Version umzubauen? Der LogProxy wird doch über die Subroutine entsprechend geschrieben. Wie müsste dies dann im 3er aussehen?

Hier meine 2er Version:

Der FHEM Subroutine Code:
#######################################################################################
## Proplanta Wetterauswertung

sub
logProxy_proplanta2Plot($$$$;$$) {
  my ($device, $fcValue, $from, $to, $fcHour, $expMode) = @_;
  my $regex;
  my @rl;
  return undef if(!$device);
  if($fcValue =~ s/_$//) {
    $regex = "^fc[\\d]+_".$fcValue."[\\d]{2}\$";
  } else {
    $regex = "^fc[\\d]+_".$fcValue."\$";
  }

  $fcHour = 12 if(!defined $fcHour);
  $expMode = "point" if(!defined $expMode);

  if( defined($defs{$device}) ) {
    if( $defs{$device}{TYPE} eq "PROPLANTA" ) {
      @rl = sort{
        my ($an) = ($a =~ m/fc(\d+)_.*/);
        my ($bn) = ($b =~ m/fc(\d+)_.*/);
        $an <=> $bn or $a cmp $b;
      } ( grep /${regex}/,keys %{$defs{$device}{READINGS}} );
      return undef if( !@rl );
    } else {
      Log3 undef, 2, "logProxy_proplanta2Plot: $device is not a PROPLANTA device";
      return undef;
    }
  }

  my $fromsec = SVG_time_to_sec($from);
  my $tosec   = SVG_time_to_sec($to);
  my $sec = $fromsec;
  my ($h,$fcDay,$mday,$mon,$year);
  my $timestamp;
 
  my $reading;
  my $value;
  my $prev_value;
  my $min = 999999;
  my $max = -999999;
  my $ret = "";

  # while not end of plot range reached
  while(($sec < $tosec) && @rl) {
    #remember previous value for start of plot range
    $prev_value = $value;
    $reading = shift @rl;
    ($fcDay) = $reading =~ m/^fc(\d+).*/;
    $h = ($reading =~ m/.*(\d\d)$/)?$1:$fcHour;
    $value = ReadingsVal($device,$reading,undef);

    ($mday,$mon,$year) = split('\.',ReadingsVal($device,"fc".$fcDay."_date",undef));
    $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year, $mon, $mday, $h, 0, 0);
    $sec = SVG_time_to_sec($timestamp);

    # skip all values before start of plot range
    next if( SVG_time_to_sec($timestamp) < $fromsec );

    # add first value at start of plot range
    if( !$ret && $prev_value ) {
      $min = $prev_value if( $prev_value < $min );
      $max = $prev_value if( $prev_value > $max );
      $ret .= "$from $prev_value\n";
    }

    # done if after end of plot range
    last if($sec > $tosec);

    $min = $value if( $value < $min );
    $max = $value if( $value > $max );

    # add actual controll point
    $ret .= "$timestamp $value\n";

    # Log 1, "$timestamp $value -0- $reading";
  }
  if(($sec < $tosec) && !@rl && ($expMode eq "day")) {
    $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year, $mon, $mday, 23, 59, 59);
    if(SVG_time_to_sec($timestamp) < $tosec) {
      $ret .= "$timestamp $value\n";
    } else {
      $ret .= "$to $value\n";
    }
  } elsif(($sec > $tosec) && ($expMode eq "day")) {
    $value = $prev_value + ($value - $prev_value)*(86400 + ($tosec - $sec))/86400;
    $ret .= "$to $value\n";
  }
  return ($ret,$min,$max,$prev_value);
}

Und die beiden Charts, die ich mit der 2er Oberfläche erfolgreich laufen haben:
<ftui-view-item width="100%" margin="0 0 0 0" target="view1Wetter">
  <ftui-column>
    <ftui-label class="size-2" text="Vorhersage&nbsp;Temperatur"></ftui-label>
    <div data-type="chart" data-device="Wetter" data-get="state" data-logdevice='["myLogProxy"]' data-columnspec='["Func:logProxy_proplanta2Plot(\\x22Wetter\\x22,\\x22temp_\\x22,$from,$to,12,\\x22day\\x22)"]'
     data-style='["ftui l0"]'
     data-ptype='["quadraticSmooth"]'
     data-uaxis='["primary"]'
     data-legend='["Temperatur"]'
     data-yunit=" &deg;C" data-ytext="Temperatur" data-y_margin="16"
     data-minvalue="auto" data-maxvalue="auto"
     data-daysago_start = "0" data-daysago_end = "-2" data-timeformat="ee\LF\hh"
     data-xticks="480" data-showlegend="false" data-width="100%" data-height="125px" class="nobuttons fullsize">
    </div>

    <ftui-label class="size-2" text="Vorhersage&nbsp;Wolken&nbsp;und&nbsp;Regen"></ftui-label>
    <div data-type="chart" data-device="Wetter" data-logdevice='["myLogProxy","myLogProxy","myLogProxy"]' data-columnspec='["Func:logProxy_proplanta2Plot(\\x22Wetter\\x22,\\x22rain_\\x22,$from,$to,12,\\x22day\\x22)", "Func:logProxy_proplanta2Plot(\\x22Wetter\\x22,\\x22chOfRain_\\x22,$from,$to,12,\\x22day\\x22)", "Func:logProxy_proplanta2Plot(\\x22Wetter\\x22,\\x22cloud_\\x22,$from,$to,12,\\x22day\\x22)"]'
     data-style='["ftui l6fill","ftui l5fill","ftui l1fill"]'
     data-ptype='["quadraticSmooth","quadraticSmooth","quadraticSmooth"]'
     data-uaxis='["primary","secondary","secondary"]'
     data-legend='["Regen","Regenwahrscheinlichkeit","Wolken"]'
     data-yunit=" mm" data-ytext="" data-yunit_sec=" %" data-ytext_sec="Regen / Wolken"
     data-minvalue="0" data-maxvalue="6" data-minvalue_sec="0" data-maxvalue_sec="100"
     data-daysago_start="0" data-daysago_end="-2" data-timeformat="ee\LF\hh"
     data-xticks="480" data-showlegend="false" data-width="100%" data-height="125px" class="nobuttons fullsize">
   </div>
  </ftui-column>
</ftui-view-item>

Dass das \\x22 durch ein einfaches Anführungszeichen ersetzt werden muss, habe ich bereits herausgefunden. Aber dann???

Vielen Dank für Eure Mitarbeit.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

Heiner

ZitatDass das \\x22 durch ein einfaches Anführungszeichen ersetzt werden muss, habe ich bereits herausgefunden. Aber dann???

Vielen Dank für Eure Mitarbeit.

Hi, aendere noch den Typ von "quadraticSmooth" auf "line" dann sollte es klappen.

Ist halt weniger schoen geht aber. Weniger gut ist aber das mann keine rollenden 5 Tage oder so hinbekommt. auf dr einen seite gibts das als "30d" aber leider halt nicht flexibler.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Familienpapi

Hallo Heiner,

vielen Dank für den Tipp. Nach ein paar Tests, bleibe ich dann doch vorerst bei der 2er Version. Die gefällt mir optisch besser und die tagesgenaue Beschränkung ist mir wichtig.
Vielleicht tut sich in dem Bereich ja noch was bei den 3er Charts. Das Thema kam nun schon öfters hoch.

Beste Grüße
Andreas
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

teichtaucher

Hi, ich habe ein kleines Problem mit den Charts. Ich habe ein Chart das den PV Ertrag und den Verbrauch anzeigt. Die Anzeige passt soweit. Allerdings ist mir ein kleines Problem aufgefallen: Wenn ich auf einen der Charts klicke werden nicht die passenden Datenpunkte auf den Charts angezeigt. Also wenn ich bei PV Ertrag auf 8:00 Uhr klicke wird mir der richtige PV Ertragswert angezeigt, aber der Datenpunkt bei Verbrauch (in rot) von ca. 2:00 Uhr. Umgekehrt ist es ähnlich, wenn ich auf den Verbrauch von 2:00 Uhr klicke wird der PV Ertrag von 8:00 Uhr angezeigt.
Als Quelle verwende ich ein Filelog. Die Kurven liegen richtig übereinander und die Werte sind im Filelog auch zeitlich zusammen. Ich habe nur das kleine Problem mit dem Anklicken den Datenpunkten. Habt ihr das auch? Wie kann ich das lösen?

Dracolein

#268
Grüße, habe auch mal wieder ein Problem.

Ich möchte Werte der letzten 7 Tage (unit="week") darstellen, welche in 6 verschiedenen FileLog-Dateien abgespeichert sind. Was muss ich für Parameter benutzen, damit diese Dateien gemeinsam zu einer Datenlinie zusammengebaut werden? Aktuell sehe ich nur den Datenbereich des heutigen Tages auf dem Diagramm

edit:
found it:
attr devicename creategluedfile 1
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Dracolein

Anderes Problem: Ein Diagramm, bestehend aus 2 Graphen, soll Daten der letzten 30 Tage darstellen. Eine Datenlinie ist parametriert mit "fill", also ein Liniendiagramm, die andere ist parametriert mit type="bar", einer Balkendarstellung. Das funktioniert soweit. Code hier:

          <ftui-chart unit="30d">
            <ftui-chart-data file="CURRENT" log="Log_PVErtragAndEinspeisungDay" spec="4:SMATripower6.PVErtragDay" label="Ertrag" [update]="SMATripower6:PVErtragDay:time"
                type="bar" background-color="#ffcc0050" color="#ffcc00"></ftui-chart-data> 
            <ftui-chart-data file="CURRENT" log="Log_PVErtragAndEinspeisungDay" spec="4:HomeManager.PVEinspeisungDayNew" label="Einspeisung" [update]="HomeManager:PVEinspeisungDayNew:time"
                fill background-color="#00cc3350" color="#00cc33"></ftui-chart-data>  
          </ftui-chart>



Wenn ich jedoch die Linien ebenfalls als Balken darstellen möchte, wird gar nichts mehr angezeigt. Mein Wunsch wäre eigentlich eine Darstellung zweier Balken pro Tag.
Was mache ich falsch?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;