Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] clearSchedule vor definition vom Schedule im Script

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] clearSchedule vor definition vom Schedule im Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • BuZZy
      BuZZy last edited by

      Hallo Zusammen,

      wollte mir eigentlich gerade eine "Zeitschaltuhr" bauen.

      Jedes mal wenn eine neue Zeit eingetragen wird soll der alte Timer/Schedule beendet werden und ein neuer mit den aktualisierten Zeiten gestartet werden.

      Leider funktioniert das jedoch nicht, ich kann den Schedule nicht beenden mit clearSchedule(..); bevor ich im Script nicht den Schedule ausgelöst habe. Also clearSchedule muss immer hinter dem erstellen Schedule im Script

      Variable = schedule(…...);

      stehen.

      Kriege immer "clearSchedule() => invalid handler" im Log wenn ich versuche als erstes im Script den "alten noch aktiven" Schedule zu beenden.

      Gibt es keine Möglichkeit dem Schedule eine eindeutige ID zu verpassen und diese dann einfach zu beenden oder ähnliches?

      Wie kann ich das elegant lösen?

      Stehe gerade auf dem Schlauch.. 😄

      Gruß

      on ({id: "javascript.0.Rollosteuerung.Wohnzimmer.WeekDayHDown", change: "ne"}, function () {
          clearSchedule(RolloWZWDDownSched);
      
          var RolloWZWDDown=getState("javascript.0.Rollosteuerung.Wohnzimmer.WeekDayMDown").val + ' ' + getState("javascript.0.Rollosteuerung.Wohnzimmer.WeekDayHDown").val + ' * * *';
      
          var RolloWZWDDownSched = schedule(RolloWZWDDown, cb(function(){
              log("Rollo Wohnzimmer Schedule ausgelöst ");
              clearSchedule(RolloWZWDDownSched);
          }));
      
          log('Schedule gesetzt');
      });
      
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        Die Timer-Variable darf nicht lokal sein, sondern muss global (außerhalb von Funktionen) deklariert werden.

        var RolloWZWDDownSched = null;
        
        on ({id: "javascript.0.Rollosteuerung.Wohnzimmer.WeekDayHDown", change: "ne"}, function () {
            if(RolloWZWDDownSched) clearSchedule(RolloWZWDDownSched);
        
            var RolloWZWDDown=getState("javascript.0.Rollosteuerung.Wohnzimmer.WeekDayMDown").val + ' ' + getState("javascript.0.Rollosteuerung.Wohnzimmer.WeekDayHDown").val + ' * * *';
        
            RolloWZWDDownSched = schedule(RolloWZWDDown, function() {
                log("Rollo Wohnzimmer Schedule ausgelöst ");
                clearSchedule(RolloWZWDDownSched);
            });
        
            log('Schedule gesetzt');
        });
        
        1 Reply Last reply Reply Quote 0
        • BuZZy
          BuZZy last edited by

          Herrlich, das klapp ja wunderbar! 😄

          Vielen Dank!

          Gruß

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Eine schedule variable hat immer einen Wert ungleich null wenn gesetzt. Also einfach ein "if (scheduleid) clearSchedule" machen und bei auslösen oder clear die Variable auf null setzen. Somit weiß man über den variableninhalt ob ein schedule läuft oder nicht.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            807
            Online

            31.7k
            Users

            79.8k
            Topics

            1.3m
            Posts

            3
            4
            1155
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo