SKB-CGN / ioBroker.energiefluss

This ioBroker adapter allows to display an energyflow animation inside an iframe or HTML DIV.
MIT License
44 stars 5 forks source link

Feature: Animationsgeschwindigkeit #94

Closed BenAhrdt closed 1 year ago

BenAhrdt commented 1 year ago

Ist es möglich der Animierten Flüsse eine weitere Option hinzu zu fügen? Idee: Man wählt Verbräuche aus, welche zusammengezählt als 100% definiert sind. Entsprechend der prozentualen Anteile der Verbräuche werden die Geschwindigkeiten dargestellt. (Nicht ausgewählte Verbraucher und die Erzeugung, Netzbezug usw. werden mit 100% Geschwindigkeit dargestellt)

Idee 2: Der Verbrauch sind 100% und jeder Wert wir entsprechenden angepasst.

SKB-CGN commented 1 year ago

Ist seit der aktuellen Version inkludiert.

BenAhrdt commented 1 year ago

Wie funktioniert denn die Berechnung? Bei mir bewegt sich ein 550W Verbraucher gleich schnell wie ein 100W oder 200W Verbraucher. Wird jeder Verbraucher einzeln behandelt und die Geschwindigkeit anhand des Gesamtverbrauchs ausgegeben, oder werden Sie zusammen gezählt?

Habe bspw. einen Bereich, der wird gezählt, darin sind 2 Verbraucher gemessen und ich habe die DIfferenz noch.. also eigentlich mehr W als bezogen werden, aber eben eine Verbraucher rictige Angabe: Bspw.

Haus 1A: 550W Verbraucher 1: 50W Verbraucher 2: 0W Rest: 500W

macht ja in Summe genau das doppelte nämlich 550W + 50W + 0W + 500W = 1100W

Habe noch ein GIF angehangen. 1A und Rest1A Bspw. sind nah beieinander und geschwindigkeitsmäßig von der Animation nicht nah beieinander.

energiefluss-0-buanet-iobroker1-Google-Chrome-2023-01-27-19-26-39

SKB-CGN commented 1 year ago

Steht eigentlich in der Beschreibung.

Der höchste Verbraucher bekommt die Geschwindigkeit, die für die gesamte Animation angegeben ist. Standard: 2000ms

Jeder Verbraucher bekommt anhand seines Verbrauchs + 1000ms und wird langsamer.

BenAhrdt commented 1 year ago

