Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Schedule

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    924

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Schedule

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 4 Kommentatoren 2.1k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • GoerschG Offline
    GoerschG Offline
    Goersch
    schrieb am zuletzt editiert von
    #1

    Hallo,

    Kleiner Hinweis für "unbedarfte javascript-Programmierer", wie ich einer bin.

    Beim Programmieren der Skripte sind mir bei der Verwendung von "schedule" ein paar Fehler unterlaufen, die - warum auch immer - dazu geführt haben, dass anschliessend gar keine Skripte mehr ausgeführt wurden (Status der Instanz javascript blieb aber "grün")

    A) schedule ruft die Funktion auf, in der es selber enthalten ist. Wenn das oft genug durchgeführt wurde (bei mir jede Sekunde), ist irgendwann Schluss. War also eine schlechte Idee…
    ` > function test()

    {

    if (xyz) schedule(….,function(){test();});

    else log("Ende");

    } `

    Ich hab das jetzt durch ein schedule("*/x *..",function(){test();}) in einer anderen Funktion gelöst. Der Abruch erfolgt nun ebenfalls durch clearSchedule() von ausserhalb test();.

    B) hier bin ich noch nicht sicher, warum das heute zum kompletten Absturz geführt hat. Ich musste den RASPI zweimal neu starten, bis Skripte wieder ausgeführt wurden.
    ` > var startzeit ="2017-04-01 15:15:00";

    var dt = startzeit.split(" ");

    var datum = dt[0].split("-");

    var uhrzeit = dt[1].split(":");

    schedule({year: datum[0], month: datum[1], day: datum[2], hour: uhrzeit[0], minute: uhrzeit[1]}, function….}; `
    Hier bin ich nicht sicher, ob

    a) der string typ der Übergabeparameter,

    b) die leider in der Vergangenheit liegende Uhrzeit oder

    c) die Parameter "year", "month", "day" mir den ärger gemacht haben

    Vielleicht kann mir zu B) jemand einen Hinweis geben?

    Danke !

    Georg

    1 Antwort Letzte Antwort
    0
    • AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      Kurzer Hinweis, warum A) probleme macht:

      schedule wird üblicherweise verwendet, wiederkehrende Aufgaben regelmäßig auszuführen (jede Sekunde, etc). Ich vermute, du verwendest die Funktion ähnlich wie setTimeout, das nur einmalig die Funktion ausführt. schedule ist aber zu vergleichen mit setInterval, das bis zum Stop regelmäßig die Funktion immer wieder aufruft.

      Daher erstellst du sozusagen in einer Schleife endlos neue schedules. Jeder Aufruf von Test erzeugt einen neuen, der zusätzlich zu den alten aufgerufen wird, jeder * steht für einen Funktionsaufruf:

      außerhalb
      * | Test (1)
      * | * | Test (2)
      * | * | * | Test (3)
      * | * | * | * | Test (4)
      ...
      
      

      Korrekt wäre: Außerhalb der Funktion einmalig den schedule erstellen und bei Bedarf beenden. Oder du weichst auf setTimeout aus und machst es wie in deinem Code oben.

      Zu B kann ich dir ohne Test-Code und ioBroker leider gerade nicht helfen. Vielleicht sieht ja jemand anders das Rroblem

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #3

        Hallo,

        ich bekomme vom Editor immer die Warnmeldung "Do not put a function in a function" oder ähnlich, wenn ich schedule in eine Funktion packe. Auf diese Meldungen achten (kommen links von der entsprechenden Zeile)!

        Pix

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #4

          Eigentlich spricht da erst mal nichts dagegen. Anynome Funktionen sind bei Callbacks, setTimeout, etc. recht gängig.

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Antwort Letzte Antwort
          0
          • GoerschG Offline
            GoerschG Offline
            Goersch
            schrieb am zuletzt editiert von
            #5

            ich war auch etwas überrascht. Den Fall A) hab ich 2 mal nachgestellt und es war reproduzierbar. Im Fall B hab ich nicht weiter gesucht.

            1 Antwort Letzte Antwort
            0
            • frankjokeF Offline
              frankjokeF Offline
              frankjoke
              schrieb am zuletzt editiert von
              #6

              Wenn du einen bestimmten Termin, und nicht stündliche oder menütliche Ereignisse vewenden willst würd ich eher mit setTimeout arbeiten.

              Schaut ca so aus:

              var startzeit =new Date("2017-04-06 15:15:00");
              setTimeout(function() {}, startzeit.getTime()-Date.now());
              
              

              Startzeit muss nur in der Zukunft liegen.

              Frank,

              NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
              Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

              1 Antwort Letzte Antwort
              0
              • GoerschG Offline
                GoerschG Offline
                Goersch
                schrieb am zuletzt editiert von
                #7

                ja, danke :)

                setTimeout müsste ich mit setInterval verwenden, da ich den Aufruf zyklisch brauche (muss ich noch ausprobieren)

                schedule hat für meinen Anwendungsfall noch eine andere schwäche: Wenn man eine Funktion alle 15 Minuten aufrufen will (also schedule("*/15 * * * *", function () ….") dann wird die Funktion immer um xx:00, xx:15, xx:30, xx:45 aufgerufen.

                Ich will aber eine Funktion von "jetzt" an alle 2 Minuten auszuführen. Mit schedule passiert es, dass die Funktion dann im schlechtesten Fall 1 Sekunde später aufgerufen wird.

                1 Antwort Letzte Antwort
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #8

                  @Goersch:

                  Ich will aber eine Funktion von "jetzt" an alle 2 Minuten auszuführen. Mit schedule passiert es, dass die Funktion dann im schlechtesten Fall 1 Sekunde später aufgerufen wird. `

                  Dann ist setInterval dein Freund.

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Antwort Letzte Antwort
                  0
                  • GoerschG Offline
                    GoerschG Offline
                    Goersch
                    schrieb am zuletzt editiert von
                    #9

                    OK - danke!

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    712

                    Online

                    32.6k

                    Benutzer

                    82.2k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe