NEWS
[Gelöst] Fensterkontakt + Thermostat: Wie Verzögerung einbauen
-
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?
-
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 -
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!!
-
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 -
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'); });