Ist aber leider nicht so zu erkennen, denn gibt es bspw. 500W, 499W, 10W und 9W Dann hat man immer nur einen Sprung von der gleichen Zeitdifferenz? (Man sieht ja im Video kaum einen Unterschied von Rest 1A zu Heizung 1B und dass sind 450W Unterschied.

wäre nicht eine prozentuale Aufteilung besser?

SKB-CGN commented 1 year ago

Ich kann bei deinen Werten genau das Erkennen, was Sache ist.

Jede Linie läuft jeweils 1 Sekunde langsamer. Dabei ist es ja unerheblich, wieviel Watt Unterschied ist.

Es ist ja wichtig, so wie Deine Anfrage gestellt war, zu wissen welcher Verbraucher das Meiste verbraucht, ohne die Werte zu kennen.

BenAhrdt commented 1 year ago

Nicht nur den meisten, sondern generell den Verbrauch. Wenn der Unterschied zwischen bspw. 1000 und 900 der selbe ist als wäre es 1000 und 10 finde ich nicht sehr gut. Denke wirklich % wären besser. Bspw. Einfach den Verbrauch = 100% und dann die Verbraucher % berechnet und entsprechend verlangsamt. Wäre doch dann gut zu erkennen. Oder ?

BenAhrdt commented 1 year ago

Also der Hintergrund ist dass wenn ich sagen wir 3 werte habe: 510W 500W 50W

dass dann die ersten beiden wesentlich schneller laufen als die 50W Ist ja auch ein deutlich höherer Verbrauch. Verständlich was ich meine?

SKB-CGN commented 1 year ago

Aktuell zeigt der Adapter dies Geschwindigkeit wie folgt an:

Ich versuche gerade zu verstehen, wie Du das meinst.

Ist es eher so:

Gesamtverbrauch: 1000 Watt

  1. Verbrauch 500W
  2. Verbrauch 300W
  3. Verbrauch 200W

Geschwindigkeit angenommen bei Einstellung von 2000ms:

  1. 1000ms (50%)
  2. 3400ms (30%)
  3. 3600ms (20%)
BenAhrdt commented 1 year ago

Ja fast ist es so gemeint, denn Du hast einmal in deiner Rechnung die % abgezogen und einmal die Differenz drauf gerechnet.

Im Prinzip einfach Prozentual vom Gesamtverbrauch, also wenn man "Mehr Verbraucher" als Gesamt hat mit berücksichtigt. Ist ja bei deinem Beispiel schon: Um deine interne Anniation mit den 2000ms bestehen zu lassen, würde ich am einfachsten 20ms pro %, die von den 100% abweichen drauf rechnen.

Dein Beispiel: Gesamt = 1000W

V1 = 500W => 50% => 100% + 50% = 2000ms + 1000ms = 3000ms V2 = 300W => 30% => 100% + 70% = 2000ms + 1400ms = 3400ms V3 = 200W => 20% => 100% + 80% = 2000ms + 1600ms = 3600ms

Noch ein Beispiel mit ausgelagerter Restwertberechnug => "Mehr Verbrauch" als Gesamt.

Gesamt: 1000W

V1 = 500W => 50% => 100% + 50% => 2000ms + 1000ms = 3000ms V2 = 50W => 5% => 100% + 95% => 2000ms + 1900ms = 3900ms V3 (Rest): 450W => 45% => 100% + 55% = 2000ms + 11000ms = 3100ms

Ich hoffe das war Verständlich. Ps. die ms pro % Könnte man noch höher nehmen, bzw. einstellbar machen, damit es eindeutiger wird.

Alternativ bezieht sich alles auf die 100% =2000ms. Will man es also langsamer, so erhöht man diese Zeit.

Bin gespannt auf deine Ausführung :-)

Ps. worauf sind eigentlich die 2000ms bezogen? Auf den gesamten Weg? Der ist ja bei jedem Verbraucher anders, oder auf den gelben Bereich?

SKB-CGN commented 1 year ago

Ich denke, wir nähern uns 😀

Ich werde es so rechnen:

Anzahl der Verbraucher * 2000ms (konfigurierbar)

Das ist die Gesamt Geschwindigkeit.

Diese dann in prozentual pro Verbraucher.

Vom Beispiel oben:

3 * 2000 = 6000 -> 200%

  1. Verbraucher = 6000 - 3000 = 3000
  2. Verbraucher = 6000 - 1800 = 4200
  3. Verbraucher = 6000 - 1200 = 4800

Je größer die Zahl, desto langsamer die Linie.

So ist Verbraucher 2 um fast 50% langsamer als 1.

BenAhrdt commented 1 year ago

Liest sich erst mal gut mit der max Zeit. Hatte auch die Idee, aber wollte Dich nicht verwirren :-D was sind die 200%? Stehe grad auf dem Schlauch.

SKB-CGN commented 1 year ago

Ich habe den Wertebereich verdoppelt, damit die Geschwindigkeit merklich anders werden.

Ich rechne das später nochmal genauer aus - denn bei vielen Verbrauchern kann sich die Verdopplung auch negativ auswirken.

Schaue ich mir aber nochmal an.

BenAhrdt commented 1 year ago

OK, Du rechnest aber unten mit den 30% und 20% genauso, als wären die 6000 = 100%, also ist die Verdoppelung wieder weg. Auch würde ich nicht nur die Anzahl nehmen, denn bei einem Hohen Verbraucher mit verbrauch gegen 100% ... sagen wir 98 oder 99, dann geht die Zeit gegen 0. es sei denn diese Zeit rechnest Du auf die vorhandenen 2000ms Standard drauf, dann passt es ;-)

Edit: OK, jetzt habe ich verstanden, was Du mit Verdoppelung gemeint hast...ok.

BenAhrdt commented 1 year ago

Kann man schon was testen?

SKB-CGN commented 1 year ago

