NEWS
(gelöst) Javascript Variable steht statt Wert der Name
-
Bei mir stehen in den Javascriptvariablen unter Objekte/Zustände manchmal falsche Werte.
Statt z.B. 1.8 steht dort javascript.0.AnwesendMicha. Siehe:
Bei mir kommt es immer wieder sporadisch vor, dass beim Wert einer JavaScript Variable nicht der Wert, sondern der Variablenname drinsteht.
Es ist mir bisher nur bei den drei Variablen oben aufgefallen.
Ein Neustart der Javascript Instanz bringt keine Änderung.
! Ergänzende Infos, wie die Variable verändert wird (ich sehe hier kein Problem):
! Der Wert einer dieser Variable wird über ein Script ermittelt:
! ````
on("hm-rega.0.10020", function(obj) {
if (obj.newState.val === true) {
setState("AnwesendMicha",1.8);
} else {
setState("AnwesendMicha",-0.8);
}
});>! Die CCU Variable hm-rega.0.10020 wird zuvor mit einem Node-red Flow ermittelt (true oder false). >! In der Historie zu hm-rega.0.10020 stehen auch nur Werte mit true oder false. >! Das Problem ist mir zum ersten Mal aufgefallen, seitdem ich das Problem mit dem Node-Red Update hatte. >! Was ich getan habe, um das Node-red Problem zu beseitigen steht im letzten Eintrag des Threads: >! [http://forum.iobroker.org/viewtopic.php … =520#p3611](http://forum.iobroker.org/viewtopic.php?f=22&t=520#p3611) .
-
Bei mir stehen in den Javascriptvariablen unter Objekte/Zustände manchmal falsche Werte.
Statt z.B. 1.8 steht dort javascript.0.AnwesendMicha. Siehe:
filename="Javascript Variable falsch 1.jpg" index="1">~~
filename="Javascript Variable falsch 1.jpg" index="1">~~
Bei mir kommt es immer wieder sporadisch vor, dass beim Wert einer JavaScript Variable nicht der Wert, sondern der Variablenname drinsteht.
Es ist mir bisher nur bei den drei Variablen oben aufgefallen.
Ein Neustart der Javascript Instanz bringt keine Änderung.
! Ergänzende Infos, wie die Variable verändert wird (ich sehe hier kein Problem):
! Der Wert einer dieser Variable wird über ein Script ermittelt:
! ````
on("hm-rega.0.10020", function(obj) {
if (obj.newState.val === true) {
setState("AnwesendMicha",1.8);
} else {
setState("AnwesendMicha",-0.8);
}
});>! Die CCU Variable hm-rega.0.10020 wird zuvor mit einem Node-red Flow ermittelt (true oder false). >! In der Historie zu hm-rega.0.10020 stehen auch nur Werte mit true oder false. >! Das Problem ist mir zum ersten Mal aufgefallen, seitdem ich das Problem mit dem Node-Red Update hatte. >! Was ich getan habe, um das Node-red Problem zu beseitigen steht im letzten Eintrag des Threads: >! [http://forum.iobroker.org/viewtopic.php … =520#p3611](http://forum.iobroker.org/viewtopic.php?f=22&t=520#p3611) . `
Da musst du mir Helfen. Bist du sicher, dass AnwesendMicha nur aus skript gesetzt wird?
Wie sieht dein komplettes Skript aus? (Du kannst an dogafox at gmail com senden).
Kannst du Skript so modifizieren:
on("hm-rega.0.10020", function(obj) { log("New state hm-rega.0.10020: " + obj.newState.val); if (obj.newState.val === true) { log("Set AnwesendMicha: 1.8\. Aktuell " + getState('AnwesendMicha').val); setState("AnwesendMicha",1.8); } else { log("Set AnwesendMicha: -0.8\. Aktuell " + getState('AnwesendMicha').val); setState("AnwesendMicha",-0.8); } log("After set AnwesendMicha: " + getState('AnwesendMicha').val); });
Schreibt vielleicht node-red AnwesendMicha?
-
Da musst du mir Helfen. Bist du sicher, dass AnwesendMicha nur aus skript gesetzt wird?
Wie sieht dein komplettes Skript aus? (Du kannst an dogafox at gmail com senden).
Kannst du Skript so modifizieren:
on("hm-rega.0.10020", function(obj) { log("New state hm-rega.0.10020: " + obj.newState.val); if (obj.newState.val === true) { log("Set AnwesendMicha: 1.8\. Aktuell " + getState('AnwesendMicha').val); setState("AnwesendMicha",1.8); } else { log("Set AnwesendMicha: -0.8\. Aktuell " + getState('AnwesendMicha').val); setState("AnwesendMicha",-0.8); } log("After set AnwesendMicha: " + getState('AnwesendMicha').val); });
Schreibt vielleicht node-red AnwesendMicha? `
Hi Bluefox,
Schande über mein Haupt :x Ich war das Problem.
Danke! Erstens für Deine tolle Unterstützung! Und Zweitens, Deine Aufforderung das ganze Script zu schicken, hat zur Lösung beigetragen.
Das Script setzt eigentlich nur für einige Variablen Werte für true und false, um mit Rickshaw ein "Logikablauf" darstellen zu können.
Mit Rickshaw habe ich generell das Problem, dass in den Charts nicht alle Werte nach rechts durchgezogen werden.
Daher hatte ich das Sript ergänzt, dass es beim Aufruf des Scripts die eigenen Werte noch einmal schreibt, in der Hoffnung, dass dann die Linien durchgezogen werden.
Nun ja,… es wurde nicht der eigene Wert gesetzt, sondern der Variablenname :roll:
setState("AnwesendMicha","javascript.0.AnwesendMicha");
Sorry. Jetzt schaue ich erst einmal, wie die Zeile richtig heissen muss.
Viele Grüße,
Michael