Chart widget feature vorhanden?

Begonnen von Eisix, 28 Januar 2020, 10:13:50

Vorheriges Thema - Nächstes Thema

Eisix

Hallo,

ich staple den Stromverbrauch verschiedener Geräte. Wenn ich jetzt eine Kurve über die Legende ausblende werden die verbleibenden Kurven nicht neu berechnet und zeigen den alten Verlauf.
Ist es möglich das durch das ausblenden eine Neuberechnung der Grafik ausgelöst wird und nur die sichtbaren Daten gestapelt werden?

Gruß
Eisix



eki

Muss ich mir mal anschauen, geht bisher definitiv nicht und muss implementiert werden.

Eisix

Hallo eki,

Wenn ich was helfen oder testen soll melde dich bitte.

Gruß
Eisix

eki

#3
So, ich habe mal was gebastelt. Mit data-legend_stacking="true" wird das Verhalten aktiviert.Ich hoffe, das hat keine Seiteneffekte, daher bitte ausgiebig testen. Das Ganze beruht nicht auf der Chart Version, die mit FTUI standardmäßig mitkommt sonder auf einer Neueren (Details siehe: https://forum.fhem.de/index.php/topic,100412.msg938522.html#msg938522). Daher nicht wundern, wenn da Dinge drin sind, die nicht genauso sind, wie in der 'alten' Version.

Eisix

Hallo eki,

das neu Berechnen funktioniert perfekt. Alle Charts die ich habe funktionieren. Den einzigsten Effekt den ich sehe das "Legend Cursor" nicht mehr mittig angezeigt wird sondern links.

Super danke für die schnelle Umsetzung!

Gruß
Eisix

Eisix

Hallo eki,

ist es geplant die neue Version standardmäßig auszuliefern?

Gruß
Eisix

Eisix

Hallo Eki,

heute ist mir ein Fehler aufgefallen. Ich staple 8 Strom-Verbrauchskurven von einzelnen Verbrauchern und darüber der Gesamtverbrauch.Als Beispiel ich habe Kurve 1-5 sichtbar, wenn ich jetzt Nr.3 ausblende fallen 4 und 5 aus dem Stapel auf die X-Achse und nicht auf 2. Nach dem einblenden von 3 stimmt wieder alles. Bin nicht 100% sicher aber scheint nur Nr.3 zu betreffen. Die Werte von Nr.3 sind klein aber >1, ich denk das sollte nicht relevant sein.

Gruß
Eisix

eki

kannst Du mal Deine Definition hier posten (<div... data-type="chart"...

Eisix

#8

                                        data-logdevice='["FileLog_Schalter_Server","FileLog_Schalter_Aquarium_XXX","FileLog_Schalter_Aquarium_XY","FileLog_Schalter_TV","FileLog_Schalter_Receiver","FileLog_Heizung_VR_1","FileLog_Schalter_Waschmaschine","FileLog_Schalter_Waeschetrockner","FileLog_Stromzaehler"]'
                                        data-logfile='["-","-","-","-","-","-","-","-","-"]'
                                        data-columnspec='["4:PowerUSED_Licht","4:PowerUSED_Licht","4:PowerUSED_Licht","4:PowerUSED_Licht","4:PowerUSED_Licht","4:PowerUSED_Licht","4:PowerUSED_Licht","4:PowerUSED_Licht","4:PowerUSED_Licht"]'
                                        data-style='["ftui l3fill","ftui l4fill","ftui l7fill","ftui l5fill","ftui l6fill","ftui l1fill","ftui l2fill","ftui l8fill","ftui l0"]'
                                        data-ptype='["lines","lines:0","lines:1","lines:2","lines:3","lines:4","lines:5","lines:6","lines"]'
                                        data-uaxis='["primary","primary","primary","primary","primary","primary","primary","primary","primary"]'
                                        data-legend='["Server W/h","Aquarium XXX W/h","Aquarium XYW/h","Receiver W/h","TV W/h","Heizung_VR W/h","Waschmaschine W/h","Waeschetrockner W/h","Lichtstrom W/h"]'
        data-legend_stacking="true"
    data-yunit="W"
        data-minvalue="0"
        data-maxvalue="auto"
        data-yunit_sec=""
        data-minvalue_sec="auto"
        data-maxvalue_sec="auto"
        data-height="350"
        data-width="700"
data-nofulldays="true"
        data-daysago_start="0"
        data-crosshair="true"
        data-cursorgroup="1"
        data-scrollgroup="1"
        data-showlegend="false"
        data-yticks="auto"
        data-xticks="auto"
class="bottom"
></div>


Eisix

Hallo eki,

gibt es eine Möglichkeit den Versatz der gestapelten Linien auf 0 zu bringen. Also eine 2d Ansicht bei der Linien mit Wert 0 von den anderen verdeckt werden?

Der Screenshot sollte verdeutlichen was ich meine.

Gruß
Eisix

eki

Ich fürchte, das musst Du mir noch etwas genauer erklären. Am besten mit Deiner aktuellen Definition und was genau daran Du anders haben möchtest.

Benutzt Du 2D oder 3D?
Meinst Du mit stapeln das Feature, womit Graphen übereinander gestapelt werden können?

Eisix

Ich stapele den Stromverbrauch diverser Einzelverbraucher, meistens Tasmota Stecker und oben drüber liegt der Stromzähler als Linie (im Bild hellblau).
Im Screenshot sieht man die rote Kurve welche glaube ich von der Waschmaschine ist. Dahinter scheint rechts eine blaue, gelbe,.. Kurve durch welche ein Gerät zeigt das gerade aus ist und null Verbrauch hat. Das führt dazu das die Stromzähler Linie überdeckt wird.
Ich nutze hier 2D und stapele die Graphen übereinander. Der Code hat sich nicht geändert (wie hier im Thread) es sind nur mehr Geräte dazu gekommen. Sind mittlerweile glaube ich um die 15.

So wie ich das sehe wird bei jeder zusätzlichen Linie ein leichter Versatz nach rechts gemacht um die Linie darzustellen. In einem reinen 2D würde ein Gerät mit 0 Verbrauch ja die vorherige Linie überschreiben.

Hoffe das war jetzt verständlich?

Gruß
Eisix


eki

Absichtlich habe ich da auf jeden Fall keinen Versatz eingebaut. Sind denn die Zeitstempel der einzelnen Logeinträge identisch oder ist da ein Versatz?

Eisix

Das war auch mein erster Gedanke, das die Kurven zeitlich versetzt sind, jede Kurve kriegt einen neuen Punkt alle 3 Minuten aber nicht zum gleichen Zeitpunkt.
Da die Kurven aber gestapelt sind sollte das irrelevant sein da die erste Kurve die untere Begrenzung der zweiten Kurve ist, außerdem wäre dann ein Versatz in beide Richtungen und nicht gleichmäßig in eine.
Mathematisch stelle ich mir den Vorgang so vor das die erste Kurve von Punkt zu Punkt berechnet wird, dann die zweite ebenso und zur ersten in Y-Richtung dazu addiert wird. Hier kommt aber wohl der X-Versatz ins Spiel.

Gruß
Eisix

eki

warum sollte der zeitliche Verastz beim Stapeln irrelevant sein? Das Stapeln benutzt genauso die Zeitstempel der Logeinträge.
Technisch geht das so, dass quasi ein gefülltes Polygon gemalt wird dessen eine Seite die Werte der darunter liegenden Kurve sind und dessen andere Seite aus der Summe der Punkte der darunter liegenden Kurve und der darüber liegenden gebildet wird.