Ruhig, ruhig ;-)

Es ist Wochenende und ich habe frei.

Nächste Woche geht's weiter.

BenAhrdt commented 1 year ago

OK, alles klar.

SKB-CGN commented 1 year ago

Du kannst einfach nochmal die Version drüber installieren und einmal schauen, wie es bei Dir mit der Geschwindigkeit aussieht. Ich denke, es sieht ganz gut aus.

BenAhrdt commented 1 year ago

Mache ich spätestens morgen. Bin gerade nicht zu Hause.

BenAhrdt commented 1 year ago

Was sagst Du hierzu? Finde es schon ganz gut, aber finde auch, dass sich gerade unten die 540W, 360W und die 180W sich nicht großartig unterscheiden. Auch die 13W in der Mitte sehen nicht so aus, als wäre sie nur ein kleiner Anteil von den Werten darüber oder darunter. Oder wie siehst Du das?

energiefluss-0-buanet-iobroker1-Google-Chrome-2023-01-30-21-26-49

SKB-CGN commented 1 year ago

Ich habe die Rechnung etwas verändert.

Grundgeschwindigkeit / Gesamtverbrauch

Somit hat man für jedes Watt die Geschwindigkeit.

Dies wird mit dem Verbrauch multipliziert und zu der Grundgeschwindigkeit addiert.

So sind die Unterschiede größer als in der Rechnung oben.

Auf der rechten Seite deiner Grafik sieht man sehr gut, wie sich die Unterschiede widerspiegeln.

BenAhrdt commented 1 year ago

Ja also addierst du die % auf die Grundgeschwindigkeit (Leistung/Gesamtleistung entspricht den %) das mit der grundgeschwindigkeit multipliziert und dann diese addiert nach eine Range von: 1-2 mal Grundgeschwindigkeit…. Also selbst bei 1% Verbrauch ist die Bewegung schneller als die Grundgeschwindigkeit. Für mich aus Anwendersicht sieht man auf den ersten Blick nicht wirklich große Unterschiede. Eventuell einen Multiplikationsfaktor dazu, bevor addiert wird, oder noch besser, gar nicht addieren. Dann bewegen sich rechts die Animationen nur noch von 0-1 mal Grundgeschwindigkeit…. Fände ich eventuell schöner und übersichtlicher…. Ps. Vielleicht auch eine Checkbox mit addieren, oder nicht. Das wäre doch klasse. Hoffe war verständlich

SKB-CGN commented 1 year ago

Nicht ganz:

Als Beispiel:

Verbrauch: 1000 Watt Geschwindigkeit: 2000ms

  1. Verbraucher: 500 Watt
  2. Verbraucher: 300 Watt
  3. Verbraucher: 200 Watt

2000 / 1000 = 2

  1. Verbraucher: 500 x 2 = 1000
  2. Verbraucher: 300 x 2 = 600
  3. Verbraucher: 200 x 2 = 400

Geschwindigkeit:

  1. 2000 + (2000 - 500) = 3500
  2. 2000 + (2000 - 300) = 3700
  3. 2000 + (2000 - 200) = 3800

Wenn die Geschwindigkeit kleiner als 2000ms ist, "rasen" die Punkte über die Linie.

Das sähe sehr unschön aus. Auch würden die Linien dann links auch sehr schnell laufen.

Ich tüftel aktuell noch nach einer besseren Lösung.

BenAhrdt commented 1 year ago

Ja ich habe eben kurz falsch herum gedacht (in % und nicht in der Zeit für die Geschwindigkeit) Komme trotzdem nicht auf deine Geschwindigkeiten…. Wäre das bei 1. nicht 2000ms + 500W * 2ms/W = 3000ms

anstatt die 3500ms ???

ne Idee wäre noch die Auflösung für den Gesamtverbrauch an zu geben und dann anhand des Verbrauche sowas zu berechnen….

bspw. Angabe Grundgeschwindigkeit = 2000ms Zeit Gesamtverbrauch = 10000ms

Berechnung: V= (1-Leistung/Gesamt) * 10000ms + 2000ms

messwerte: Gesamt: 1000W V1: 800W V2: 200W

