NEWS
Die Alias funktion - Fragen
-
@mickym ja die hochkommas müssen gelöscht werden bei mir. Was bedeutet eigentlich val === '22' eigentlich genau. Was passiert ist ja klar...
-
@gelberlemmy Da das Ganze als Zeichenkette (String) in doppelten Anführungszeichen ist, markieren die Hochkommas eine Zeichenkette in der Zeichenkette - bei Dir ist es aber tatsächlich eine Zahl - deshalb ohne Hochkommas. Im Prinizip gibst Du in dem String mit den doppelten Anführungszeichen Javascript code ein und "val" repräsentiert den Wert des Orginal-Datenpunktes.
Im Prinzip wird einfach bei setzten des Wertes Deines Alias (Read) Datenpunktes (Wertes = val) den Conditional Operator genutzt. Somit bedeutet es nichts weiter als Dein Orginal hat den Wert 22, dann setze true anderenfalls false. -
@mickym super danke für die Erklärung
-
@mickym
Moin, die Alias-Funktion scheint sich geändert zu haben und diese Methode schaltet bei mir nicht mehr das Alias.
Wie muss es aktuell heißen?Admin 5.1.25
Node.js v12.22.7
NPM 6.14.15 -
@troya Ehrlich gesagt weiß ich nicht, was Du meinst? Bei mir gabs keine Änderung. Installieren Dir doch mal den Alias Manager und schau mal ob Du das damit entsprechend hinbekommst:
-
@mickym sagte in Die Alias funktion - Fragen:
@gelberlemmy sagte in Die Alias funktion - Fragen:
@CrunkFX hallo, lese hier das Thema gerade mit. Ich habe ZWave Türsensoren die für "offen" 22 und geschlossen "23"ausgeben. Nun möchte ich per Alias für 22 = true und für 23 = false ausgeben.
Geht dies ? Was muss ich hierfür in RAW eingeben ?Gruß André
{ "from": "....", "user": "....", "ts": ..., "common": { "name": "on", "role": "", "type": "boolean", "desc": "Manuell erzeugt", "read": true, "write": false, "def": false, "alias": { "id": "orginal.pfad", "read": "val === '22' ? true : false" } }, "native": {}, "acl": { "object": ...., "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": .... }, "_id": "....", "type": "state" }
Kann man noch ausweiten - aber im Prinzip langt ja 22 = true - alles andere false.
Die Funktion mit dem umwandeln von 22 auf true von damals. Aber ich schau mir morgen mal den Manager an, danke!
-
@troya Das muss immer noch so funktionieren wie vorher - das hat auch nichts mit dem Adapter zu tun.
Im Adapter kannst Du das nur jetzt direkt eintragen und musst nicht mehr die Definition des Alias-Datenpunktes bemühen.
Wenn da also irgendwas nicht funktioniert - dann gibts ein anderes Problem - da weiß ich aber auch nicht weiter, weil es meines Erachtens weiter so gehen muss.
-
@troya sagte in Die Alias funktion - Fragen:
"read": "val === '22' ? true : false"
Hast du mal
"read": "val == '22' ? true : false"
versucht?
-
-
@troya Du prüfst mit deinem Befehl auf den Typ String. Möglicherweise ist aber der auszuwertende Wert vom Typ number. Wenn du in JS mit == prüfst ist der auszuwertende Typ egal( Disclaimer: Ganz einfach erklärt, für vollständige Erklärung: Hier klicken .
LG
CrunkFX -
Weil ich hierzu gerade eine Frage per Mail bekommen habe: true und false auf die Art zurück zu geben ist redundant. Der Vergleich liefert ja bereits genau das, was man sucht.
Aktuell wäre es also: "falls Ergebnis gleich
true
gibtrue
zurück, sonst gibfalse
zurück":val == 22 ? true : false
Es reicht:
val == 22
Mit
? :
(also if else) würde man ja nur arbeiten, wenn man daraus wieder andere Datentypen / Wert machen möchte. z.B.val == 22 ? 'jau' : 'nö'