NEWS
[gelöst]Umrechnung von Einheiten im Widget?
-
Ich bin derzeit dabei, die Photovoltaik-Anlage in meiner vis (basierend auf MDCSS 2) darzustellen. Mit den den Anfängen bin ich auch schon zufrieden (siehe Bilder - work in progress).
Folgende Herausforderung: Ich habe verschiedene darzustellende Datenpunkte, die Verbrauchs-/Erzeugungswerte in Watt beinhalten. Derzeit benutze ich dafür ein "basic - number" Widget, rechne die Werte durch die Widget-Option "Wert multiplizieren" in Kilowatt um und stelle dies dar. Nun würde ich gerne flexibler sein. D.h. wenn der Wert >= 1000 ist, dann - wie eben beschrieben - Umrechnung in Kilowatt und entsprechende Darstellung. Wenn <1000, dann wird der Wert in Watt dargestellt.Gibt es eine Möglichkeit, dies flexibel in einem "number" Widget (oder einem anderen) zu bewerkstelligen.
Mein Workaround ist die Nutzung von zwei übereinander liegenden Widgets, bei denen ich in Abhängigkeit des Wertes die Sichtbarkeit steuere. Das geht auch soweit, wenn >= 1000 bzw. <1000 (wie beschrieben) die einzige Bedingung ist.
Ich habe aber auch Stellen in der Visualisierung, wo ich noch eine weitere Bedingung für die Sichtbarkeit hätte (z.B. wird ins Netz eingespeist, oder wird Strom aus dem Netz konsumiert).
Für Ideen bzw. Tipps bin ich dankbar.
-
-
@harrym sagte in Umrechnung von Einheiten im Widget?:
@ak1 "Binding of objects"
https://github.com/ioBroker/ioBroker.vis
Kannste schön rechnen in der Vis
Ok, Danke. Das ist wohl tatsächlich der richtige Ansatz.
Allerdings bin ich echt am Kämpfen mit den Feinheiten, z.B. dem richtigen Runden und Nachkommastellen.
Langsam geht es voran .... -
So, ich war jetzt erfolgreich. Mit einem HTML Widget.
Ungefähr so:{val:plenticore.0.devices.local.Home_P;val<1000?Math.round(val):""} {val:plenticore.0.devices.local.Home_P;val<1000?" W":""} {val:plenticore.0.devices.local.Home_P;val>=1000?parseFloat(val*0.001).toFixed(2):""} {val:plenticore.0.devices.local.Home_P;val>=1000?" kW":""}
Das war viel Trial & Error und ist möglicherweise noch suboptimal. Aber es funktioniert gut.
Insgesamt muss ich bei den Bindings noch üben -
@ak1 sagte in [gelöst]Umrechnung von Einheiten im Widget?:
Insgesamt muss ich bei den Bindings noch üben
Übung macht den Meister
Bezieht sich #2 und #4 (ebenfalls #1 + #3) auf dasselbe Widget und soll nur bspw. 900 W / 1.2 kW anzeigen?Dann geht es auch wesentlich einfacher:
{val:plenticore.0.devices.local.Home_P;val<1000?" W":" kW"} {val:plenticore.0.devices.local.Home_P;val<1000?Math.round(val):parseFloat(val*0.001).toFixed(2)}
Das "Konstrukt" mit ? und : ist eine Vereinfachung (Programmierer sind faul ^^) von einer "if-then-else" - Abfrage.
Wenn val kleiner als 1000 ist dann schreibe " W", sonst " kW"
Deswegen brauchst du keine 2. Abfrage ob val >=1000 ist, denn entweder ist es kleiner als 1000, und wenn nicht, muss es eben größer als 1000 sein -
@SBorg
Oh ja, es bezieht sich tatsächlich auf das gleiche Widget.
Und dein Ansatz ist natürlich wesentlich einfacher. Danke für den guten Hinweis!Ein wenig dämlich bin ich aber schon, denn natürlich hatte ich dieses "if...then...else" Konstrukt mit Bindings schon bei Einstellungen zur Opacity genutzt. Da war ich aber nicht vom Kampf, mit Umrechnungen, Runden und Nachkommastellen abgelenkt