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. [Gelöst] clearInterval will nicht so wie ich

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    21
    1
    832

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

[Gelöst] clearInterval will nicht so wie ich

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 3 Kommentatoren 1.3k 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.
  • C Offline
    C Offline
    Chauffeur
    schrieb am zuletzt editiert von
    #1

    Hallo, ihr Lieben.

    Hätte mal wieder ein kleines Problem. Ich bemühe mich grad wirklich, in JS durchzusteigen, aber das ist (und bleibt wohl) ein Buch mit 7 Siegeln.

    Also, ich würde mit setInterval gerne eine Schleife erstellen. Da meine Versuche bisher (mit dem Hauptzweck) viel zu wirr und unübersichtlich (und fehlerbehaftet) waren, habe ich erstmal ein kleines Testskript geschrieben, um überhaupt ein Gespür für setInterval zu bekommen. Dieses soll alle 3 Sek abhängig eines Datenpunktwertes (1, 2, oder eine andere Zahl) ins log eintragen:

    "ist ne Eins", "ist ne Zwei", "Aus die Maus" (Für jede Zahl ausser 1+2) und generell "Änderung" bei jeder Änderung.

    soweit klappt alles, nur die clearInterval-Funktion will einfach nicht… je nachdem, wohin ich sie setzte wird sie scheinbar einfach ignoriert bzw. bringt bereits im Skript ne Meldung.

    Sobald ich die Zahl im Datenpunkt ändere (z.B. von 1 auf 2) kommt zwar "Änderung", aber es laufen "Es ist ne Eins" und "Es ist ne Zwei" parallel weiter.

    Vielleicht kann mir jemand sagen, wie man das hier besser hinbekommt?

    ! ````
    var Datenpunkt = "javascript.0.GardenspotsColor.Gardentime"/Gardentime/;
    ! function Text1() {
    console.log('Ist ne Eins');
    }
    ! function Text2() {
    console.log('Ist ne Zwei');
    }
    ! on(Datenpunkt, function (data) {
    console.log ('Änderung');
    clearInterval (timer1);
    clearInterval (timer2);

    if (data.state.val == 1) {
        var timer1 =  setInterval (Text1, 3000);
    

    }

    ! else if (data.state.val == 2) {
    var timer2 = setInterval (Text2, 3000);
    }

    else {
    console.log ('Aus die Maus');
    

    }
    });

    
    Danke schonmal
    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Deklarier mal die Timer-Variablen außerhalb einer Funktion:

      ! ````
      var Datenpunkt = "javascript.0.GardenspotsColor.Gardentime"/Gardentime/;
      ! function Text1() {
      console.log('Ist ne Eins');
      }
      ! function Text2() {
      console.log('Ist ne Zwei');
      }
      ! var timer1 = null;
      var timer2 = null;
      ! on(Datenpunkt, function (data) {
      console.log ('Änderung');
      if(timer1) clearInterval (timer1);
      if(timer2) clearInterval (timer2);

      if (data.state.val == 1) {
          timer1 =  setInterval (Text1, 3000);
      }
      

      ! else if (data.state.val == 2) {
      timer2 = setInterval (Text2, 3000);
      }

      else {
      console.log ('Aus die Maus');
      }
      

      });

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • DolomitiD Offline
        DolomitiD Offline
        Dolomiti
        schrieb am zuletzt editiert von
        #3

        Hallo,

        ich hab das mal ausprobiert. Kann es daran liegen das du versuchst die Timer zu clearen, diese aber noch gar nicht deklariert sind. Versuch mal die Variablendeklaration vor dem ersten function(). Damit funktioniert es bei mir.

        ! ````
        createState("javascript.0.GardenspotsColor.Gardentime");
        var Datenpunkt = "javascript.0.GardenspotsColor.Gardentime"/Gardentime/;
        var timer1, timer2;
        function Text1() {
        console.log('Ist ne Eins');
        }
        ! function Text2() {
        console.log('Ist ne Zwei');
        }
        ! on(Datenpunkt, function (data) {
        console.log ('Änderung');
        clearInterval (timer1);
        clearInterval (timer2);
        if (data.state.val == 1) {
        timer1 = setInterval (Text1, 3000);

        }

        ! else if (data.state.val == 2) {
        timer2 = setInterval (Text2, 3000);

        }

        else {
        console.log ('Aus die Maus');
        

        }

        !
        });
        ! ````

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

        1 Antwort Letzte Antwort
        0
        • DolomitiD Offline
          DolomitiD Offline
          Dolomiti
          schrieb am zuletzt editiert von
          #4

          OK, da war ich etwas zu langsam ;)

          Und die if (timer1)… Abfrage hab ich auch nicht drin. Wieder was gelernt.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
          Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

          1 Antwort Letzte Antwort
          0
          • C Offline
            C Offline
            Chauffeur
            schrieb am zuletzt editiert von
            #5

            Vielen herzlichen Dank schonmal.

            Die Timer-Variablen an den Anfang zu setzten hatte ich tatsächlich schon versucht, aber halt nicht mit "= null" oder leer, sondern gleich mit setInterval. Da wurden die aber immer sofort ausgeführt… Auf sowas wie die Deklaration muß man als Laie erst mal kommen (hab ich aus Beispielen auch nie verständlich rausgelesen...)

            Das if bei clearInterval hatte ich auch schon probiert, aber kann ja nicht gehen, wenn die Timer nicht richtig funktionieren...

            Wunderbar, da kann ich jetzt mal weiter dran arbeiten und mein eigentliches Script neu entwerfen/überarbeiten...

            Puh, ich glaub, für die JS-Logik bin ich zu alt... :( :mrgreen:

            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

            602

            Online

            32.5k

            Benutzer

            81.6k

            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