geschw. 1: (1-0,8) *10000 + 2000 = 4000ms

geschw. 2: (1-0,2) * 10000 + 2000 = 10000ms

Habe jetzt extra die Werte so groß auseinander gewählt, damit man einen Effekt sieht… wenn die Zeit statt 10000 auch 2000 ist, wird es eben enger. So in die Richtung wäre eine Idee, oder?

Edit:

oder man sagt schlicht und ergreifend…. 50% von der Gesamtleistung dauern eben Doppelt so lange wie 100% und 20% eben 5 mal so lang… das wäre doch ne einfach und gute Lösung, oder?

Also es bleibt bei den 2000ms

Gesamt 1000W V1: 500W V2: 300W V3: 200W

Geschw. 1: = 1000/500 2000 = 4000ms Geschw. 2: = 1000/300 2000 = 6666ms Geschw. 3: = 1000/200 * 2000 = 10000ms

das sieht doch gut aus, oder? Gut und einfach. Also ich finde schon :-)

Ps. Damit könnte man auch gut die linke Geschwindigkeit abhängig machen. Dann würde man auch direkt sehen läuft PV oder Netz schneller.

SKB-CGN commented 1 year ago

Wo nimmst Du denn die Zeit für den Gesamtverbrauch her?

Die kann nicht statisch sein, da nicht jeder User alle Elemente verwendet.

Ich habe in meinem Beispiel die Grundgeschwindigkeit nochmal addiert und die Geschwindigkeit abgezogen.

BenAhrdt commented 1 year ago

Die Zeit für den Gesamtverbrauch habe ich auf die Grundgeschwindigkeit gesetzt. Gesamt hat ja jeder. Dann heißt es halt nicht Grundgeschwindigkeit sondern Geschwindigkeit Gesamtverbrauch. Aber die letzte Berechnung die ich rein geschrieben habe (edit) finde ich ganz gut und einfach. Oder?

BenAhrdt commented 1 year ago

Jeder hat einen Gesamtverbrauch und somit ist das doch einfach möglich:

50% von der Gesamtleistung dauern eben Doppelt so lange wie 100% und 20% eben 5 mal so lang… das wäre doch ne einfach und gute Lösung

Also es bleibt bei den 2000ms (Gesetzt als Gesamtverbrauch)

Gesamt 1000W V1: 500W V2: 300W V3: 200W

Geschw. 1: = 1000/500 2000 = 4000ms Geschw. 2: = 1000/300 2000 = 6666ms Geschw. 3: = 1000/200 * 2000 = 10000ms

SKB-CGN commented 1 year ago

Ich baue es Dir mal ein, dann kannst Du es installieren und testen.

BenAhrdt commented 1 year ago

Top. Ich bin gespannt

BenAhrdt commented 1 year ago

Eine Frage noch… die 2000ms, ist das die Zeit für die ganze Linie zu Verbraucher?

SKB-CGN commented 1 year ago

2000ms ist die Zeit, die die 3 Punkte bei der Original Konfiguration brauchen, um sich mit dem Abstand einen Bereich weiter zu bewegen.

BenAhrdt commented 1 year ago

Das heißt von Anfang bis Ende der Linie? Eine Geschwindigkeitsangabe der gelben Linie wäre sicher aufgrund der Verschiedenen Größen / Auflösung der Visualisierung schwierig. Ok geht man davon aus, dass die Entfernungen gleich sind ist auch die Animation gleich lang bei gleichem Verbrauch.

SKB-CGN commented 1 year ago

Die Linie wird in Teilen animiert und wiederholt.

Eine Animation beinhaltet die Punkte und den Abstand (Leerraum) bis zum Beginn der nächsten Punkte. Das ist die Dauer.

Diese wird dann "aneinander gereiht", damit alle Animationen gleich schnell sind. Da jede Linie unterschiedlich lang ist, würden die Animationen nicht gleich schnell laufen.

BenAhrdt commented 1 year ago

Das meinte ich. Ok. Ich warte gespannt auf deine Version.

SKB-CGN commented 1 year ago

Die Version liegt zum Installieren bereit.

Einfach nochmals über die Git-Katze installieren.

BenAhrdt commented 1 year ago

