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?
-
@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.
-
@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); });
-
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(); });