Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Temperatur vom Thermostat runter, wenn Fenster auf

    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

    Temperatur vom Thermostat runter, wenn Fenster auf

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User last edited by A Former User

      Hallo,

      ich habe beispielsweise ein Thermostat in einem Raum, sowie ein Fenster.
      Nun möchte ich, sobald das Fenster geöffnet wird, dass das Thermostat auf 5° heruntergeht und sobald das Fenster wieder geschlossen wird, wieder auf die zu vorige Temperatur wechselt.

      Mein Beispiel, welches zwar die Temperatur senkt aber nicht mehr erhöht:

      var thermostat = "javascript.0.Thermostat.Test";
      var fenster = "zwave.0.NODE103.ALARM.Access_Control_1";
      const oldThermostat = getState(thermostat).val;
      on(fenster, function (obj) {
          if (obj.state.val == 1) {
              setState(thermostat, 12)
          } else {
              setState(thermostat, oldThermostat)
          }
      })
      

      Kann mir da wer helfen? Vermutlich muss zuvor per createState ein Objekt angelegt werden, in welchem immer der Wert des Thermostat's eingetragen wird, wenn das Fenster geschlossen ist right?

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

        @tmartin Du musst die Variable oldThermostat auch im Trigger setzen.

        const thermostat = "javascript.0.Thermostat.Test";
        const fenster = "zwave.0.NODE103.ALARM.Access_Control_1";
        
        on(fenster, function (obj) {
            if (obj.state.val) {
                let oldThermostat = getState(thermostat).val;
                setState(thermostat, 12)
            } else {
                setState(thermostat, oldThermostat)
            }
        });
        
        ? 1 Reply Last reply Reply Quote 0
        • ?
          A Former User @paul53 last edited by

          @paul53 Das habe ich auch bereits probiert. Jedoch ist es da so, dass der gleiche Wert gesetzt wird, wie wenn das Fenster aufgemacht wird.

          paul53 Dominik F. 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @Guest last edited by

            @tmartin said: der gleiche Wert gesetzt wird, wie wenn das Fenster aufgemacht wird.

            Dann muss er den Fenster-offen-Sollwert schon in die Variable einlesen. Bau mal ein Log ein.

            const thermostat = "javascript.0.Thermostat.Test";
            const fenster = "zwave.0.NODE103.ALARM.Access_Control_1";
             
            on(fenster, function (obj) {
                if (obj.state.val) {
                    let oldThermostat = getState(thermostat).val;
                    setState(thermostat, 12)
                } else {
                    setState(thermostat, oldThermostat)
                }
                log('Variablenwert: ' + oldThermostat);
            });
            
            1 Reply Last reply Reply Quote 0
            • Dominik F.
              Dominik F. @Guest last edited by

              @tmartin

              Hier mal ein Skript was ich längere Zeit genutzt habe, vielleicht hilft es dir ja. Habe da einen Timer eingebaut, weil ich erst wollte, dass die Heizung runter geht, wenn das Fenster 10 min offen ist.
              Wenn du die Variablen anpasst und eventuell den Timer, dann sollte es funktionieren.

              //Variablen Wohnzimmer
              
              const id_EG_Wohnzimmer = 'javascript.0.Heizung.Fensterauswertung.EG_Wohnzimmer.IsOpen'/*Fenster offen?*/
              const id_EG_W_Thermostat_Manu = 'hm-rpc.0.MEQ0236893.2.MANU_MODE'/*Wandthermostat Wohnzimmer MANU MODE*/
              const id_EG_W_Thermostat_Auto = 'hm-rpc.0.MEQ0236893.2.AUTO_MODE'/*Wandthermostat Wohnzimmer AUTO MODE*/
              
              var EG_Wohnzimmer = getState(id_EG_Wohnzimmer).val;
              
              
              //Variablen Küche
              
              const id_EG_Küche = 'javascript.0.Heizung.Fensterauswertung.EG_Küche.IsOpen'/*Fenster offen?*/
              const id_EG_K_Thermostat_Manu = 'hm-rpc.0.NEQ1802941.2.MANU_MODE'/*Wandthermostat Küche MANU MODE*/
              const id_EG_K_Thermostat_Auto = 'hm-rpc.0.NEQ1802941.2.AUTO_MODE'/*Wandthermostat Küche AUTO MODE*/
              
              var EG_Küche = getState(id_EG_Küche).val;
              
              //Ab hier eigentliches Script
              var timer = null;
              
              //Wohnzimmer 
              function Wmode() {
                  if (EG_Wohnzimmer) {
                      timer = setTimeout(function() {
                          // Hier nach 5 Minuten "Nicht Erreichbarkeit" Aktion ausführen
                          setState(id_EG_W_Thermostat_Manu, 17);
                          log('Fenster im Wohnzimmer auf - Heizung ist aus');
                      },600000);  // 10 Minuten
                  } 
                  else {
                      if(timer) clearTimeout(timer); 
                      setState(id_EG_W_Thermostat_Auto, true);
                      log('Fenster im Wohnzimmer zu - Heizung ist an');
                  }   
              };
              
              //Küche
              function Kmode() {
                  if (EG_Küche) {
                      timer = setTimeout(function() {
                          // Hier nach 5 Minuten "Nicht Erreichbarkeit" Aktion ausführen
                          setState(id_EG_K_Thermostat_Manu, 17);
                          log('Fenster in der Küche auf - Heizung ist aus');
                      },600000);  // 10 Minuten
                  } 
                  else {
                      if(timer) clearTimeout(timer); 
                      setState(id_EG_K_Thermostat_Auto, true);
                      log('Fenster in der Küche zu - Heizung ist an');
                  }   
              };
              
              Wmode(); // Skripstart Wohnzimmer
               
              on({id: id_EG_Wohnzimmer, change: "ne"}, function(obj) {
                  EG_Wohnzimmer = obj.state.val;
                  Wmode();
              });
              
              Kmode(); // Skripstart Küche
               
              on({id: id_EG_Küche, change: "ne"}, function(obj) {
                  EG_Küche = obj.state.val;
                  Kmode();
              });
              
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              781
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              javascript
              3
              5
              180
              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