NEWS
[Gelöst] Widgeteigenschaft berechnen geht nur zeitweise
-
@homoran
Genau, das ist es sicher nicht. Ich hab in der History nachgeschaut, da gibt es keine null-Werte drin. Im Moment ist immer etwas hell, da sollte kein 0-Wert möglich sein. -
@delphinis da ich die Werte des Modbus nicht kenne, und ausserdem nicht weiss ob die gewählte CSS Eigenschaft auch Dezimale akzeptiert, müsstest du das mal prüfen
-
@homoran
Ok hab das geprüft.
Der Datenpunkt ist vom Typ Nummer.
Aber die CSS Eigenschaft könnte ein String sein, denn normalerweise gibt man da ja z.B. "20px", "5em" oder 10% ein.
Das könnte der Punkt sein.
Kann ich da in der Formel aus der Zahl ein String machen und dann noch + "px" anhängen?
Hab mal sowas versucht aber das funktioniert nicht. Weiss aber nicht ob man das in der Eigenschaft so machen kann.{a:modbus.0.inputRegisters.30773_PV_Leistung_Eingang_1;Number(a/10).toString + "px"}
-
@delphinis
Einfach hinter der Spitzen Klammer des bindings
Ein Leerzeichen und px ergänzen.
Die js Verrenkungen sind nicht notwendig.Für das umwandeln in eine ganzzahl kannst du
parseInt(a/10)
Nehmen
Also
{a:modbus.0.inputRegisters.30773_PV_Leistung_Eingang_1;parseInt(a/10)} px
-
@oliverio said in Widgeteigenschaft berechnen geht nur zeitweise:
Die js Verrenkungen sind nicht notwendig.
Welche Verrenkungen meinst du?
Der Datenpunkt ist schon eine number. Aber da a/10 nicht funktioniert hat, hab ich gedacht ich müsste erst das ganze in einen String packen und dazu brauch ich ja ein Objekt oder statische Methode welche das tut: Number(x).toString()
Hab's jetzt mit{a:modbus.0.inputRegisters.30773_PV_Leistung_Eingang_1;a/10} px
versucht. Funzt auch nicht. Ich hab die Syntax noch nicht im Griff
Ausserdem: Müste es nicht parseInt(a)/10 heissen?
-
@delphinis sagte in Widgeteigenschaft berechnen geht nur zeitweise:
Ausserdem: Müste es nicht parseInt(a)/10 heissen?
nein, du willst ja auch das Ergebnis der Teilung runden
-
Ok, hab's glaub ich hingekriegt:
{a:modbus.0.inputRegisters.30773_PV_Leistung_Eingang_1;parseInt(a/10)}px
Achtung: leerschlag vor px geht nicht.
parseInt: Ok, dachte nicht, dass parseInt auch Zahlen interpretieren kann. Ein Parser holt ja bekanntlich Zahlen aus einem String.- a ist aber eine Nummer.
- a/10 ist, wenn es denn geht logischerweise eine Nummer. Aber dann kann der Parser offenbar auch Nummern, und wandelt eine realzahl in einen integer. Dafür würde ich aber round() nehmen?.
Egal, es funzt jetzt. Danke
-
@delphinis
Wie ein datenpunkt definiert ist und als welcher Typ dieser über binding ankommt ist so eine sache
In den meisten Fällen kommt es dort nur als String an.
Da JavaScript flexibel ist kommt es meist damit zurecht wenn es aus dem Kontext heraus klar ist.
Du kannst gern mal per binding dir den Typ von a zeigen lassen
Mit typeof
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof -
@oliverio said in Widgeteigenschaft berechnen geht nur zeitweise:
Wie ein datenpunkt definiert ist und als welcher Typ dieser über binding ankommt ist so eine sache
In den meisten Fällen kommt es dort nur als String an.Gut zu wissen
, das hätte ich nicht gedacht.
Mein Integer kommt tatsächlich als string an. Was heisst denn in den meisten Fällen?
Ist das undefiniert? -
@delphinis
Ich habe es nicht für alles geprüft, aber meistens ist es String.
Daher muss Mann bei Boolean auch immer auf ‚true‘ anstatt nur auf True prüfen.
Leider auch der Grund warum man ein json Objekt im binding nicht verwenden kann. Zumindest nicht ohne Tricks