NEWS
Wert der Variable? Ich stehe auf dem Schlauch
Wert der Variable? Ich stehe auf dem Schlauch
-
hier ein Screenshot aus den Objekten. Der Wert ist "false".

Wenn ich versuche, den Wert des Objektes auszulesen mittels Javascript wird im log aber

"true" ausgegeben.
Wo ist mein Denkfehler?
var dae = getState ('hm-rega.0.30304.STATE').val.STATE ist der Datenpunkt.
EDIT: da hab ich Quatsch geschrieben. Siehe Paul53 unten.
-
var dae = getState ('hm-rega.0.30304.STATE').val.STATE ist der Datenpunkt.
EDIT: da hab ich Quatsch geschrieben. Siehe Paul53 unten.
@OstfrieseUnterwegs bin gerade auch unterwegs. Schaue ich mir nachher an und gebe Feedback. Danke!
-
var dae = getState ('hm-rega.0.30304.STATE').val.STATE ist der Datenpunkt.
EDIT: da hab ich Quatsch geschrieben. Siehe Paul53 unten.
-
@paul53 sagte in Wert der Variable? Ich stehe auf dem Schlauch:
Nein, das ist eine Systemvariable.
Das ist natürlich richtig, da hab ich mich vertan.
-
-
@paul53 stimmt. Der Vorschlag aus Ostfriesland hat nicht funktioniert. Aber warum klappt das dann nicht? Was mache ich falsch.
-
@skorpil sagte:
Aber warum klappt das dann nicht?
Vielleicht wird der Wert im Reiter "Objekte" nicht aktualisiert ? Welcher Wert muss es laut CCU sein ?
-
@skorpil sagte:
„false“ oder „inaktiv"
Das war auch zum Zeitpunkt des Skriptstarts der Fall ? Die SV wird nur ausgewertet, wenn das Skript gestartet wird. Ergänze es mal durch einen Trigger und schau im Log nach, ob auf Änderung der SV reagiert wurde.
on('hm-rega.0.30304', function(dp) { log('dea: ' + dp.state.val); }); -
@skorpil sagte:
„false“ oder „inaktiv"
Das war auch zum Zeitpunkt des Skriptstarts der Fall ? Die SV wird nur ausgewertet, wenn das Skript gestartet wird. Ergänze es mal durch einen Trigger und schau im Log nach, ob auf Änderung der SV reagiert wurde.
on('hm-rega.0.30304', function(dp) { log('dea: ' + dp.state.val); }); -
@skorpil sagte:
„false“ oder „inaktiv"
Das war auch zum Zeitpunkt des Skriptstarts der Fall ? Die SV wird nur ausgewertet, wenn das Skript gestartet wird. Ergänze es mal durch einen Trigger und schau im Log nach, ob auf Änderung der SV reagiert wurde.
on('hm-rega.0.30304', function(dp) { log('dea: ' + dp.state.val); });@paul53 sagte in Wert der Variable? Ich stehe auf dem Schlauch:
on('hm-rega.0.30304', function(dp) { log('dea: ' + dp.state.val); });
Gerade getestet:
javascript.0 2019-03-25 22:51:44.194 info script.js.common.Test.Test: dea: false javascript.0 2019-03-25 22:50:14.150 info script.js.common.Test.Test: dea: trueEs wird reagiert!
-
@paul53 sagte in Wert der Variable? Ich stehe auf dem Schlauch:
on('hm-rega.0.30304', function(dp) { log('dea: ' + dp.state.val); });
Gerade getestet:
javascript.0 2019-03-25 22:51:44.194 info script.js.common.Test.Test: dea: false javascript.0 2019-03-25 22:50:14.150 info script.js.common.Test.Test: dea: trueEs wird reagiert!
-
@skorpil sagte:
„false“ oder „inaktiv"
Das war auch zum Zeitpunkt des Skriptstarts der Fall ? Die SV wird nur ausgewertet, wenn das Skript gestartet wird. Ergänze es mal durch einen Trigger und schau im Log nach, ob auf Änderung der SV reagiert wurde.
on('hm-rega.0.30304', function(dp) { log('dea: ' + dp.state.val); }); -
ich habe den Eindruck, dass das Script bei Scriptstart NICHT reagiert. Erst bei einer Änderung der Variablen und tracking mit "on" ,reagiert das Script. Ist das ein bug?
-
//bei Skriptstart Cron Job starten, wenn Automower ein schedule('27,50 14-18 * * *', function () { if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val = true) {Ausgangspunkt meiner ganzen Tests war folgendes: Ich wollte erreichen, dass eine Funktion zu den definierten cron Zeitpunkten nur aufgerufen wird, wenn die Variable hm-rega.0.30304 auf true steht. Nun habe ich aber im log gesehen, dass die Funktion zu den Zeitpunkten gestartet wird, obwohl ja der Wert der Variablen auf false stand.
Sehr merkwürdig
-
//bei Skriptstart Cron Job starten, wenn Automower ein schedule('27,50 14-18 * * *', function () { if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val = true) {Ausgangspunkt meiner ganzen Tests war folgendes: Ich wollte erreichen, dass eine Funktion zu den definierten cron Zeitpunkten nur aufgerufen wird, wenn die Variable hm-rega.0.30304 auf true steht. Nun habe ich aber im log gesehen, dass die Funktion zu den Zeitpunkten gestartet wird, obwohl ja der Wert der Variablen auf false stand.
Sehr merkwürdig
@skorpil zur Sicherheit hier nochmal das komplette Sript:
// ################################################################## // Regen ermitteln und in Wetter Regen schreiben // ################################################################## function regen_ermitteln() { //Definitionen var idOpenWeater = 'openweathermap.0.forecast.current.state'/*Actual state*/; var idVariable = 'hm-rega.0.32978'/*Wetter Regen*/ //Wetterdaten auslesen wetterdaten = getState(idOpenWeater).val; //finde regen oder niesel var regen = wetterdaten.lastIndexOf('Regen')+1; var niesel = wetterdaten.lastIndexOf('Niesel')+1; var Regen = wetterdaten.lastIndexOf('regen')+1; var Niesel = wetterdaten.lastIndexOf('niesel')+1; // wenn gefunden dann if (regen + niesel + Regen + Niesel > 0) { regen = true; } else {regen = false;} log(regen); //Variable setzen setState(idVariable, regen); }; //bei Skriptstart Cron Job starten schedule('0 13 * * *', function () { if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val = true) { regen_ermitteln(); }; }); //bei Skriptstart: Start //regen_ermitteln(); -
@skorpil zur Sicherheit hier nochmal das komplette Sript:
// ################################################################## // Regen ermitteln und in Wetter Regen schreiben // ################################################################## function regen_ermitteln() { //Definitionen var idOpenWeater = 'openweathermap.0.forecast.current.state'/*Actual state*/; var idVariable = 'hm-rega.0.32978'/*Wetter Regen*/ //Wetterdaten auslesen wetterdaten = getState(idOpenWeater).val; //finde regen oder niesel var regen = wetterdaten.lastIndexOf('Regen')+1; var niesel = wetterdaten.lastIndexOf('Niesel')+1; var Regen = wetterdaten.lastIndexOf('regen')+1; var Niesel = wetterdaten.lastIndexOf('niesel')+1; // wenn gefunden dann if (regen + niesel + Regen + Niesel > 0) { regen = true; } else {regen = false;} log(regen); //Variable setzen setState(idVariable, regen); }; //bei Skriptstart Cron Job starten schedule('0 13 * * *', function () { if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val = true) { regen_ermitteln(); }; }); //bei Skriptstart: Start //regen_ermitteln();@skorpil sagte:
das komplette Sript:
Nur um 13:00 Uhr wird ermittelt, ob es regnet. In der Abfrage steht eine Zuweisung und kein Vergleich. Richtig:
schedule('0 13 * * *', function () { if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val == true) regen_ermitteln(); }); -
@skorpil sagte:
das komplette Sript:
Nur um 13:00 Uhr wird ermittelt, ob es regnet. In der Abfrage steht eine Zuweisung und kein Vergleich. Richtig:
schedule('0 13 * * *', function () { if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val == true) regen_ermitteln(); });

