NEWS
Best practice: Verzögert schalten
-
in den Programmen auf der CCU konnte man Programme mit einer Verzögerung ausführen. Ich habe das genutzt um z. B. den Nachtmodus zu aktivieren.
Da wurden dann Lichter mit einer Verzögerung von 10 - 20 Minuten gestaffelt ausgeschaltet.
Da ich die Programme von der CCU komplett durch Scripte ersetzen möchte jetzt die Frage an die Allgemeinheit.
Wie macht man so etwas am besten in einem Script. Für kurze Verzögerungen kann man sicher den setTimeout nutzen. Aber was macht man bei Verzögerungen von bis zu 20 Minuten oder mehr?
Hat jemand einen Tipp für mich?
-
setTimeout ist auch für 20 Minuten sehr geeignet.
setTimeout(function () { log('Timeout of 20 minutes'); }, 20 * 60000);
-
hey,
frage, warum führt er die Funktion nicht verzögert aus? was ist falsch?
Danke für die Hilfe im Voraus
var temp_switch = 2.5; //über welcher Differenztemperatur die Sonne scheint var timer_ein; var timer_aus; function sonne(dp) { if(dp=="ein") log("-------------------------------SONNE SCHEINT - Timer: ", "info"); else log("-------------------------------SONNE SCHEINT NICHT", "info"); } on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, valGt: temp_switch}, function() { log("-------------------------------SONNE SCHEINT HAT GETRIGGERT - Timer: ", "info"); setTimeout(sonne("ein"), 30000); }); on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, valLe: temp_switch}, function() { log("-------------------------------SONNE SCHEINT NICHT HAT GETRIGGERT", "info"); setTimeout(sonne("ein"), 90000); });
-
hey,
frage, warum führt er die Funktion nicht verzögert aus? was ist falsch?
Danke für die Hilfe im Voraus
var temp_switch = 2.5; //über welcher Differenztemperatur die Sonne scheint var timer_ein; var timer_aus; function sonne(dp) { if(dp=="ein") log("-------------------------------SONNE SCHEINT - Timer: ", "info"); else log("-------------------------------SONNE SCHEINT NICHT", "info"); } on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, valGt: temp_switch}, function() { log("-------------------------------SONNE SCHEINT HAT GETRIGGERT - Timer: ", "info"); setTimeout(sonne("ein"), 30000); }); on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, valLe: temp_switch}, function() { log("-------------------------------SONNE SCHEINT NICHT HAT GETRIGGERT", "info"); setTimeout(sonne("ein"), 90000); }); ```` `
setTimeout(sonne, 30000, "ein");
oder
setTimeout(function () { sonne("ein"); }, 30000);
-
Für deinen Einsatzzweck vielleicht nicht geeignet, aber für die, die diesen Beitrag noch mal finden mögen:
Für die, die Geräte zeitversetzt starten wollen, gibt es auch die imho sehr elegante setStateDelayed Funktion. Ich benutze die sehr gerne in Verbindung mit einer Zufallszahl, um die Funkhygiene bei meiner Homematic zu wahren. So fahren meine Rollläden alle zeitlich versetzt in einem Zeitraum von 30 Sekunden herunter.
setStateDelayed("hm-rpc.0.MEQ0516226.1.LEVEL"/*Rollladen OG 3 Arbeitszimmer Ost.LEVEL*/, 100, Math.floor(Math.random()*30000));
-
die Random Funktion ist gut zu kennen, danke.
Bei mir hat jeder Rolladen seine eigene Verzögerungszeit fix zugewiesen