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. Doppelte Ausführung von Skriptcode.

NEWS

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

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    728

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

Doppelte Ausführung von Skriptcode.

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 1.2k 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.
  • M Offline
    M Offline
    MistyReblaus
    schrieb am zuletzt editiert von
    #1

    Hi,

    ich habe den folgenden Skriptcode. Im Allgemeinen habe ich einen Schalter, mit dem ich durch Drücken der EIN Taste eine Lampe für xx Sekunden leuchten lassen möchte. Wenn man die Taste öfter drückt, werden wieder XX Sekunden auf den Zähler addiert. Der Zahler wird dann wieder heruntergezählt, bis das Licht ausgeschaltet wird. Im Endeffekt ähnlich wie bei einem Treppenlicht nur mit dieser additiven Funktion.

    Was ich jetzt in der Log Ausgabe sehe, ist, dass die Log Ausgabe pro abgelaufenen Timer (hier alle 5 Sekunden) zweimal ausgeführt wird.

    Hat jemand eine Idee?

    
    createState('Aussenbeleuchtung_Eingang_CountDown', 0); 
    createState('Aussenbeleuchtung_Eingang_CountDown_State', false); 
    
    // Auslösung mit Homematic Hardware-Taster
    on({
        id: "hm-rpc.1.XXXXXX.1.STATE"/*Taster XXXXX.PRESS_SHORT*/,
        val: true
        }, function(obj) 
            {
    
                log("Hier");
                var current_countdown = getState('Aussenbeleuchtung_Eingang_CountDown').val || 30;
    
                if( current_countdown != 30)
                 {   current_countdown += 30;}
    
                setState('Aussenbeleuchtung_Eingang_CountDown', current_countdown); 
    
                if(!getState("Aussenbeleuchtung_Eingang_CountDown_State").val)
                {    count();}
            }
    );
    
    function count() {
        setTimeout(function () {
            var countdown = getState('Aussenbeleuchtung_Eingang_CountDown').val;
            setState("Aussenbeleuchtung_Eingang_CountDown_State",true);
    
            log("Countdown ist: "+ countdown);
    
            if (countdown >= 1) {
                setState('Aussenbeleuchtung_Eingang_CountDown', countdown - 1);
                count();
            }
            else
              setState("hm-rpc.1.XXXXXX.1.STATE",false);
              setState("Aussenbeleuchtung_Eingang_CountDown_State",false);
        }, 5000);
    }
    
    
    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      Du prüfst in "on" nicht auf den "ack" Flag … also damit hast Du theoretisch einmal nen call mit "ack=false" und sobald vom Gerät bestätigt mit "ack=true" ... Kann das der Grund sein?

      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
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #3

        Will man retriggern, sollte der Timer vorher gelöscht werden:

        ...
        var timer = null;
        
        function count() {
            if(timer) clearTimeout(timer);
            timer = setTimeout(function () {
                ...
        

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

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          MistyReblaus
          schrieb am zuletzt editiert von
          #4

          Hallo ihr beiden,

          ja, es war beides korrekt. Sowohl den TImer muss ich zurücksetzten damit es sauber ist, als auch auf das ack flag schauen. Da ich erst mit der Programmierung anfange, bin ich froh über jedes Beispiel und Frage, die ich hier beitragen kann, auch wenn Sie noch so einfach erscheint ;-)

          Grüße, Jens

          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

          593

          Online

          32.9k

          Benutzer

          83.0k

          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