Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Countdown ersetzen anstatt neuen zu erzeugen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Countdown ersetzen anstatt neuen zu erzeugen

    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      ehome last edited by 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)
              })
      
          }
      });
      
      geschild 1 Reply Last reply Reply Quote 0
      • geschild
        geschild @ehome last edited by

        @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 Reply Last reply Reply Quote 0
        • E
          ehome @geschild last edited by

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

          geschild 1 Reply Last reply Reply Quote 0
          • geschild
            geschild @ehome last edited by

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

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            780
            Online

            31.7k
            Users

            79.8k
            Topics

            1.3m
            Posts

            2
            4
            265
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo