Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Fensterkontakt + Thermostat: Wie Verzögerung einbauen

    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] Fensterkontakt + Thermostat: Wie Verzögerung einbauen

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

      Hallo zusammen,

      ich betreibe einige Xiaomi Fensterkontakte und HmIP Heizkörperthermostate.

      Ich würde gerne eine Skript laufen lassen, dass bei Fenster auf mit einer Verzögerung von 30 Sekunden beim Thermostat den Fenster auf Modus aktiviert. Wenn das Fenster wieder geschlossen wird, soll der Fenster auf Modus wieder ausgeschaltet werden.

      Ich hab mir dazu folgendes Blockly Skript gemacht. Allerdings habe ich häufiger das Phänomen, dass die Thermostate auf Fenster auf stehen bleiben, wenn ein Fenster mehrmals schnell geöffnet und wieder geschlossen wird.

      Hat evlt. jemand eine Idee, was ich falsch mache?

      https://ibb.co/YPDWZ2x

      1 Reply Last reply Reply Quote 0
      • D
        dexter last edited by

        Hallo Thosch,

        scheinbar passiert folgendes:

        Fenster geht auf, Blockly merkt sich das er in 30 Sekunden das Thermostat runter fahren soll

        Fenster geht zu, Blockly schaltet Thermostat hoch

        30 Sekunden sind abgelaufen, Blockly fährt Thermostat runter.

        Probiere mal statt einer Verzögerung einen Timeout von 30 Sekunden und darin dann erneut eine Abfrage ob das Fenster wirklich noch auf ist.
        16721_unbenannt.png

        1 Reply Last reply Reply Quote 0
        • T
          Thosch last edited by

          Ahh ja, da stand ich wohl auf dem Schlauch. An den timeout hab ich gar nicht gedacht.

          So funktioniert's wunderbar.

          Vielen Dank für die schnelle Hilfe!!

          1 Reply Last reply Reply Quote 0
          • M
            Malti last edited by

            Hallo Thosch,
            ich würde dieses gerne mit meinen Homematic Aktoren nachbauen.
            Könntest du mir einen Screenshot von Blockly zeigen oder das Script exportieren?

            Vielen lieben Dank
            Michael

            1 Reply Last reply Reply Quote 0
            • C
              charakterkopf last edited by charakterkopf

              Hi, leider nur Javascript. Die Funktion Timeout ist aber schön zu erkennen:

              Hier wird 60 Sekunden bei Fenster auf gewartet und erneut geprüft. Ich kann also in Ruhe ein Bier vom Balkon holen...

              //Wohnzimmer:
              on({id: 'javascript.0.Smarthome.fenster_wohnzimmer', change: 'any'}, function (obj) 
                  {
                      if (obj.state.val===true) 
                      {
                              setTimeout(function(){ 
                                  if (obj.state.val===true) 
                                      { 
                                              setState('fritzdect.0.Comet_119610277592.mode',1); 
                                      }
                              }, 60000);
                      }
                      else setState('fritzdect.0.Comet_119610277592.mode',0);
                  });  
              

              Und falls du Fenster zusammenfassen möchtest (Wohnzimmer hat bei mir 2 Fenster + Balkontür:

              //Das Script fasst die Wohnzimmer Fenster zusammen
                  const idSammel = 'javascript.0.Smarthome.fenster_wohnzimmer';
                  const id1 = 'javascript.0.Smarthome.Fenster.Fenster_1'; // ID von 1\. Meldung
                  const id2 = 'javascript.0.Smarthome.Fenster.Fenster_2';
                  const id3 = 'javascript.0.Smarthome.Fenster.Fenster_3';
              
                  const ids = [id1, id2, id3];
               
                  var vals = [getState(id1).val, getState(id2).val, getState(id3).val];
              
                  function sammel() {
                  if(vals[0] || vals[1] || vals[2] ) setState(idSammel, true, true);
                  else setState(idSammel, false, true);
                  }
              
              on(ids, function(dp) {  
                 var pos = ids.indexOf(dp.id);
                 if(pos != -1) {
                    vals[pos] = dp.state.val;
                    sammel();
                 } else log('Trigger-ID nicht im Array !', 'warn');
              });
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              644
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

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