NEWS
Zwei oder mehr Werte im VIS addieren?
-
Hallo,
Ich habe mehrere Datenquellen (Stromverbrauch), die ich ganz unkompliziert im VIS addieren möchte, ohne derzeit auf ein Skript zurück zu greifen. Also z.B. so:
sonoff.0.Schaltmodul1_F9896D.ENERGY_Power_0 + sonoff.0.Schaltmodul1_F9896D.ENERGY_Power_1
Das ganze vielleicht direkt im "basic number>" Widget?
Am liebsten sowas einfach unter "object ID" rein und fertig...
Oder geht das nicht?Leider habe ich nichts passendes gefunden, was auch funktioniert.
Lg, Jürgen
-
@soundy
Das kannst du mit einem Binding und einem Textwidget machen:{wert1:sonoff.0.Schaltmodul1_F9896D.ENERGY_Power_0; wert2:sonoff.0.Schaltmodul1_F9896D.ENERGY_Power_1; (wert1+wert2).toFixed(2)+ " kW"}
Sollte ein Wert rauskommen der zweistellig nach dem Komma ist
-
Danke für die blitzschnelle Antwort, die ja auch recht verständlich klingt.
Meintest du dieses Widget:
Ich hab es nun so eingefügt:
Angezeigt wird mir gar nichts.
Hab es auch mit "basic number" (ergibt: NaN) und "basic html" (ergibt: wert1+wert2 =aber hintereinander) probiert. Also das kann auch nicht richtig sein. Ist es heute schon zu spät oder mach ich was falsch?
Lg, Jürgen
-
@soundy sagte in Zwei oder mehr Werte im VIS addieren?:
Hab es auch mit "basic number" (ergibt: NaN)
ist ja auch Not a Number.
dann nur (wert1+wert2) und anzahl Nachkommastellen und Einheit im widget einstellen -
Ups,...
laut https://forum.iobroker.net/topic/1248/bindings-of-objects-berechnungen/3 darf ich diese Berechnungen nicht in der "Object ID" verwenden. Daher klappt das auch nicht, aber habe ich auch im Screenshot gezeigt...
In einem "basic HTML" Widget habe ich es nun unter html drinnen:
{wert1:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_0; wert2:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_1; (wert1)+(wert2)} W
Das ergibt mir nun aber in der Ausgabe "Wert1+Wert", also nur die beiden Zahlen hintereinander gereiht. Wenn ich aber subtrahieren würde, also so:
{wert1:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_0; wert2:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_1; (wert1)-(wert2)} W
Dann werden die beiden Werte voneinander abgezogen.
Jetzt verstehe ich gar nichts mehr, wieso und wo ist der Denkfehler?
Wieso kann ich das übrigens nicht in einem "basic number" Widget machen?
Lg, Jürgen
-
@soundy sagte in Zwei oder mehr Werte im VIS addieren?:
Wieso kann ich das übrigens nicht in einem "basic number" Widget machen?
weil das Resultat aus dem Binding ein Text ist. Wie Homoran schon schrieb "NaN" (Not a number)
-
Okay, aber wieso kommt es dazu:
In einem "basic HTML" Widget habe ich es nun unter html drinnen:
{wert1:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_0; wert2:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_1; (wert1)+(wert2)} W
Das ergibt mir nun aber in der Ausgabe "Wert1+Wert", also nur die beiden Zahlen hintereinander gereiht.
z.B. Wert 1 = 10, Wert 2 = 5, Ergebnis: 105
Wenn ich aber subtrahieren würde, also so:
{wert1:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_0; wert2:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_1; (wert1)-(wert2)} W
Dann werden die beiden Werte voneinander abgezogen.
z.B. Wert 1 = 10, Wert 2 = 5, Ergebnis: 5
Jetzt verstehe ich gar nichts mehr, wieso und wo ist der Denkfehler?
-
@soundy "Recht" einfach
Bindings werden immer als String gelesen. Bei einer Operation mittels "-" "weiß" JS dann, dass es sich trotzdem um Zahlen handelt und subtrahiert sie korrekt. Mittels "+" kann man aber auch Strings aneinanderhängen und genau das passiert dann bei dir. Du musst die Berechnung klammern, nicht nur den einzelnen Wert. Dann "kapiert" auch JS das du rechnen möchtest: (wert1 + wert2) -
@soundy das kann ich dir auch nicht beantworten, was passiert denn wenn du eine Klammer um das gesamte Argument legst:
( (wert1)+(wert2) ) -
Gut, das ist ja alles verständlich, wie ihr schreibt...
Ich habe nun in einem "basic HTML" Widget im Feld HTML nun folgendes:
{wert1:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_0; wert2:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_1; ((wert1)+(wert2))}
Es setzt aber nur die Strings aneinander...
Ich bin auch nicht auf ein "basic HTML" gebunden. Gäbe es einfachere und funktionelle Möglichkeiten mit "basic number" oder einem anderen Widget? Es muss eigentlich nur auf einem VIS anzeigbar sein. Mehr will ich momentan nicht, da die Werte nur informativ angezeigt werden sollen ...
-
MOMENT MAL .... !!!
Jetzt hab ich nach dem "Trail-and-Error-Prinzip" folgendes probiert:
{wert1:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_0; wert2:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_1; ((+wert1)+(+wert2))}
Beide Werte geklammert und jeweils ein "+" vorweg und es funktioniert.
Bitte wieso? Das liest sich komplett unlogisch diese Schreibweise, gibts dafür eine Erklärung? omg
-
@soundy sagte in Zwei oder mehr Werte im VIS addieren?:
{wert1:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_0; wert2:sonoff.0.Doppelschalter_Kinderzimmer_F9896D.ENERGY_Power_1; parseInt(wert1)+parseInt(+wert2)}
sollte auch funktionierten und ist "sauberer"
-
Ich würde mich gerne hier mal anschließen und habe eine Frage dazu:
In meinem Fall würde ich gerne zu einem Datenpunkt der eine Uhrzeit enthält 30 min. addieren.
Habt ihr da eine Idee wie das funktionieren könnte?