NEWS
[gelöst] Frage zu Intervall als Wartezeit
-
Nein!
Wen du innerhalb des timeout einen Wert (zB timeout 30sec, If Wert ist xxx) Dan prüft er nach 30 Sekunden diesen Wert.
Sent from my iPhone using Tapatalk
-
Dan prüft er nach 30 Sekunden diesen Wert. `
Das bedeutet nicht, dass zwischenzeitlich der Wert überschritten wurde.
@daniello:erst wenn der Zustand 30 Sekunden hält etwas tun. `
Bei Wertüberschreitung (else): clearTimeout(timer). Beispiel:var timer = null; on(idPower, function(dp) { if(dp.state.val < 5) { timer = setTimeout(function() { // etwas tun }, 30000); // 30 s } else if(timer) clearTimeout(timer); }); -
Ich würde den 2ten falls im timeout Weck lassen und im ersten falls einen Stop timeout einbauen.
Ändert sich der wert Dan innerhalb der 30 Sekunden wieder > xx stopst du damit den Timer und nichts wird ausgeführt
Sent from my iPhone using Tapatalk
-
Warum stoppe ich was, dass durch die falls Bedingung gar nicht gestartet wurde `
Der Timer wird gestoppt, wenn die Falls-Bedingung erfüllt war, aber innerhalb der Verzögerungszeit sie nicht erfüllt bleibt. Beispiel:Waschmaschine läuft –> Leistung 3 W (Start Timer) --> nach 10 s Leistung 50 W (Stopp Timer) --> nach 20 s Leistung wieder 3 W (Start Timer) --> nach 40 s Leistung 50 W (Stopp Timer) --> nach 50 s 3 W (Start Timer) --> nach 80 s Wachmaschine fertig.
Ohne den Stopp Timer würden nach 20 s und 50 s weitere Timer gestartet, der erste Timer würde weiterlaufen und nach 30 s fertig melden, der zweite Timer nach 50 s und der dritte Timer nach 80 s.
-
Zwei Dinge sind blöd .. zum einen steht die Waschmaschine still trotzdem "ist sie fertig" .. kommt grad so alle paar Minuten. Kein einziger Val ist über 0.3. Und die W_kWh und W_Euro sind NaN (Not a Number) .. müssten sie doch aber sein.
17:36:39.598 [info] javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970444.2.POWER, timerId=0) => {"val":0.25,"ack":true,"ts":1538235399594,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538235279350} 17:36:39.599 [info] javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970444.2.POWER, timerId=0) => {"val":0.25,"ack":true,"ts":1538235399594,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538235279350} 17:36:39.599 [info] javascript.0 script.js.common.waschmaschine_trockner: setTimeout(ms=30000) 17:37:06.963 [info] javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970432.2.POWER, timerId=0) => {"val":0.28,"ack":true,"ts":1538235426957,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538235426957} 17:37:06.964 [info] javascript.0 script.js.common.waschmaschine_trockner: setTimeout(ms=30000) 17:37:09.599 [info] javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970444.2.POWER, timerId=0) => {"val":0.25,"ack":true,"ts":1538235399594,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538235279350} 17:37:09.599 [info] javascript.0 script.js.common.waschmaschine_trockner: setForeignState(id=.eigene.wäschetrockner, state=false) 17:37:36.965 [info] javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970432.2.ENERGY_COUNTER, timerId=0) => {"val":2359.5,"ack":true,"ts":1538235426950,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538234215211} 17:37:36.965 [info] javascript.0 script.js.common.waschmaschine_trockner: sendTo(adapter=email, cmd=send, msg={"text":"Verbrauch heute: NaN kWh. In Euro: NaN","to":"xx@xx.com","subject":"Waschmaschine heute"}) 17:37:36.965 [info] javascript.0 script.js.common.waschmaschine_trockner: setForeignState(id=alexa2.0.Echo-Devices.G090LF107207028R.Commands.speak, state="Die Waschmaschine ist fertig") -
kommt grad so alle paar Minuten. Kein einziger Val ist über 0.3. `
Aber auch nicht konstant. Deshalb die Abfrage erweitern auffalls Wert < 4 und vorheriger Wert >= 4
EDIT: falls Wert < 4 falls vorheriger Wert >= 4
Und die W_kWh und W_Euro sind NaN (Not a Number) `
Die Variable Wstart wurde sicherlich noch nicht initialisiert, da der sonst-Zweig noch nie erreicht wurde. Initialisiere die Variable <u>zusätzlich</u> außerhalb des Triggerblocks:setze Wstart auf Wert vom Objekt Waschmaschine:2.ENERGY_COUNTER
-
Warum stoppe ich was, dass durch die falls Bedingung gar nicht gestartet wurde `
Der Timer wird gestoppt, wenn die Falls-Bedingung erfüllt war, aber innerhalb der Verzögerungszeit sie nicht erfüllt bleibt. Beispiel:Waschmaschine läuft –> Leistung 3 W (Start Timer) --> nach 10 s Leistung 50 W (Stopp Timer) --> nach 20 s Leistung wieder 3 W (Start Timer) --> nach 40 s Leistung 50 W (Stopp Timer) --> nach 50 s 3 W (Start Timer) --> nach 80 s Wachmaschine fertig.
Ohne den Stopp Timer würden nach 20 s und 50 s weitere Timer gestartet, der erste Timer würde weiterlaufen und nach 30 s fertig melden, der zweite Timer nach 50 s und der dritte Timer nach 80 s. `
OK, jetzt weiß ich auch warum sich einige meiner Blocklys komisch verhalten, eigentlich logisch.


