NEWS
Alias Read -> konvertierung [gelöst]
-
Ich habe einige Aliase die ich konvertiere in der Einstellung zum jeweiligen Datenpunkt:
Alias Read-Function (keyword for value is val)val === 'BSH.Common.EnumType.PowerState.On' ? true : (val === 'BSH.Common.EnumType.PowerState.Off' ? false : val)
Das funktioniert Problemlos, so wie ich das möchte. Da ich in JS nicht so mega fit bin die Frage (Und ich habe über die Suche auch nichts passendes gefunden) -> kann ich auch mehr als 2 Werte konvertieren? Wenn ja, wie müsste das aussehen? den zweiten Wert frage ich ja in der Klammer, müsste ein dritter Wert erneut eingeklammert sein?
Danke
-
@denis-claß Mit "true" und "false" kommt man dann nicht aus...
Der Ternary-Operator "?:" kann aber durchaus auch mit Klammern und verschachtelt genutzt werden ...
Füllstandsanzeiger mit Werten von 0 .... 100 %, bei 0...10% soll "Reserve!" zurückgegeben werden, zwischen 10 ... 90% "Normal", und ab 90% "Voll"
(val>90) ? "Voll" : ((val < 10) ? "Reserve!" : "Normal")
Bei Klammern bin ich der Meinung, dass sie nicht zu sparsam eingesetzt werden sollten. In manchen Konstrukten helfen mir eigentlich überflüssige Klammern, den Code zu verstehen, wenn ich nach Monaten wieder draufgucke ... Auf die Rechenzeit sollten sie keinen messbaren Einfluss haben...
-
@denis-claß
Ein Alias kann nur seinen "eigenen" Ziel-DP auswerten. Das ist letztlich das was inval
drinsteht.
Wenn mehrere DP auszuwerten sind, muss das per Script erledigt werden. Das Ergebnis kann dann natürlich nur in DP unterhalb von0_userdata
geschrieben werden.Eigentlich sollte Deine Konvertierungsfunktion also lauten:
val == 'On'
Das reicht völlig aus.
Steht im Ziel-DP geradeOn
, zeigt der Aliastrue
. In allen anderen Fällenfalse
.
Also auch wenn da mal (warum auch immer)Blubb
drinstehen würde. -
@martinp
ah super, genau das was ich gefragt hatte. Damit kann ich arbeiten. DANKE! -
@codierknecht
ein alias = 1 Datenpunkt. Also erstmal, für meinen Fall kein Script notwendig.
Danke für deinen Tipp -
@martinp
weißt du zufällig auch bei der nächsten Frage die dazu gehört Rat?
Kann man in der Read Function auch anstatt eindeutige vals zu konvertieren auch Teile davon nur prüfen und ändern?
Also wenn immer 0 oder 1 kommt diese zu true/false ist ja klar.
Aber wenn mein original Wert mal hallo1 oder hallo2 sein kann für true und tschüss für false -> gibts hier nicht eine "contains" funktion? also z.B.
val.contains('hallo') ? true : ((val === 'tschüss') ? false : false) -
@denis-claß sagte: Wert mal hallo1 oder hallo2 sein kann für true
val == 'hallo1' || val == 'hallo2'
oder
val.startsWith('hallo')
oder
val != 'tschüss'
-
@denis-claß
Mit z.B.contains
oder auch mitindexOf
funktioniert das nicht.Aber was hast Du immer mit dem ternären Operator?
Wenn da nurtrue
oderfalse
geliefert werden sollen, ist das völlig unnötig. Ein einfacher Vergleich tut's ja auch - so wie @paul53 das zeigt. -
@paul53
Meine Versuche mitstartsWith()
funktionieren nicht.
Hast Du das mal getestet? -
@codierknecht sagte: Hast Du das mal getestet?
Ja, funktioniert.
Browser-Refresh? -
@codierknecht
ich hab jetzt mal ein wenig gegoogelt und getestet. contains geht nicht. aber includes klappt genau wie man es von contains kennt.
Mein Problem ist somit gelöst.
Vielen Dank für die Denkanstöße -
@paul53
auch danke an dich. du hast mir den finalen Denkanstoß gegeben -
@paul53
Mag wohl daran gelegen haben, dass ich einen alten DP "wiederverwertet" habe.
Mit einem neuen funzt das einwandfrei:val.startsWith('hallo')