NEWS
Script Schedule/clearSchedule läuft nicht
-
Warum funktioniert das so nicht?
ich hab einen Timer TimerMorgen den ich mal auf null setze, dann wird das ganze mal initialisiert und es sollte eigentlich ein TimerMorgen gesetzt werden (TimerEin).
wenn jetzt der datenpunkt triggert, komm ich wieder in die funktion. und eigentlich sollte der Timer der übergeben wird nicht mehr null sein und ich sollte in die erste if abfrage rein kommen und somit den schedule zuvor clearen können, das passiert aber nie, denn scheinbar der TimerMorgen der immer übergeben wirde, immer null ist.
was rennt da falsch?var TimerMorgen = null; var logging = true; const morgenStunde = "AllOwnCreated.0.Bewaesserung.ObererGarten.Gartenzaun.Schedule.morgenStunde"; const morgenMinute = "AllOwnCreated.0.Bewaesserung.ObererGarten.Gartenzaun.Schedule.morgenMinute"; function setUpTimer(TimerEin, stundeId, minuteId) { if (TimerEin !== null) { clearSchedule(TimerEin); if (logging) log("da sollte ich rein"); } var stundeEin = getState(stundeId).val; var minuteEin = getState(minuteId).val; var zeitEin = minuteEin + ' ' + stundeEin + ' * * *'; TimerEin = schedule(zeitEin, function() { //blabla }); } setUpTimer(TimerMorgen, morgenStunde, morgenMinute); on({id: 'irgendein.datenpunkt', change: "ne"}, function (obj) { setUpTimer(TimerMorgen, morgenStunde, morgenMinute); });
-
@homecineplexx
Die Timer-Variablen müssen global sein, TimerEin ist aber eine lokale Variable. -
TimerEin ist lokal aber ich übergebe doch eine globale TimerMorgen variable.
-
@homecineplexx sagte in Script Schedule/clearSchedule läuft nicht:
aber ich übergebe doch eine globale TimerMorgen variable.
Ja, und die hat den Wert null. Innerhalb der Funktion wird nur die lokale Variable verändert, nicht die globale.
-
Wenn ich die variable returniere sollte es aber klappen oder?
-
@homecineplexx sagte in Script Schedule/clearSchedule läuft nicht:
Wenn ich die variable returniere sollte es aber klappen oder?
Ja, aber warum so umständlich ? Verwende doch innerhalb der Funktion die globale Variable TimerMorgen.
-
Das ist ja eine generische Funktion die mehrfach mit verschiedenen timern aufgerufen wird. Daher bissl komplexer... Danke dir
-
Ok, dann ja wenn Du TimerEin zurück gibst und dann immer wieder als input hast dann sollte es tun