NEWS
Wert der Variable? Ich stehe auf dem Schlauch
-
@skorpil sagte:
Aber warum klappt das dann nicht?
Vielleicht wird der Wert im Reiter "Objekte" nicht aktualisiert ? Welcher Wert muss es laut CCU sein ?
-
@paul53 „false“ oder „inaktiv“
-
-
@skorpil irgendeine Idee, was ich mal testen konnte? Vlt. die Systemvariable löschen und nochmal neu anlegen?
Das ist das, was der Historian zeigt. Um kurz nach 17:00 hatte ich die Variable mal eingeschaltet. Da sieht alles gut aus.
-
@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 Danke, mache ich. Melde mich morgen. Gute Nacht m Paul, und vielen Dank.
-
@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: true
Es wird reagiert!
-
-
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?
-
@skorpil sagte:
das Script bei Scriptstart NICHT reagiert
Das glaube ich nicht. Wie sieh das komplette Skript jetzt aus ? Wenn es nur den Trigger enthält, passiert beim Skriptstart nichts.
-
//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 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(); });
-
@paul53 ahhhh, okay. Wiederum vielen mitternächtlichen Dank.
JavaScript hat es in sich. Ich bin froh, dass es gut Lehrer gibt.