NEWS
Frage: Verzögerung mit Timeout
-
Hallo,
ich tue mich unheimlich schwer mit der Verwendung von Timeouts, daher hier einmal ein Beispiel für eine Steckdose, die ich bei Überschuss mit Verzögerung schalten möchte. Der Triggerwert ändert sich alle 10 Sekunden. Ist das ganze so korrekt verbaut?<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="%K92xru3ntyl_mkO=0}|" x="138" y="-262"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="QtmUbpCp%4g,I-U*QV/3"> <field name="oid">smartmeter.0.1-0:16_7_0__255.value</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="~liB{ho7G`{#WxYVTMeN"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_multi_and" id="6XL[C^+/rGQ3SbzfE|+z"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="4"></mutation> <value name="AND0"> <block type="logic_negate" id="T=J#4)5uFuk;/tc0H]}T"> <value name="BOOL"> <block type="timeouts_gettimeout" id=":g@e%TV1y)e^uU)ZYZW+"> <field name="NAME">timeout-ein</field> </block> </value> </block> </value> <value name="AND1"> <block type="logic_compare" id="$OLd^Yy$}*ZSRObp)bg7"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="%(k}jL_9al#gIGkar[$3"> <field name="ATTR">val</field> <field name="OID">smartmeter.0.1-0:16_7_0__255.value</field> </block> </value> <value name="B"> <block type="math_number" id="K_0~G={DPQJZLg(Fin8O"> <field name="NUM">-100</field> </block> </value> </block> </value> <value name="AND2"> <block type="time_compare" id="4dj*yMM!=OC7heaj,W1G"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">8:00</field> <field name="END_TIME">18:30</field> </block> </value> <value name="AND3"> <block type="logic_compare" id="k/-V99kd:R(?;E@*KCCk"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="QZ4/TV[uCl0hZnyI`$xS"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Auflader-03.POWER</field> </block> </value> <value name="B"> <block type="logic_boolean" id="afDB#r4Jf-FfWm3uWoQ."> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_cleartimeout" id="FEX|*~v-oVUqr+_BjB:("> <field name="NAME">timeout-ein</field> <next> <block type="timeouts_settimeout" id="9MJeS,]ZSh`+0i4B$oag"> <field name="NAME">timeout-ein</field> <field name="DELAY">35</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="tehh_3vIxn%5QFksuA+,"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.Auflader-03.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="Wzd2ym(pHHKa.LM,}[-t"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="%BIdxq:MD.aC;osSej*^"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="AFh@,.a5P}5Yt_K}f+G3"> <field name="TEXT">eingeschaltet</field> </shadow> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="Bi,M;`^DhR00K*(r*3{O"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="@F^2~?*5(7bFwi_CQq~}"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="OLK+nY?8}7NL{Ge^whcA"> <field name="ATTR">val</field> <field name="OID">smartmeter.0.1-0:16_7_0__255.value</field> </block> </value> <value name="B"> <block type="math_number" id="wyzQ+0MZ0f2n=1xh!!rv"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="V]wL$qe3Tw3K8$4iMTtn"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="||+4@8*{e8=?wVB0N)8T"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Auflader-03.POWER</field> </block> </value> <value name="B"> <block type="logic_boolean" id="/Q#;KJXZTA]2C+X67UKA"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_cleartimeout" id="wkuLE#jnoLSca-WEJdw3"> <field name="NAME">timeout-ein</field> <next> <block type="control" id="k/J^2|s/nU)Kr+~y#YXH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.Auflader-03.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="#Ww/C]Id(T{M$8@j=fS3"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="debug" id="uDf$|{*Tnh~(FhVWFm;s"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="t8,7E;}bn]dvuFY3[%*z"> <field name="TEXT">ausgeschaltet</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block>
Danke!
Gruß surfer
-
@surfer09 sagte: bei Überschuss mit Verzögerung schalten
Dafür gibt es im Forum bereits etliche Beispiele. Prinzip:
Die Hysterese muss etwas größer sein, als die Leistungsaufnahme des zu schaltenden Verbrauchers.
-
@paul53 : Ich hatte mir auch einige Beispiele schon angesehen und es versucht zu verstehen. Deswegen habe ich meine Variante so nachgebaut. Wäre der Aufbau denn so korrekt?
-
@surfer09 sagte in Frage: Verzögerung mit Timeout:
Wäre der Aufbau denn so korrekt?
Prinzipiell ja. Ob das alles so geht wie du das willst hängt allerdings von den von @paul53 erwähnten Werten für die Hysterese ab.
-
@asgothian Ja okay, das steht dann noch auf einem anderen Blatt. Mir geht es jetzt vordergründig um den Blockly Code.
-
@surfer09 sagte: Wäre der Aufbau denn so korrekt?
Im Gegensatz zu der von mir gezeigten Lösung wird auch eingeschaltet, wenn nach kurzer Überschreitung des Ein-Grenzwertes der Überschuss in den Hysterese-Bereich zurück fällt. Folge: Es wird wahrscheinlich sofort wieder ausgeschaltet.
-
@paul53 Verstehe mich bitte nicht falsch. Deine Lösung funktioniert mit Sicherheit sehr gut. Nur ich möchte verstehen, was dort abläuft. Deswegen habe ich das Ganze in meinem „Programmierstil“ nachgebaut. Ich möchte ungern Dinge kopieren und nachher keinen Plan davon haben, wie es funktioniert.
-
@surfer09 sagte in Frage: Verzögerung mit Timeout:
@paul53 Verstehe mich bitte nicht falsch. Deine Lösung funktioniert mit Sicherheit sehr gut. Nur ich möchte verstehen, was dort abläuft. Deswegen habe ich das Ganze in meinem „Programmierstil“ nachgebaut. Ich möchte ungern Dinge kopieren und nachher keinen Plan davon haben, wie es funktioniert.
Das ist eine gute Einstellung, aber @paul53 schreibt doch was du eben nicht mit umgesetzt hast.
Bei deiner Adaption@paul53 sagte in Frage: Verzögerung mit Timeout:
wird auch eingeschaltet, wenn nach kurzer Überschreitung des Ein-Grenzwertes der Überschuss in den Hysterese-Bereich zurück fällt. Folge: Es wird wahrscheinlich sofort wieder ausgeschaltet.