Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [GELÖST] clear schedule?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [GELÖST] clear schedule?

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

      Hallo,

      gibt es eine Möglichkeit in einem iobroker javascript ein scheduled Funktionion abzumelden? Etwas wie clearSchedule(callback).

      Ich versuche eine Zustandsmaschine für meine Wohnung zu schreiben, wo der Zustand zu gewissen Zeiten geändert wird. Die Zeiten würde ich gerne in javascript Variablen speicher, die dann mit dem VIS UI geändert werden können.

      var state;
      var awakeTime={hour: 07, minute: 00}
      on(awakeTime, cb(function (timer){
        #Awake time!
        #TBD: clear stateChanged
        schedule(timer.val, cb(function (){
           state = "awake";
      }))
      
      

      Ich könnte vermutlich auch setTimeout und clearTimeout benutzen oder eine Funktion schedulen, die jede Minute gerufen wird und dann pruft ob Zeit==awakeTime aber beider scheinen nicht so elegant zu sein…

      Für Ideen wäre ich dankbar! 🙂

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo,

        vielleicht hilft dir das?

        http://forum.iobroker.net/viewtopic.php?f=21&t=1072

        Gruß

        Pix

        1 Reply Last reply Reply Quote 0
        • V
          vegetto last edited by

          Danke pix,

          in den Bespiele für isTimeInRange() wird immer ein Datepunkt als trigger benutzt. Das habe ich nicht, wenn ich nicht ein eigenes addiere:

          var awakteTimeStart='07:00:00';
          var awakeTimeEnd='22:00:00';
          schedule("* * * * *", function () {
            //Triggered every minute
            if (isTimeInRange(awakteTimeStart,awakeTimeEnd)
               state = "awake";
            }
          }
          
          

          Dieser Funktion würde dann jeder Minute angerufen, um zu prufen ob die state zu "awake" gestzt werden muss. Vielleicht geht es aber naja, ich finde es nicht so elegant.

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

            Habe eingefügt:

            ### 1.0.3 (2015-10-30)
            * (bluefox) add clearSchedule function (only for non astro function)
            
            
            ### clearSchedule
            If **no** "astro" function used you can cancel the schedule later. To allow this the schedule object must be saved:
            
            ```
            var sch = schedule("*/2 * * * *", function () {...});
            
            clearSchedule(sch);
            ```
            
            
            1 Reply Last reply Reply Quote 1
            • V
              vegetto last edited by

              @Bluefox:

              Habe eingefügt:

              ### 1.0.3 (2015-10-30)
              * (bluefox) add clearSchedule function (only for non astro function)
              
              ```` `  
              

              Cool! Das war schnell!

              Jetzt bin ich dran! Ich melde mich später, wenn ich das stateUpdate Script fertig habe.

              Dein ioBroker.vis-timeandweather wird auch dabei helfen 🙂

              1 Reply Last reply Reply Quote 0
              • V
                vegetto last edited by

                BlueFox,

                leider gibt es noch ein Problem mit clearSchedule: wenn man das Script beendet, dass clearSubscribe verwendet, gibt es errors:

                javascript.0	2015-10-31 09:58:52	error	TypeError: Cannot read property 'name' of undefined at stop (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1510:55) at Object.utils.adapter.objectChange (/opt/iobroker/node_modules/
                javascript.0	2015-10-31 09:58:52	error	message script.js.test [object Object] Cannot read property 'name' of undefined
                javascript.0	2015-10-31 09:58:52	info	javascript.0 Stop script script.js.test
                javascript.0	2015-10-31 09:58:30	info	javascript.0 script.js.test: registered 0 subscriptions and 2 schedules
                javascript.0	2015-10-31 09:58:30	info	javascript.0 Start javascript script.js.test
                javascript.0	2015-10-31 09:58:19	info	javascript.0 Stop script script.js.Script1
                
                

                Dafür habe ich dieses Testcase geschrieben:

                createState("test");
                sch = schedule("0 0 * * *", cb(function(){
                    log("schedule called");
                }));
                clearSchedule(sch);
                sch = schedule("0 1 * * *", cb(function(){
                    log("schedule 2 called");
                }));
                
                

                Ich vermute, dass bei dem javascript stop alle schedulers gelöscht werden aber jetzt gibt es einige die nicht mehr gültig sind, weil sie in Programm schon gelöscht sind.

                Nach dieses Error, muss ich das javascript Instanz neue starten, damit es wieder sauber funktioniert.

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @vegetto last edited by

                  Hi, ich habe ein andese Problem, einen variablen Scheduler:

                  schedule({hour: getState(idMyTime).val.substring(0,2), minute: getState(idMyTime).val.substring(3,5), second: 0}, function () {
                      //Do something.....
                  });
                  

                  Damit das funktioniert, muss das Script bei einer Änderung am Object, neu gestartet werden. Gibt es eine Möglichkeit
                  einen Scheduler zu resetten oder zu refreshen? Oder übersehe ich eine andere Möglichkeit so etwas zu realisieren?
                  Gruß
                  Jo

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @Guest last edited by

                    @androiddev du antwortest tatsächlich auf einen Thread von 2015??
                    🏆Herzlichen Glückwunsch zum Schliemann des Jahrzehnts! 🏆

                    ? 1 Reply Last reply Reply Quote 1
                    • ?
                      A Former User @Homoran last edited by

                      Eine sehr hilfreiche Antwort von einer sehr intelligenten Person.

                      Was ist das denn denn für eine ulkige Gesellschaft hier 😉

                      Deinen Schliemann kannst du dir sonst wo hinschieben....

                      1 Reply Last reply Reply Quote -5
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      606
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      5
                      9
                      3195
                      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