NEWS
Blockly Verzögerung Verständnisfrage *gelöst*
-
Hallo zusammen,
ich habe für meinen Heizstab ein Blockly Skrip erstellt, welches bei Überschuss den Heizstab einschaltet. Nun möchte ich natürlich nicht, dass er bei Wolken / Sonne Mix ständig ein/ausschaltet. Daher habe ich einen Timeout eingebaut - nur irgendwie hat das Einschalten des Heizstabes nicht funktioniert.Der Wert im Trigger wird alle 10 Sekunden abgfragt (Stromzähler). Ist es so, dass ich mit dem Verzögerungswert (22 Sekunden) unter dem Abfragewert (10 Sekunden) bleiben muss?
Mein Erklärungsversuch: Triggerwert ändert sich, Skript läuft los, muss jetzt 22 Sekunden warten, bei 10 Sekunden ändert sich der Triggerwert erneut, Skript läuft wieder von vorne los, stoppt den Timeout, wartet 22 Sekunden, somit kann der Heizstab gar nicht geschaltet werden.
<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="Bi(b0~M*#7vBa*4Fjm_}" x="-87.27359999999993" y="-162.60063999999994"> <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=",PY@d;1NRAn=wBiN;I}i"> <field name="oid">smartmeter.0.1-0:16_7_0__255.value</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id=".A2Q7~K}2s^e1$AMvEQW"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="@84EiG3@1d3*Nu.+@p_N"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="eL1/f%opsk-VxtwYWhbI"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="54}w6][Vvlz2B`HjhO?^"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="1=6l-TNTb$n@.7:;EN6Q"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="m6RS{rpyYQf.8*B_F#4A"> <field name="NUM">-2050</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="0KLd:hA|A|AU1Q6WtfFs"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="*ujU{*[H!yQU-G+0u0)T"> <field name="ATTR">val</field> <field name="OID">shelly.0.shellyplus1pm#e86beae68154#1.Relay0.Switch</field> </block> </value> <value name="B"> <block type="logic_boolean" id="VTJt_L7QN2{e}VpZ6|BJ"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="time_compare_ex" id="$]0EoC)?q@$mLMAe{B)L"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="Ide=Ba^dJ}rlWv_6:w`;"> <field name="TEXT">09:00</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="eagL~PIJ90Wy0YRvhl*@"> <field name="TEXT">20:30</field> </shadow> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_cleartimeout" id=",eKCW?*-M^Z.Q3tJJeIS"> <field name="NAME"></field> <next> <block type="timeouts_settimeout" id="hq{w~@GSM?q..=;=BNor"> <field name="NAME">timeout</field> <field name="DELAY">22</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="#MOLgyWt_Z#^uGRN_@~#"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.shellyplus1pm#e86beae68154#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="QJTCt4$YJ*]2`Ysyxk#A"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="#xf_Vi?T(!cCL2xRg_N|"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="`d{*cC/pD|-#Sa/T`KJ1"> <field name="TEXT">Überschuss - Heizstab eingeschaltet</field> </shadow> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="`MfAHZ@G)q]69NgUcdh!"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="CV2^/IHJ^:KS-a=N8FS~"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="$JowK/zobJR8J@RoQ%o}"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="oL^u-AN7|wO^@{_:ECrJ"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="m.W;2Q3hU2AVD-y!Z*;U"> <field name="NUM">-10</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="69B$JIzIgj4%dP@dttDd"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="+|qQi@nf?jJQ}^ZZE^vm"> <field name="ATTR">val</field> <field name="OID">shelly.0.shellyplus1pm#e86beae68154#1.Relay0.Switch</field> </block> </value> <value name="B"> <block type="logic_boolean" id="}bW|HMKJ1KyZ7FhEt:ve"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="time_compare_ex" id="4|}uUs]AkzN#EQ8!:?5R"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="_u*s#~a0_5V{_zU;oxwh"> <field name="TEXT">09:00</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="I/CjWoF]X#^0$C,mH!Ln"> <field name="TEXT">20:30</field> </shadow> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="RakNjasG^$$z#ZUABtL5"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.shellyplus1pm#e86beae68154#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="QD-OowK2lJqbX~b;9_vf"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="debug" id="idE{vj!X{wiKj|sW,dM-"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="`r,r(rlJosU`ny{CzRO/"> <field name="TEXT">Heizstab ausgeschaltet</field> </shadow> </value> </block> </next> </block> </statement> </block> </statement> </block>
Vielleicht kann mir das Rätsel einmal jemand beantworten.
Gruß surfer
-
@surfer09 sagte in Blockly Verzögerung Verständnisfrage:
Ist es so, dass ich mit dem Verzögerungswert (22 Sekunden) unter dem Abfragewert (10 Sekunden) bleiben muss?
Natürlich
Bei jedem Trigger wird der Timeout gestoppt -
@homoran Also lag ich doch richtig mit meiner Vermutung... Wie müsste ich es denn wohl umbauen, so dass er 2 Abfrageintervalle des Triggerwertes abwartet? Ich möchte halt das ständige Ein- und Ausschalten verhindern.
-
@surfer09 sagte: Wie müsste ich es denn wohl umbauen
Prinzip:
-
@paul53 Jetzt überforderst du mich aber :-). Das Skript hatte ich vorhin bei meiner Suche nach einer Lösung schon gesehen, ich versteh's nur nicht und weiß nicht, wie ich das auf mein Skript übertragen soll.
-
@surfer09 sagte: wie ich das auf mein Skript übertragen soll.
Baue es einfach nach und verwende als Trigger "smartmeter.0.1-0:16_7_0__255.value". Wie ich an deinem Skript sehe, sind die Werte ebenfalls negativ bei Einspeisung.
Zur Erläuterung: Solange der Überschuss nicht 5 Minuten lang 2500 W übersteigt, wird der Timer
delayOn
gestoppt. Umgekehrt gilt es für das Ausschalten bei < 200 W Überschuss. -
-
@surfer09 sagte: es ist vollbracht.
Die Vergleiche sind falsch herum!
Du meinst, dass so kurze Verzögerungen sinnvoll sind für das Schalten eines Heizstabes? Oder sind die nur zum Testen so kurz? Wie hoch ist die Leistungsaufnahme des Heizstabes?
-
@paul53 Die Verzögerungen habe ich absichtlich erstmal so kurz gewählt. Werden dann noch angepasst.
Der Heizstab hat 2KW.
So müsste es richtig sein?! -
@surfer09 sagte: Der Heizstab hat 2KW.
Die Hysterese ist mit 1980 W zu gering. Sie muss etwas höher sein, als die Leistungsaufnahme, da sonst im Grenzbereich ständig ein- und ausgeschaltet wird.
@surfer09 sagte in Blockly Verzögerung Verständnisfrage *gelöst*:
So müsste es richtig sein?!
Nein, die Vergleiche sind immer noch falsch herum.
Die Prüfung der Uhrzeit muss nur beim Einschalten erfolgen (falls überhaupt erforderlich).
-
@paul53 Okay, habe ich jetzt angepasst.
Das mit der Uhrzeit hatte ich absichtlich mit eingebaut. Ich hatte heute morgen nämlich auch ein Problem mit diesem Skript, was den Speicher etwas leeren soll. Das funktionierte heute morgen gar nicht.
Er schaltete andauernd ein und aus.Angepasstes Skript:
Batterie leeren
-
@paul53 sagte in Blockly Verzögerung Verständnisfrage *gelöst*:
@surfer09 sagte: Der Heizstab hat 2KW.
Die Hysterese ist mit 1980 W zu gering. Sie muss etwas höher sein, als die Leistungsaufnahme, da sonst im Grenzbereich ständig ein- und ausgeschaltet wird.
Du meinst so?
-
@surfer09 sagte: Du meinst so?
Im Ernst: Nur 2020 W Hysterese?
-
@paul53 Ehrlich gesagt weiß ich jetzt nicht genau was damit gemeint ist. Wie hoch sollten die Werte denn sein?
-
@surfer09 sagte in Blockly Verzögerung Verständnisfrage *gelöst*:
Wie hoch sollten die Werte denn sein?
so viel wie vernachlässigbar zusätzlich zum Heizstab laufen darf/könnte, ohne dass bei jedem Anschalten der WC Beleuchtung der Heizstab ausschalten muss.
-
@surfer09 sagte: Wie hoch sollten die Werte denn sein?
Ich hatte 2300 W vorgeschlagen (Hysterese: 2250 W).
-
@paul53 Okay, dann hatte ich das nicht so verstanden, dass ich das bei mir so hinterlegen sollte, Sorry! Ich dachte, der Code wäre ein Beispiel aus deinem privaten Bereich.
Ich hab's jetzt angepasstUnd das bedeutet jetzt, dass mindestens 2250 Watt Überschuss nötig sind, um einzuschalten?
-
@surfer09 sagte: mindestens 2250 Watt Überschuss nötig sind, um einzuschalten?
Mind. 2300 W Überschuss zum Einschalten. Wie groß ist die PV-Anlage (Wp)?
Übrigens: Wenn um 20:30 Uhr der Überschuss noch >= 50 W ist, bleibt der Heizstab die ganze Nacht eingeschaltet.
-
@paul53 sagte in Blockly Verzögerung Verständnisfrage *gelöst*:
@surfer09 sagte: mindestens 2250 Watt Überschuss nötig sind, um einzuschalten?
Mind. 2300 W Überschuss zum Einschalten. Wie groß ist die PV-Anlage (Wp)?
4,5 KW
Übrigens: Wenn um 20:30 Uhr der Überschuss noch >= 50 W ist, bleibt der Heizstab die ganze Nacht eingeschaltet.
Och ne, das geht ja auch nicht. Dann muss ich die Uhrzeit weiter nach hinten schieben.
-
@surfer09 sagte: 4,5 KW
Dann muss man den Heizstab nicht schon bei 2050 W aktivieren.
@surfer09 sagte in Blockly Verzögerung Verständnisfrage *gelöst*:
Dann muss ich die Uhrzeit weiter nach hinten schieben.
... oder die Prüfung der Uhrzeit beim Ausschalten ganz weglassen.