Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst]Funktion nur für bestimmten Zeitraum ausführen (Timer)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Funktion nur für bestimmten Zeitraum ausführen (Timer)

    This topic has been deleted. Only users with topic management privileges can see it.
    • Chaot
      Chaot last edited by

      Ich bin gerade irgendwie nicht so richtig auf der Höhe und brauche mal etwas Hilfe.

      Folgende Ausgangssituation:

      Ich habe in einem Zimmer einen Dect Thermostaten und einen Dash Button

      Über den Dash Button möchte ich den Thermostaten voll aufregeln.

      Das erfolgt hiermit:

      var Taster = "amazon-dash.0.00-fc-xx-xx-xx-a9.pressed"/*pressed*/; 
      var idTarget = "fritzdect.0.Comet_1196xxx99192.targettemp"/*Target Temp*/;
      var idComfy = "fritzdect.0.Comet_1196xxx99192.comfytemp";
      var idNight = "fritzdect.0.Comet_1196xxx99192.nighttemp";
      var idHigh = "28";
      
      on({id: Taster, val: true}, function (obj) {
      setState(idTarget, idHigh);
      });
      
      

      Soweit funktioniert das jetzt ohne Probleme.

      Jetzt möchte ich allerdings die Funktion erweitern und bin mir nicht so richtig im Klaren wie ich vorgehen sollte.

      Hinzufügen möchte ich:

      • einen Timer mit 60 Minuten der nach 60 Minuten auf die die Komforttemperatur zurückschaltet. Bei erneutem Drücken soll der Timer neu starten.

      • einen Datenpunkt in dem ich die abgelaufene Zeit des Timers sehen kann für VIS

      Ich habe mehrere Möglichkeiten gefunden aber bin scheinbar irgendwie zu blöd das umzusetzen.

      viewtopic.php?f=21&t=16364&p=172478&hil … pt#p172478

      viewtopic.php?f=21&t=7808

      Bitte zerlegt mich jetzt nicht, aber ich bin die Tage nicht so richtig fähig klar zu denken(Erkältung), möchte aber das irgendwie schon weiterbringen.

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        @Chaot:

        • einen Datenpunkt in dem ich die abgelaufene Zeit des Timers sehen kann für VIS `
          Dafür muss man setInterval() verwenden. Möchtest Du die abgelaufene Zeit oder die Restdauer anzeigen ?

        Vorschlag (nicht getestet) mit Restdauer (in Minuten):

        const idTaster = "amazon-dash.0.00-fc-xx-xx-xx-a9.pressed"/*pressed*/; 
        const idTarget = "fritzdect.0.Comet_1196xxx99192.targettemp"/*Target Temp*/;
        const idComfy = "fritzdect.0.Comet_1196xxx99192.comfytemp";
        const idNight = "fritzdect.0.Comet_1196xxx99192.nighttemp";
        const idVis = "javascript.0..."; // Anzeige Restdauer in Minuten
        const High = 28;
        
        var cnt = getState(idVis).val;
        var timer = null;
        
        function countDown() {
           cnt--;
           setState(idVis, cnt, true);
           if(cnt <= 0) {
              clearInterval(timer);
              setState(idTarget, getState(idComfy).val);
           }   
        }
        
        on({id: idTaster, val: true}, function () {
           setState(idTarget, High);
           cnt = 60;
           setState(idVis, cnt, true);
           if(timer) clearInterval(timer);
           timer = setInterval(countDown, 60000); // jede Minute
        });
        
        1 Reply Last reply Reply Quote 0
        • Chaot
          Chaot last edited by

          Ich danke dir ganz herzlich.

          Das funktioniert einwandfrei.

          Darf ich noch eine Frage loswerden?

          Du hast den Anfang von

          "var"

          auf

          "const"

          geändert. Was ist da der Unterschied?

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            @Chaot:

            Was ist da der Unterschied? `
            Mit const deklariert man Konstanten, deren Wert anschließend im Skript nicht mehr geändert werden kann (trifft nicht auf den <u>Inhalt</u> von Objekten / Arrays zu). Es ist einfach nur konsequenter.

            1 Reply Last reply Reply Quote 0
            • Chaot
              Chaot last edited by

              Danke!

              Wieder etwas schlauer 😄

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

              Support us

              ioBroker
              Community Adapters
              Donate

              968
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              2
              5
              411
              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