NEWS
[gelöst]Einschalten mit Nachlauf
-
timer = getState(idDauer).val * 60 * 1000; // Dauer in Stunden mal 60 Minuten mal 1000 Milisekunden setTimeout( fAusschalten, timer); } else { clearTimeout(timer); timer = null; } ```` `
Das funktioniert so nicht, denn die Variable timer ist ein Timer-Objekt und keine Zeit. Korrektur:
var ontime = getState(idDauer).val * 3600000; // Dauer in Stunden mal 3600 Sekunden mal 1000 Milisekunden timer = setTimeout(fAusschalten, ontime); } else { clearTimeout(timer); timer = null; }
-
grml
irgendwann lerne ich das noch. danke für die Korrektur; ich übernehme sie gleich mal oben ins Skript
-
Vielen Dank hat funktioniert!!
-
Dann setze bitte im ersten Posting das Topic auf [gelöst].
Danke
-
muss jetzt doch nochmal nachhaken. habe das script jetzt nochmal getestet. ich kann einschalten mit "nachlaufe" zwischen 1 und 24 h . nur ich kann nicht vorzeitig abbrechen wenn ich den Schalter wieder auf aus stelle. Ich hätte war eine Idee mit "und-oder" Geschichten aber ich kann kein javascript maximal blocky.
-
Da es sich bei der Frage um Homematic handelt, gibt es noch einen anderen Weg:
setState('hm-rpc.0.xEQxxxxxxx.1.ON_TIME', 300, function() { setStateDelayed("hm-rpc.0.xEQxxxxxxx.1.STATE", true, 100); });
Als erstes wird die Einschaltdauer in Sekunden übermittelt, und im Callback dann der Aktor eingeschaltet.
Hat den Vorteil, dass sich der Aktor auch abschaltet wenn nach dem Einschalten kein Funkkontakt mehr bestehen würde.
-
Setze bitte bei der else Anweisung statt des "timer = null" ein fAusschalten (); ein
Habs oben angepasst
-
Jetzt ists perfekt, danke.
-
Hallo,
jetzt habe auch mal eine Frage zum obigen Script. ich möchte gerne 2 Aktoren schalten.
Reicht es wenn ich die Zeile
"var idAktor = XXXXXXXXXXXXXXXXXX ;"
kopiere und darunter in einer neuen Zeile einfüge.
also z.B.:
var idAktor = "hm-rpc.0.OEQ0098506.2.STATE"/Poolpumpe.STATE/ ;
var idAktor = "hm-rpc.0.OEQ0098506.3.STATE"/Clorinator.STATE/ ;
Oder wie muss ich da vorgehen. Ich hatte es in der Kombination versucht doch nur die untere Zeile wird "geschaltet".
Über ein wenig Hilfe wäre ich dankbar.
-
Ist zwar schon länger her aber falls jemand hier mal drüber stolpert:
Klar wird nur der zweite Aktor geschaltet - du überschriebst ja auch die Variable mit dem zweiten Statement:
var idAktor = "hm-rpc.0.OEQ0098506.2.STATE"/Poolpumpe.STATE/ ;
var idAktor = "hm-rpc.0.OEQ0098506.3.STATE"/Clorinator.STATE/ ;
Du musst dem zweiten Aktor dann schon eine eigene Variable spendieren:
var idAktor1 = "hm-rpc.0.OEQ0098506.2.STATE"/Poolpumpe.STATE/ ;
var idAktor2 = "hm-rpc.0.OEQ0098506.3.STATE"/Clorinator.STATE/ ;