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

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    672

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.3k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.3k

Countdown ersetzen anstatt neuen zu erzeugen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 2 Kommentatoren 535 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.
  • 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

          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

          380

          Online

          33.0k

          Benutzer

          83.5k

          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