Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. JavaScript
  5. Script Schedule/clearSchedule läuft nicht

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    8
    1
    496

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    14
    1
    2.7k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.9k

Script Schedule/clearSchedule läuft nicht

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
8 Beiträge 3 Kommentatoren 651 Aufrufe 1 Beobachtet
  • Ä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.
  • H Offline
    H Offline
    homecineplexx
    schrieb am zuletzt editiert von homecineplexx
    #1

    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);
    });
    
    paul53P 1 Antwort Letzte Antwort
    0
    • H homecineplexx

      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);
      });
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @homecineplexx
      Die Timer-Variablen müssen global sein, TimerEin ist aber eine lokale Variable.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

      1 Antwort Letzte Antwort
      0
      • H Offline
        H Offline
        homecineplexx
        schrieb am zuletzt editiert von
        #3

        TimerEin ist lokal aber ich übergebe doch eine globale TimerMorgen variable.

        paul53P 1 Antwort Letzte Antwort
        0
        • H homecineplexx

          TimerEin ist lokal aber ich übergebe doch eine globale TimerMorgen variable.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @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.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

          1 Antwort Letzte Antwort
          0
          • H Offline
            H Offline
            homecineplexx
            schrieb am zuletzt editiert von
            #5

            Wenn ich die variable returniere sollte es aber klappen oder?

            paul53P 1 Antwort Letzte Antwort
            0
            • H homecineplexx

              Wenn ich die variable returniere sollte es aber klappen oder?

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @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.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

              1 Antwort Letzte Antwort
              0
              • H Offline
                H Offline
                homecineplexx
                schrieb am zuletzt editiert von
                #7

                Das ist ja eine generische Funktion die mehrfach mit verschiedenen timern aufgerufen wird. Daher bissl komplexer... Danke dir

                1 Antwort Letzte Antwort
                0
                • apollon77A Offline
                  apollon77A Offline
                  apollon77
                  schrieb am zuletzt editiert von
                  #8

                  Ok, dann ja wenn Du TimerEin zurück gibst und dann immer wieder als input hast dann sollte es tun

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  1 Antwort Letzte Antwort
                  0

                  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
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  592

                  Online

                  33.0k

                  Benutzer

                  83.3k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2026
                  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