Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Timeout Zeit über VIS an variable übegeben

    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

    Timeout Zeit über VIS an variable übegeben

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

      Hallo,

      ich versuche ein Wert x via VIS an eine Variable zu übergeben um somit die Zeit eine timouts zu ändern:

      ~~![](</s><URL url=)http://up.picr.de/31751474ml.png" />

      Leider funktioniert das ganze irgendwie nicht. Der Wert wird nicht übernommen. Hat jemand eine Idee?

      :geek:

       <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="Be)ry,e1ZV:S@Nh_+54w" x="-113" y="-462"><mutation items="1"></mutation>
          <field name="CONDITION">ne</field>
      
          <value name="OID0"><shadow type="field_oid" id=")b}K..it,nrY)e@N}g*K"><field name="oid">javascript.0.Tageszeit.Sonnenuntergang_Start</field></shadow></value> 
          <statement name="STATEMENT"><block type="timeouts_cleartimeout" id="MR(hie#A)WM2k3N#Olp:"><field name="NAME">timeout</field>
              <next><block type="debug" id="gXnGhPFKt,dVzC0H7_Vd"><field name="Severity">log</field>
                  <value name="TEXT"><shadow type="text" id="?)L2hh0bPu)v]=(DtBFI"><field name="TEXT">test</field></shadow></value> 
                  <next><block type="variables_set" id="]U%ngZDiTwX]V:uiaS(H"><field name="VAR">timeout</field>
                      <value name="VALUE"><block type="get_value" id="@lq,Yw0TIWL-4MfJ~a!g"><field name="ATTR">val</field>
                          <field name="OID">javascript.0.Visuobjekte.Auto_Licht_Flur_unten</field></block></value> 
                      <next><block type="timeouts_settimeout" id="7^Jq0oM0:G=cL9a_e)h6"><field name="NAME">timeout</field>
                          <field name="DELAY">timeout</field>
                          <field name="UNIT">min</field>
                          <statement name="STATEMENT"><block type="debug" id="p~I2-oG)(xCePp+M3%uc"><field name="Severity">warn</field>
                              <value name="TEXT"><shadow type="text" id="}=4;SQ}]mViUhQtlrRj#"><field name="TEXT">Timeout</field></shadow></value></block></statement></block></next></block></next></block></next></block></statement></block></xml> 
      
      ````~~
      padrino 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        Blockly erlaubt offenbar nur konstante Werte für die Verzögerungszeit. Bleibt Javascript.

        const idDelay = '...';  // Datenpunkt mit Verzögerungszeit in Minuten
        const idEreignis = '...';  // Datenpunkt mit Ereignis, das die verzögerte Reaktion auslöst
        
        var timer = null;
        var delay = getState(idDelay).val;
        
        on(idDelay, function(dp) {  // Änderung der Verzögerungszeit
           if(timer) { 
              clearTimeout(timer);
              timer = null;
           }    
           delay = dp.state.val;
        });
        
        function meineFunktion() {
           // Mache was (verzögert)
           timer = null;
        }
        
        on(idEreignis, function() {
           if(timer) {
              clearTimeout(timer);
              timer = null;
           }   
           timer = setTimeout(meineFunktion, 60000 * delay);  // delay Minuten verzögert
        });
        
        
        1 Reply Last reply Reply Quote 0
        • M
          Moing last edited by

          Da Skript klappt bei mir super und der Timer macht seinen Job.

          Ich starte damit einen Prozess den ich nach x Minuten beende und mittels einer Lampe signalisiere das der Job beendet wurde.

          Nur möchte ich zusätzlich noch eine Funktionalität 'Abbruch' einbauen.

          Sobald der Abbruch aktiviert wird, soll der Timer stoppen und die Funktionalität sofort ausführen.

          Sodas mein Prozess sofort beendet wird.

          Aber es darf nicht alles was in "function meineFunktion" steht ausgeführt werden.

          Denn die Lampe, die normalerweise, dass Ende signalisiert, soll bei einen Abbruch nicht leuchten.

          Ist dafür eine einfach Implementierung möglich?

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

            @Moing:

            Aber es darf nicht alles was in "function meineFunktion" steht ausgeführt werden. `
            Dann müssen die Aktivitäten in 2 Funktionen aufgeteilt werden: Im Timeout-Callback werden beide Funktionen aufgerufen, bei Abbruch wird der Timer gestoppt und nur eine Funktion aufgerufen.

               timer = setTimeout(function() {
                  Funktion1();
                  Funktion2();
               }, 60000 * delay);  // delay Minuten verzögert
            
            
            1 Reply Last reply Reply Quote 0
            • padrino
              padrino Most Active @ErazorVIP last edited by

              @ErazorVIP
              Nur um das Thema komplett abzuschließen... 😃

              Das geht mit Variablen in Blockly schon, aber die Einheit der Zeit muss. "ms" sein, mit "sek" und "min" geht es nicht.
              Soweit ich das sehe, liegt es daran, dass die beiden intern durch eine Formel mit "ms" ersetzt werden, was zu Problemen führt. 🙂

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

              Support us

              ioBroker
              Community Adapters
              Donate

              828
              Online

              31.7k
              Users

              79.9k
              Topics

              1.3m
              Posts

              4
              5
              1390
              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