Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst]Fensterkontakt steuert Heizung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    918

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst]Fensterkontakt steuert Heizung

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
6 Beiträge 2 Kommentatoren 419 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Dominik F.D Offline
    Dominik F.D Offline
    Dominik F.
    schrieb am zuletzt editiert von Dominik F.
    #1

    Hallo zusammen,

    ich habe versucht ein Skript zu schreiben, dass wenn einer der beiden Fensterkontakte auf true geht und für mindestens 5 Minuten so bleibt, das Thermostat der Heizung auf Manuell geht und auf 17 Grad. Sind beide Fensterkontakte auf false, soll die Heizung auf Auto gestellt werden.
    Nur leider macht das Skript gar nix -.-
    Kann mir jemand helfen?

    var id_EG_Kamin_Links = 'zigbee.0.00158d0003e72ce7.opened'/*EG Kaminzimmer Fenster Links Is open*/
    var id_EG_Kamin_Rechts = 'zigbee.0.00158d00034d695f.opened'/*EG Kaminzimmer Fenster Rechts Is open*/
    var id_EG_W_Thermostat_Manu = 'hm-rpc.0.MEQ0236893.2.MANU_MODE'/*Wandthermostat Wohnzimmer MANU MODE*/
    var id_EG_W_Thermostat_Auto = 'hm-rpc.0.MEQ0236893.2.AUTO_MODE'/*Wandthermostat Wohnzimmer AUTO MODE*/
    
    var timer = null;
     
    on({id: 'id_EG_Kamin_Links' || 'id_EG_Kamin_Rechts', change: "ne"}, function(obj){
        if (obj.state.val == true) {
            if(timer) clearTimeout(timer); 
            else {   
                timer = setTimeout(function() {
                // Hier nach 5 Minuten "Nicht Erreichbarkeit" Aktion ausführen
                setState('id_EG_W_Thermostat_Manu', 17);
                log('Fenster auf - Heizung aus');
                },3000000);  // 5 Minuten
            }
        }        
        else {
            setState('id_EG_W_Thermostat_Auto', true);
            log('Fenster zu - Heizung an');
        }   
    });
    
    
    paul53P 1 Antwort Letzte Antwort
    0
    • Dominik F.D Dominik F.

      Hallo zusammen,

      ich habe versucht ein Skript zu schreiben, dass wenn einer der beiden Fensterkontakte auf true geht und für mindestens 5 Minuten so bleibt, das Thermostat der Heizung auf Manuell geht und auf 17 Grad. Sind beide Fensterkontakte auf false, soll die Heizung auf Auto gestellt werden.
      Nur leider macht das Skript gar nix -.-
      Kann mir jemand helfen?

      var id_EG_Kamin_Links = 'zigbee.0.00158d0003e72ce7.opened'/*EG Kaminzimmer Fenster Links Is open*/
      var id_EG_Kamin_Rechts = 'zigbee.0.00158d00034d695f.opened'/*EG Kaminzimmer Fenster Rechts Is open*/
      var id_EG_W_Thermostat_Manu = 'hm-rpc.0.MEQ0236893.2.MANU_MODE'/*Wandthermostat Wohnzimmer MANU MODE*/
      var id_EG_W_Thermostat_Auto = 'hm-rpc.0.MEQ0236893.2.AUTO_MODE'/*Wandthermostat Wohnzimmer AUTO MODE*/
      
      var timer = null;
       
      on({id: 'id_EG_Kamin_Links' || 'id_EG_Kamin_Rechts', change: "ne"}, function(obj){
          if (obj.state.val == true) {
              if(timer) clearTimeout(timer); 
              else {   
                  timer = setTimeout(function() {
                  // Hier nach 5 Minuten "Nicht Erreichbarkeit" Aktion ausführen
                  setState('id_EG_W_Thermostat_Manu', 17);
                  log('Fenster auf - Heizung aus');
                  },3000000);  // 5 Minuten
              }
          }        
          else {
              setState('id_EG_W_Thermostat_Auto', true);
              log('Fenster zu - Heizung an');
          }   
      });
      
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @Dominik-F
      Eine Oder-Verknüpfung der IDs zum Triggern ist so nicht möglich. Man kann stattdessen ein Array verwenden.

      on({id: [id_EG_Kamin_Links,id_EG_Kamin_Rechts], change: "ne"}, function(obj) {
      

      Außerdem setzt man Variablenbezeichner nicht in Hochkommata. 3000000 ms sind 50 Minuten.
      Ohne eine Oder-Verknüpfung der Werte wird verzögert auf AUTO_MODE geschaltet, wenn ein Fenster geschlossen wird, das andere Fenster aber offen bleibt.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      Dominik F.D 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @Dominik-F
        Eine Oder-Verknüpfung der IDs zum Triggern ist so nicht möglich. Man kann stattdessen ein Array verwenden.

        on({id: [id_EG_Kamin_Links,id_EG_Kamin_Rechts], change: "ne"}, function(obj) {
        

        Außerdem setzt man Variablenbezeichner nicht in Hochkommata. 3000000 ms sind 50 Minuten.
        Ohne eine Oder-Verknüpfung der Werte wird verzögert auf AUTO_MODE geschaltet, wenn ein Fenster geschlossen wird, das andere Fenster aber offen bleibt.

        Dominik F.D Offline
        Dominik F.D Offline
        Dominik F.
        schrieb am zuletzt editiert von
        #3

        @paul53

        ich bin mir nicht sicher ob ich deine Tips zu 100% richtig umgesetzt oder verstanden habe. Hier das veränderte Skript:

        var id_EG_Kamin_Links = 'zigbee.0.00158d0003e72ce7.opened'/*EG Kaminzimmer Fenster Links Is open*/
        var id_EG_Kamin_Rechts = 'zigbee.0.00158d00034d695f.opened'/*EG Kaminzimmer Fenster Rechts Is open*/
        var id_EG_W_Thermostat_Manu = 'hm-rpc.0.MEQ0236893.2.MANU_MODE'/*Wandthermostat Wohnzimmer MANU MODE*/
        var id_EG_W_Thermostat_Auto = 'hm-rpc.0.MEQ0236893.2.AUTO_MODE'/*Wandthermostat Wohnzimmer AUTO MODE*/
        
        var EG_Kamin_Links        = getState(id_EG_Kamin_Links).val;
        var EG_Kamin_Rechts       = getState(id_EG_Kamin_Rechts).val;
        
        var timer = null;
         
        on({id: [id_EG_Kamin_Links,id_EG_Kamin_Rechts], change: "ne"}, function(obj) {
            if (EG_Kamin_Links||EG_Kamin_Rechts == true) {
                if(timer) clearTimeout(timer); 
                else {   
                    timer = setTimeout(function() {
                    // Hier nach 5 Minuten "Nicht Erreichbarkeit" Aktion ausführen
                    setState(id_EG_W_Thermostat_Manu, 17);
                    log('Fenster auf - Heizung aus');
                    },300000);  // 5 Minuten
                }
            }        
            else {
                setState(id_EG_W_Thermostat_Auto, true);
                log('Fenster zu - Heizung an');
            }   
        });
        
        
        paul53P 1 Antwort Letzte Antwort
        0
        • Dominik F.D Dominik F.

          @paul53

          ich bin mir nicht sicher ob ich deine Tips zu 100% richtig umgesetzt oder verstanden habe. Hier das veränderte Skript:

          var id_EG_Kamin_Links = 'zigbee.0.00158d0003e72ce7.opened'/*EG Kaminzimmer Fenster Links Is open*/
          var id_EG_Kamin_Rechts = 'zigbee.0.00158d00034d695f.opened'/*EG Kaminzimmer Fenster Rechts Is open*/
          var id_EG_W_Thermostat_Manu = 'hm-rpc.0.MEQ0236893.2.MANU_MODE'/*Wandthermostat Wohnzimmer MANU MODE*/
          var id_EG_W_Thermostat_Auto = 'hm-rpc.0.MEQ0236893.2.AUTO_MODE'/*Wandthermostat Wohnzimmer AUTO MODE*/
          
          var EG_Kamin_Links        = getState(id_EG_Kamin_Links).val;
          var EG_Kamin_Rechts       = getState(id_EG_Kamin_Rechts).val;
          
          var timer = null;
           
          on({id: [id_EG_Kamin_Links,id_EG_Kamin_Rechts], change: "ne"}, function(obj) {
              if (EG_Kamin_Links||EG_Kamin_Rechts == true) {
                  if(timer) clearTimeout(timer); 
                  else {   
                      timer = setTimeout(function() {
                      // Hier nach 5 Minuten "Nicht Erreichbarkeit" Aktion ausführen
                      setState(id_EG_W_Thermostat_Manu, 17);
                      log('Fenster auf - Heizung aus');
                      },300000);  // 5 Minuten
                  }
              }        
              else {
                  setState(id_EG_W_Thermostat_Auto, true);
                  log('Fenster zu - Heizung an');
              }   
          });
          
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @Dominik-F sagte:

          Hier das veränderte Skript:

          Die Variablen EG_Kamin_Links und EG_Kamin_rechts werden nur bei Scriptstart gesetzt und nicht aktualisiert. Verwende besser eine Funktion

          var id_EG_Kamin_Links = 'zigbee.0.00158d0003e72ce7.opened'/*EG Kaminzimmer Fenster Links Is open*/
          var id_EG_Kamin_Rechts = 'zigbee.0.00158d00034d695f.opened'/*EG Kaminzimmer Fenster Rechts Is open*/
          var id_EG_W_Thermostat_Manu = 'hm-rpc.0.MEQ0236893.2.MANU_MODE'/*Wandthermostat Wohnzimmer MANU MODE*/
          var id_EG_W_Thermostat_Auto = 'hm-rpc.0.MEQ0236893.2.AUTO_MODE'/*Wandthermostat Wohnzimmer AUTO MODE*/
          
          var EG_Kamin_Links        = getState(id_EG_Kamin_Links).val;
          var EG_Kamin_Rechts       = getState(id_EG_Kamin_Rechts).val;
          var timer = null;
           
          function mode() {
              if (EG_Kamin_Links || EG_Kamin_Rechts) {
                  timer = setTimeout(function() {
                  // Hier nach 5 Minuten "Nicht Erreichbarkeit" Aktion ausführen
                      setState(id_EG_W_Thermostat_Manu, 17);
                      log('Fenster auf - Heizung aus');
                  },300000);  // 5 Minuten
              } else {
                  if(timer) clearTimeout(timer); 
                  setState(id_EG_W_Thermostat_Auto, true);
                  log('Fenster zu - Heizung an');
              }   
          }
          
          mode(); // Skripstart
          
          on({id: id_EG_Kamin_Links, change: "ne"}, function(obj) {
              EG_Kamin_Links = obj.state.val;
              mode();
          });
          on({id: id_EG_Kamin_Rechts, change: "ne"}, function(obj) {
              EG_Kamin_Rechts = obj.state.val;
              mode();
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          Dominik F.D 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @Dominik-F sagte:

            Hier das veränderte Skript:

            Die Variablen EG_Kamin_Links und EG_Kamin_rechts werden nur bei Scriptstart gesetzt und nicht aktualisiert. Verwende besser eine Funktion

            var id_EG_Kamin_Links = 'zigbee.0.00158d0003e72ce7.opened'/*EG Kaminzimmer Fenster Links Is open*/
            var id_EG_Kamin_Rechts = 'zigbee.0.00158d00034d695f.opened'/*EG Kaminzimmer Fenster Rechts Is open*/
            var id_EG_W_Thermostat_Manu = 'hm-rpc.0.MEQ0236893.2.MANU_MODE'/*Wandthermostat Wohnzimmer MANU MODE*/
            var id_EG_W_Thermostat_Auto = 'hm-rpc.0.MEQ0236893.2.AUTO_MODE'/*Wandthermostat Wohnzimmer AUTO MODE*/
            
            var EG_Kamin_Links        = getState(id_EG_Kamin_Links).val;
            var EG_Kamin_Rechts       = getState(id_EG_Kamin_Rechts).val;
            var timer = null;
             
            function mode() {
                if (EG_Kamin_Links || EG_Kamin_Rechts) {
                    timer = setTimeout(function() {
                    // Hier nach 5 Minuten "Nicht Erreichbarkeit" Aktion ausführen
                        setState(id_EG_W_Thermostat_Manu, 17);
                        log('Fenster auf - Heizung aus');
                    },300000);  // 5 Minuten
                } else {
                    if(timer) clearTimeout(timer); 
                    setState(id_EG_W_Thermostat_Auto, true);
                    log('Fenster zu - Heizung an');
                }   
            }
            
            mode(); // Skripstart
            
            on({id: id_EG_Kamin_Links, change: "ne"}, function(obj) {
                EG_Kamin_Links = obj.state.val;
                mode();
            });
            on({id: id_EG_Kamin_Rechts, change: "ne"}, function(obj) {
                EG_Kamin_Rechts = obj.state.val;
                mode();
            });
            
            Dominik F.D Offline
            Dominik F.D Offline
            Dominik F.
            schrieb am zuletzt editiert von Dominik F.
            #5

            @paul53

            Vielen Dank für deine Hilfe und deine Erklärung. Hab jetzt wieder ein Stück mehr verstanden und komme dem näher so ein Skript komplett richtig selber schreiben zu können.

            Eine Frage habe ich noch.....ist das so richtig wie ich die Variablen gesetzt habe oder habe ich vielleicht sogar viel zu viele gesetzt oder welche unnötig?

            paul53P 1 Antwort Letzte Antwort
            0
            • Dominik F.D Dominik F.

              @paul53

              Vielen Dank für deine Hilfe und deine Erklärung. Hab jetzt wieder ein Stück mehr verstanden und komme dem näher so ein Skript komplett richtig selber schreiben zu können.

              Eine Frage habe ich noch.....ist das so richtig wie ich die Variablen gesetzt habe oder habe ich vielleicht sogar viel zu viele gesetzt oder welche unnötig?

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @Dominik-F sagte:

              habe ich vielleicht sogar viel zu viele gesetzt oder welche unnötig?

              Es gibt keine unnötige Variable. Die 4 IDs am Anfang sind Konstanten, man kann sie also auch mit const deklarieren.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              745

              Online

              32.6k

              Benutzer

              82.2k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe