Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Countdown vorzeitig stoppen

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    278

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

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

Countdown vorzeitig stoppen

Countdown vorzeitig stoppen

Scheduled Pinned Locked Moved Skripten / Logik
4 Posts 2 Posters 1.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    dtp
    wrote on last edited by
    #1

    Hallo,

    ich bin gerade etwas am verzweifeln, da ich nicht so recht weiter komme. Mit folgendem Skript starte ich einen Countdown in Abhängigkeit eines CUxD-Timers, der nach dem Runterzählen automatisch endet.

    // Countdown für Alarmaktivierung nach Abwesenheit
    
    var count, working;
    
    createState('AlarmCountdown', 0, {
      read: true,
      write: true,
      desc: 'Countdown für Alarmaktivierung nach Abwesenheit',
      def: ''
    });
    
    function countdown(count, working){
      var counter = setInterval(timer, 1000);
    
      function timer(){
        log(working);
        if((count === 0) || (working === false)){
          clearInterval(counter);
          return;
        }
        setState('AlarmCountdown', count);
        count=count-1;
      }
    }
    
    on({id: "hm-rpc.1.CUX2800001.3.WORKING", change: "ne"}, function(obj){
      countdown(getState('hm-rpc.1.CUX2800001.3.TIMER_SET').val, obj.state.val);
    });
    
    

    Das funktioniert auch soweit problemlos. Nun möchte ich den Countdown aber auch abbrechen können, wenn der Zustand WORKING des Timers auf false gesetzt wird. Doch leider reagiert der Timer darauf nicht. Die Variable "working" geht zwar einmalig auf "false", danach nimmt sie aber wieder den Wert "true" an, obwohl "hm-rpc.1.CUX2800001.3.WORKING" tatsächlich auf false steht, und der Timer zählt weiter fleißig bis 0 zurück. Wo liegt mein Denkfehler?

    Gruß,

    Thorsten

    ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      Du hast "working" global deklariert und außerdem als Übergabeparameter verwendet. Ändere mal:

      function countdown(count, work){
        working = work;
        ...
      
      

      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 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #3

        Ich würde es so machen:

        // Countdown für Alarmaktivierung nach Abwesenheit
        
        var count,timer;
        
        createState('AlarmCountdown', 0, {
          read: true,
          write: true,
          desc: 'Countdown für Alarmaktivierung nach Abwesenheit',
          def: ''
        });
        
        function countdown(){
          if(count > 0) {
            count--;
            setState('AlarmCountdown', count);
          } else clearInterval(timer);
        }
        
        on({id: "hm-rpc.1.CUX2800001.3.WORKING", change: "ne"}, function(obj){
          if(obj.state.val) { 
            count = getState('hm-rpc.1.CUX2800001.3.TIMER_SET').val;
            timer = setInterval(countdown, 1000);
          } else clearInterval(timer);
        });
        

        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 Reply Last reply
        0
        • D Offline
          D Offline
          dtp
          wrote on last edited by
          #4

          Klasse. Funktioniert genau so, wie gewünscht. Vielen, vielen Dank.

          Gruß,

          Thorsten

          ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          Support us

          ioBroker
          Community Adapters
          Donate

          208

          Online

          32.4k

          Users

          81.3k

          Topics

          1.3m

          Posts
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          ioBroker Community 2014-2025
          logo
          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Recent
          • Tags
          • Unread 0
          • Categories
          • Unreplied
          • Popular
          • GitHub
          • Docu
          • Hilfe