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. Countdown ersetzen anstatt neuen zu erzeugen

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Countdown ersetzen anstatt neuen zu erzeugen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 2 Kommentatoren 385 Aufrufe 1 Watching
  • Ä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.
  • E Offline
    E Offline
    ehome
    schrieb am zuletzt editiert von ehome
    #1

    Hallo,
    ich benötige für ein Skript die Möglichkeit einen Countdown (mit dem betr. Adapter countdown) neu zu setzen bevor der vorhergehnede Countdown zu Ende gegangen ist.

    Das ganze soll so laufen, dass ich unter 0_userdata für jeden Raum Parameter für die Automatisierung festlegen kann. Einer davon ist "Anwesend". Dieser soll auf true gesetzt werden wenn z.B. der Bewegungsmelder in dem Raum anspricht oder ein Lichtschalter in dem Raum betätigt wird.

    Sobald eine Bewegung erkannt bzw. Lichtschalter betätigt wird soll bei einem bereits laufenden countdown die Zielzeit neu gesetzt werden.

    Wenn man dies mit "sendTo" macht wird der bestehende Countdown aber nicht geändert.
    Löschen und neu Anlegen ist auch keine Alternative, da bei Änderung des Datenpunktes für das ablaufen des Countdowns != false die Anwesenheit dann auf "false" gesetzt werden und ein "flackern" vermieden werden soll.

    Weiss jemand wie man einen laufenden Timer updaten kann ?

    $('channel[state.id=*.STATE](functions=Bewegung)').on(function(obj) {
        
        let raum=getRoom(obj.id)
        let timername="Anwesenheit"+raum
        let anwesendId="0_userdata.0.RS."+raum+".Anwesend"
        let timerEndId="countdown.0.countdowns."+timername+".reached"
    
        if (getState(obj.id).val == true) {
           
            let automatikAus=getState("0_userdata.0.RS."+raum+".LichtAutoAus").val
            let automatikEin=getState("0_userdata.0.RS."+raum+".LichtAutoAn").val
            let timeout=getState("0_userdata.0.RS."+raum+".Anwesenheit_CounterSet").val
            let timerEndDateTime = addMinutes(new Date(), timeout)
            
            tolog(logging,("Licht:      "  + obj.id))
            tolog(logging,("Raum:       "  + raum))
            tolog(logging,("AutoAus:    "  + automatikAus))
            tolog(logging,("AutoEin:    "  + automatikEin))
            tolog(logging,("anwesendId: "  + anwesendId))
            tolog(logging,("timeout:    "  + timeout))
            tolog(logging,("timerEnd:   "  + timerEndDateTime))
    
            sendTo("countdown.0", "send", {
                   "name": timername,
                   "date": timerEndDateTime
            })
            setState(anwesendId,true,true)
    
            on({id:timerEndId, value: 'true'}, function (obj) {
                setState(anwesendId,false,true)
            })
    
        }
    });
    
    geschildG 1 Antwort Letzte Antwort
    0
    • E ehome

      Hallo,
      ich benötige für ein Skript die Möglichkeit einen Countdown (mit dem betr. Adapter countdown) neu zu setzen bevor der vorhergehnede Countdown zu Ende gegangen ist.

      Das ganze soll so laufen, dass ich unter 0_userdata für jeden Raum Parameter für die Automatisierung festlegen kann. Einer davon ist "Anwesend". Dieser soll auf true gesetzt werden wenn z.B. der Bewegungsmelder in dem Raum anspricht oder ein Lichtschalter in dem Raum betätigt wird.

      Sobald eine Bewegung erkannt bzw. Lichtschalter betätigt wird soll bei einem bereits laufenden countdown die Zielzeit neu gesetzt werden.

      Wenn man dies mit "sendTo" macht wird der bestehende Countdown aber nicht geändert.
      Löschen und neu Anlegen ist auch keine Alternative, da bei Änderung des Datenpunktes für das ablaufen des Countdowns != false die Anwesenheit dann auf "false" gesetzt werden und ein "flackern" vermieden werden soll.

      Weiss jemand wie man einen laufenden Timer updaten kann ?

      $('channel[state.id=*.STATE](functions=Bewegung)').on(function(obj) {
          
          let raum=getRoom(obj.id)
          let timername="Anwesenheit"+raum
          let anwesendId="0_userdata.0.RS."+raum+".Anwesend"
          let timerEndId="countdown.0.countdowns."+timername+".reached"
      
          if (getState(obj.id).val == true) {
             
              let automatikAus=getState("0_userdata.0.RS."+raum+".LichtAutoAus").val
              let automatikEin=getState("0_userdata.0.RS."+raum+".LichtAutoAn").val
              let timeout=getState("0_userdata.0.RS."+raum+".Anwesenheit_CounterSet").val
              let timerEndDateTime = addMinutes(new Date(), timeout)
              
              tolog(logging,("Licht:      "  + obj.id))
              tolog(logging,("Raum:       "  + raum))
              tolog(logging,("AutoAus:    "  + automatikAus))
              tolog(logging,("AutoEin:    "  + automatikEin))
              tolog(logging,("anwesendId: "  + anwesendId))
              tolog(logging,("timeout:    "  + timeout))
              tolog(logging,("timerEnd:   "  + timerEndDateTime))
      
              sendTo("countdown.0", "send", {
                     "name": timername,
                     "date": timerEndDateTime
              })
              setState(anwesendId,true,true)
      
              on({id:timerEndId, value: 'true'}, function (obj) {
                  setState(anwesendId,false,true)
              })
      
          }
      });
      
      geschildG Offline
      geschildG Offline
      geschild
      schrieb am zuletzt editiert von
      #2

      @ehome Aus der Adapterbeschreibung: "Sie können einen Countdown mit dem sendto löschen. Senden Sie daher mit sendto nur den Namen an den Adapter und der Countdown wird automatisch gelöscht."

      E 1 Antwort Letzte Antwort
      0
      • geschildG geschild

        @ehome Aus der Adapterbeschreibung: "Sie können einen Countdown mit dem sendto löschen. Senden Sie daher mit sendto nur den Namen an den Adapter und der Countdown wird automatisch gelöscht."

        E Offline
        E Offline
        ehome
        schrieb am zuletzt editiert von
        #3

        @geschild
        ja, die Adapterberschreibung kenn ich, aber ich möchte ja gerade nicht den Timer löschen sondern ändern.

        geschildG 1 Antwort Letzte Antwort
        0
        • E ehome

          @geschild
          ja, die Adapterberschreibung kenn ich, aber ich möchte ja gerade nicht den Timer löschen sondern ändern.

          geschildG Offline
          geschildG Offline
          geschild
          schrieb am zuletzt editiert von
          #4

          @ehome Dann würde ich erst löschen und dann den geänderten sofort hinterherschicken.

          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

          675

          Online

          32.4k

          Benutzer

          81.5k

          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