Finde ich schon ganz gut, nur die Animation ruckelt etwas beim neu laden der gelben Punkte. Ps. hast Du auch die linke Seite daran geknüpft? Wäre doch cool, dann Sieht man direkt auch was "schnell" aus dem Netz, dem Akku, oder der PV kommt.

energiefluss-0-buanet-iobroker1-Google-Chrome-2023-01-31-08-34-42

SKB-CGN commented 1 year ago

Nein, die linke Seite bleibt so, wie sie ist. (Vorerst)

Bei mir ruckelt nichts.

BenAhrdt commented 1 year ago

komisch.. Siehst es ja in dem Gif... Lädt irgendwie alle S nach oder so. Es sieht so aus, als lädt er immer den bestimmten Bereich / Weg der gelben Linie nach.

SKB-CGN commented 1 year ago

Dann stell mal in den Optionen 1 Punkt weniger ein, dann schauen - wenns geht, wieder einen Punkt mehr.

BenAhrdt commented 1 year ago

Ändert nicht wirklich was.

Die Geschwindigkeitseinstellung finde ich ganz gut. Es wäre noch schön, wenn nicht die Linien ruckeln würden.

SKB-CGN commented 1 year ago

Zeig mir mal die Einstellungen der Animation

BenAhrdt commented 1 year ago

image

Ich habe schon an jedem Punkt rum gespielt.

BenAhrdt commented 1 year ago

Ich habe gerade mal die automatische Animation deaktiviert, sodass die gleichmäßige Geschwindigkeit aktiv ist.... dann ruckelt es nicht.

SKB-CGN commented 1 year ago

Wenn zuviele Browser-Fenster auf sind, dann ruckelt es. Habe es gerade mit deinen Einstellungen probiert. Ruckelt nicht ;)

BenAhrdt commented 1 year ago

sehr komisch, ich habe nur eine Ansicht laufen. Vielleicht liegt es auch an den Werten. Wenn die sich ändern und die % Neu geladen werden?

Edit: Ja konnte es gerade beobachten, wenn sich der Gesamtverbrauch ändert, springen die Linien. Fangen Sie dann wieder am Anfang des jeweiligen Punktes an?

SKB-CGN commented 1 year ago

Die Punkte springen, wenn der Rechner nicht genug Power hat, um die Punkte darzustellen. Also, weniger Punkte einstellen, dann läuft es.

BenAhrdt commented 1 year ago

Habe es nun auf 3 gestellt. scheint zumindest grad etwas besser zu laufen. ioBroker läuft auf ner Diskstation im Docker container (15%) cpu und 3% RAM Auslastung. OK, wenn eine Hohe Leistung dabei ist stehe die Anderen fast... aber das Ist ein Anzeichen, dass die Leistung fast das Gesamte alleine ausmacht, oder meinst Du eine max. Zeit macht noch Sinn? Keine Ahnung ob dann wieder andere Effekte kommen. energiefluss-0-buanet-iobroker1-Google-Chrome-2023-01-31-11-14-30

BenAhrdt commented 1 year ago

Jetzt springt es wieder... immer nachdem der wert sic minimal ändert. :-(

SKB-CGN commented 1 year ago

Die Berechnung erfolgt im Client, sprich im Browser. Wenn dort zu wenig Ressourcen zur Verfügung stehen, dann springt es. Da kann ich leider nichts dran machen. Die Animation ist hungrig nach CPU - lässt sich aber nicht anders lösen. Daher ist es unerheblich, ob ioBroker in einem Cisco USC Server mit 1TB Ram und 24 CPU's läuft - der Client stellt die Animation dar.

BenAhrdt commented 1 year ago

OK, aktuell schaue ich es mit meinem Arbeitsrechner an, der hat noch jede Menge Reserven. Naja weiß dann auch nicht weiter. Machst u noch eine Max Zeit, oder lässt Du die Berechnung so?

BenAhrdt commented 1 year ago

Ich habe gerade mal die Datenpunkte fest auf einen Wert gesetzt und dann ruckelt nichts. es ruckelt wirklich NUR, wenn die Daten aktualisiert werden. (Bei mir alle 2s)