NEWS
Temperatur vom Thermostat runter, wenn Fenster auf
-
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?
-
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?
@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) } }); -
@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) } });@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 Das habe ich auch bereits probiert. Jedoch ist es da so, dass der gleiche Wert gesetzt wird, wie wenn das Fenster aufgemacht wird.
@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); }); -
@paul53 Das habe ich auch bereits probiert. Jedoch ist es da so, dass der gleiche Wert gesetzt wird, wie wenn das Fenster aufgemacht wird.
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(); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden