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); }); -
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.
-
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?
-
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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden