NEWS
[gelöst] Verständnisfrage Alias-Funktion
-
@Steff sagte:
Muss ich im Script noch was anderes angeben als den Original- und Alias-Datenpunkt??
Wenn die common-Attribute des Originals in Ordnung sind und so übernommen werden sollen: Nein.
-
Und da steige ich nicht durch!
Ich habe zum Testen eine Temperatur von meiner Heizung im Original-DP 'javascript.0.eBus.Heizung.ui_OutsideTemp', diesen möchte ich im Alias-DP 'alias.0.Aussentemperatur_Nord_Test' quasi spiegeln. Mit deinem Script zum Anlegen von Datenpunkten habe ich diesen Alias erzeugt. Wenn ich nun mit einem Testscript
den Alias abfrage erhalte ich folgende Log-Ausgabe:
Das aber nur solange bis ich den JS-Controller neu starte, dann kommt die Warnung nicht mehr -
@Steff sagte:
javascript.0 2019-12-07 17:04:50.409 info (3850) script.js.common.AAA_Alias-abfragen: Alias-ID hat Inhalt: null
Dann hat der JS-Controller noch keinen Zustand in den Alias geschrieben. Wahrscheinlich muss das Original erst einmal aktualisiert werden (Änderung des Zeitstempels) ?
@Steff sagte in Verständnisfrage Alias-Funktion:
javascript.0 2019-12-07 17:04:50.408 info (3850) script.js.common.AAA_Alias-abfragen: Original-ID hat Typ: string
Es sollte eine Wandlung in common.type: "number" erfolgen (Skript Zeile 8).
-
@paul53 sagte in Verständnisfrage Alias-Funktion:
Dann hat der JS-Controller noch keinen Zustand in den Alias geschrieben. Wahrscheinlich muss das Original erst einmal aktualisiert werden (Änderung des Zeitstempels) ?
Die Temperatur ändert sich nur sehr langsam, der Zeitstempel ändert sich schon, jedoch ist die letzte Wert-Änderung schon einige Zeit her.
Unter Objekte wird aber ein Wert angezeigt, nur halt eben bei der Script abfrage nicht, deshalb bin ich da etwas ratlos!
Die 7,56°C sollten ja aber im Script ausgegeben werden - oder nicht? -
@Steff sagte in Verständnisfrage Alias-Funktion:
Die 7,56°C sollten ja aber im Script ausgegeben werden - oder nicht?
Habe es gerade getestet: Bei mir wurde mit getState() von dem frisch angelegten Datenpunkt der Wert 0 geliefert, der falsch ist. Nach Neustart der Javascript-Instanz wird der richtige Wert eingelesen.
Das hängt damit zusammen, dass die JS-Instanz alle Objekte und Zustände puffert und getState() auf die Puffer zugreift. Erst ein Neustart der JS-Instanz aktualisiert die Puffer mit den Objekten des JS-Controllers. -
@paul53,
habe gerade nochmals einen Alias erstellt auf einen Datenpunkt, der sich öfters ändert. Aber auch da ist beim Testscript die 0 bzw. 'null' im Log.Zitat @paul53
Das hängt damit zusammen, dass die JS-Instanz alle Objekte und Zustände puffert und getState() auf die Puffer zugreift. Erst ein Neustart der JS-Instanz aktualisiert die Puffer mit den Werten des JS-Controllers.Das heißt also nach dem Anlegen eines Alias muss der JS-Controller oder vielmehr die JS-Instanz (sorry - habe das oben nicht explizit geschrieben) neu gestartet werden. Oder bin ich da immer noch falsch?
-
@Steff sagte:
nach dem Anlegen eines Alias mussdie JS-Instanz neu gestartet werden.
Wenn der neue Alias in einem Skript verwendet werden soll, muss erst die JS-Instanz neu gestartet werden. Das gilt nicht nur für einen Alias.
-
@paul53 sagte in Verständnisfrage Alias-Funktion:
Wenn der neue Alias in einem Skript verwendet werden soll, muss erst die JS-Instanz neu gestartet werden. Das gilt nicht nur für einen Alias.
OK, und wieder was dazugelernt. Für was gilt das noch?
-
@Steff sagte in Verständnisfrage Alias-Funktion:
Für was gilt das noch?
Das gilt auch für eigene Datenpunkte, die nicht per createState() erzeugt wurden, und nach meiner Erfahrung vor Allem auch für enums bzw. deren Zuweisung.
-
@paul53 sagte in Verständnisfrage Alias-Funktion:
Das gilt auch für eigene Datenpunkte, die nicht per createState() erzeugt wurden, und nach meiner Erfahrung vor Allem auch für enums bzw. deren Zuweisung.
OK, muss ich mal beobachten.
@paul53 ich danke dir für die ganzen Erläuterungen, du hast mich mal wieder ein Stückchen weitergebracht!!
Gruß Steffen