NEWS
(Gelöst) 2 E-Heizkörper mit PV-Überschuss schalten
-
Hallo allerseits!
Es gibt hier 'zig Beiträge zum Laden per PV-Überschuss, allerdings immer nur mit der Variante, 1 Heizstab, 1 Pumpe etc. zu betreiben. Bisher habe ich zumindest kein Thema für mein Szenario gefunden - das wäre:
"Schalte 2 E-Heizkörper abhängig von der Leistung des Smart Meters. Wird eingespeist, schalte ein, wird bezogen, schalte ab"
In ausführlich:
- E-Heizkörper 1 (HK1) soll mit 30 Sekungen Verzögerung einschalten, wenn <= -800 Watt (Einspeisung) auf einen DP anliegen
- Schaltet HK1 ein, soll wieder auf die eben besagten DP geguckt werden, ob <= -800 Watt eingespeist werden
- Ist dem so: Schalte Heizkörper 2 (HK2) wieder mit 30 Sekunden Verzögerung ein
- Wird auf oben besagten DP >= 150 Watt (vom Netz) bezogen, soll HK2 mit 10 Sekunden Verzögerung abschalten
- Wird weiterhin >= 150 watt bezogen, soll HK1 abschalten
Besonderheit:
- Die Einschalt-Timeouts sollen stoppen, wenn es plötzlich einen Netzbezug (kein PV) gibt
- Die Einschalt-Timeouts sollen abfangen, dass es kein häufiges Ein- und Ausschalten gibt
Was ich bisher vergebens versucht habe (auf Basis dieses Themas) :
Könnt ihr mir hier bitte weiterhelfen?
Ich danke euch sehr!
-
genau das mache ich bereits seit letztem Jahr.
Bin aber auf Infrarot Birnen gewechselt, weil die gute Wärme bringen.
Hab 2x 150 Watt, da ich bisher nur ein BKW hatte und von Herbst bis jetzt eh nie so viel hatte das es für mehr reichteDer Beitrag und das Script, moment ich suche und verlinke es
gefunden
https://forum.iobroker.net/topic/71094/blockly-pv-überschuss-logik-erweitert/ -
@berndsolar13 wow, perfekt! Kannst du mir evtl. kurz einen Screenshot von deinem aktuellen Script hinterlegen? Ich bin mit den Screenshotsin dem Thread von Paul und dir etwas verwirrt
Danke dir!
-
hier der Code, musst es halt anpassen
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="+t18GF@A*~6WCWgyvE%p">skd1</variable> <variable id="k7=v*-Vnix-]g#sObZt6">skd2</variable> <variable id="N)SzogkP0[=FMaFbu,q)">Infra2</variable> <variable id="^:f%.mKTXR2F#z8RC*xW">Entfeuchten</variable> <variable id="z^UtVN)EDFQymfa6gAVp">Anzahl</variable> <variable id="FyAT$nK,I4i[Xafw:=*Z">Liste</variable> <variable id="*lsT^~vphI_%`1/y5AUr">überschuss</variable> <variable type="timeout" id="delay on">delay on</variable> <variable type="timeout" id="delay off">delay off</variable> </variables> <block type="variables_set" id="gGf|_YSjlS!P:LnG6(/2" x="88" y="-662"> <field name="VAR" id="+t18GF@A*~6WCWgyvE%p">skd1</field> <value name="VALUE"> <block type="logic_boolean" id="q2AN6}a!.$19$li1MfjC"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="qUJ7UOw(2MC):$?KP]t3"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.tasmstd1.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="I~I{_OjaOi(iBH0rJr,4"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="Gl.]C`6fPZIs41c!dl:A"> <field name="VAR" id="k7=v*-Vnix-]g#sObZt6">skd2</field> <value name="VALUE"> <block type="logic_boolean" id="rL]V;GzSV(CC+?SqQyJw"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="cM!aSPV0)!hu59YN}{f)"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.infra2.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="D0oF){}P@o}DkpD*v}|#"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="X7TAVT%MdWyw7w)@1=SQ"> <field name="VAR" id="N)SzogkP0[=FMaFbu,q)">Infra2</field> <value name="VALUE"> <block type="logic_boolean" id="[Ru[l[e)aEt+-5vJoZnw"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="cA4tt+X$1%12LRf0%,u-"> <field name="VAR" id="^:f%.mKTXR2F#z8RC*xW">Entfeuchten</field> <value name="VALUE"> <block type="logic_boolean" id="MnZk:ga/3l-D2woxp$P1"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="Pvw[^t.NXyvsxRIcF`SR"> <field name="VAR" id="z^UtVN)EDFQymfa6gAVp">Anzahl</field> <value name="VALUE"> <block type="math_number" id=".glI|LRxmP$mON8I!pop"> <field name="NUM">12</field> </block> </value> <next> <block type="controls_if" id="Ic-[-{G#9BEp+ZW]wJ/Q"> <mutation else="1"></mutation> <value name="IF0"> <block type="get_value" id="K*T//dpo3Q8[(W+{GWGI"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Live_Verbrauch.durchschnitt_zahler_liste</field> </block> </value> <statement name="DO0"> <block type="variables_set" id="Y+ltc(Wb[~c)lurZ)(P6"> <field name="VAR" id="FyAT$nK,I4i[Xafw:=*Z">Liste</field> <value name="VALUE"> <block type="get_value" id="g?]|hL6vV}{Yl2o1=kAn"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Live_Verbrauch.durchschnitt_zahler_liste</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="+`|im}DgDs`L9uGW^a9Y"> <field name="VAR" id="FyAT$nK,I4i[Xafw:=*Z">Liste</field> <value name="VALUE"> <block type="lists_create_with" id="I9WE17T0=x|9BY@^5u$x"> <mutation items="0"></mutation> </block> </value> <next> <block type="update" id="V/VA;?xKqcM%;UM;|!~p"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Live_Verbrauch.durchschnitt_zahler_liste</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="z+Da`!]c~#BwnPK^B6xE"> <field name="VAR" id="FyAT$nK,I4i[Xafw:=*Z">Liste</field> </block> </value> </block> </next> </block> </statement> <next> <block type="on" id="xCKYKk~y_4=p}Ie:b#!4"> <field name="OID">sonoff.0.Stromzahler.PZ_Power_curr</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="}RiJt;bgk(vo+E@)!,Tu"> <field name="VAR" id="*lsT^~vphI_%`1/y5AUr">überschuss</field> <value name="VALUE"> <block type="math_arithmetic" id="fmX{+%##(],L9gMmXqTy"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="VcfMa^U?*we#;sTrWMwf"> <field name="NUM">0</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="2vqqv-S1cQV%jsUQ3tTN"> <field name="NUM">1</field> </shadow> <block type="on_source" id="Zt:}dT~xEtK9W_!Sc0vj"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="controls_if" id="SIyscOic`fO965#I{IkL"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="Yx+aRXRc7A!g:1T#a(UT"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="+sq7Nnm?ns_%N@T[_:+T"> <field name="VAR" id="*lsT^~vphI_%`1/y5AUr">überschuss</field> </block> </value> <value name="B"> <block type="math_number" id="uv,~+.:c4LXP#cNR%:g/"> <field name="NUM">150</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_cleartimeout" id="1SR.q2M?x276IW;!/81~"> <field name="NAME">delay on</field> </block> </statement> <value name="IF1"> <block type="logic_negate" id="[y$v3,PB`?dOcy40f[5^"> <value name="BOOL"> <block type="timeouts_gettimeout" id="yXihNa5:Q3nohEJZ-KVH"> <field name="NAME">delay on</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="^(xvtM@KU1;*A)nZp*x2"> <field name="NAME">delay on</field> <field name="DELAY">2</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="5,*05{0uBs~E)/0b$AO$"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_negate" id="d#*KhZS;r5c_4m=5IUvl"> <value name="BOOL"> <block type="get_value" id="sg`/[YwA;HY34DOTRwrR"> <field name="ATTR">val</field> <field name="OID">sonoff.0.tasmstd1.POWER</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="ljeYH7jG5M|YkdJOUgjz"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.tasmstd1.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="O:{c,l@goc294tLIw;^|"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="variables_set" id="To0R~u=CY_@E#%3/Z!(q"> <field name="VAR" id="+t18GF@A*~6WCWgyvE%p">skd1</field> <value name="VALUE"> <block type="logic_boolean" id="5_|(Ao~5Qs@r;N)U%xw8"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="k[voBV|:I|.w=(Ba4WRx"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="(;m+pwy96$F-8Z3C4D+w"> <field name="TEXT">test</field> </shadow> <block type="text_join" id=",!W|0pvgCwt:*E~}3l7$"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="2M!s{_BNzi5Onxc]rjK("> <field name="TEXT">Schalte 1 an</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_negate" id="j%f`C(0Ml[Nuhi.vH?y/"> <value name="BOOL"> <block type="get_value" id="Kr3fy#pq!=lxG+tOEp4E"> <field name="ATTR">val</field> <field name="OID">sonoff.0.infra2.POWER</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="b@WoIF5Awws}.i^-rR8D"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.infra2.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="MV5*{93)o|IX6s^B.:-."> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="variables_set" id="CIR{?|A~n`0+qh(.9?k-"> <field name="VAR" id="k7=v*-Vnix-]g#sObZt6">skd2</field> <value name="VALUE"> <block type="logic_boolean" id="cps.evx,L8jb=cD3++3e"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id=",e|lC/[,sS^a!/-,LFQ!"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="(;m+pwy96$F-8Z3C4D+w"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="wSQWdBY`i)!+rtf;V]*J"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="/Ku-M]ws;-J.@h[S*P0s"> <field name="TEXT">Schalte 2 an</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> <next> <block type="controls_if" id="._@GTin`Bo2(nV#R3p4k"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="lO!BqaSwgiBkBy{7bGy]"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="!-QmVB{~61m}^,Oo4Lsx"> <field name="VAR" id="*lsT^~vphI_%`1/y5AUr">überschuss</field> </block> </value> <value name="B"> <block type="math_number" id="B5nYSkhmQw.:[OQ+_:XQ"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_cleartimeout" id="D6o9ctRQNE-k6kM|n}6V"> <field name="NAME">delay off</field> </block> </statement> <value name="IF1"> <block type="logic_negate" id="5hJYc-f}els5piz4,}-j"> <value name="BOOL"> <block type="timeouts_gettimeout" id="*Ax@FVs-wRRHAGQt6yjP"> <field name="NAME">delay off</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="){Kmo_Cs[A^Ja7?C@`+S"> <field name="NAME">delay off</field> <field name="DELAY">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="M_$ab{Z#m;X$66|7?~H,"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="get_value" id="CER1s4-l:Czbjs%mL,4]"> <field name="ATTR">val</field> <field name="OID">sonoff.0.infra2.POWER</field> </block> </value> <statement name="DO0"> <block type="variables_set" id="Y.yw$`#$xPpG0]%loO+o"> <field name="VAR" id="k7=v*-Vnix-]g#sObZt6">skd2</field> <value name="VALUE"> <block type="logic_boolean" id="CIG#D1BpVd5YQIo=oidS"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="6+y4Qv4x[rb-;Z/#}ew)"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.infra2.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="6;5Azv(jz*vJ5fe*vos="> <field name="VAR" id="k7=v*-Vnix-]g#sObZt6">skd2</field> </block> </value> <next> <block type="debug" id="^^mlloZlA03fcfk[Z8ID"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="(;m+pwy96$F-8Z3C4D+w"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="HF?Fh@!9*!eT:R;#!fOn"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="Ks{4S8|}?6T(,B-Y^V1Q"> <field name="TEXT">Schalte 2 aus</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="get_value" id="e3DS{MVpGv9*J!5MXd,E"> <field name="ATTR">val</field> <field name="OID">sonoff.0.tasmstd1.POWER</field> </block> </value> <statement name="DO1"> <block type="variables_set" id="nNro212iZO2~5a13c;OK"> <field name="VAR" id="+t18GF@A*~6WCWgyvE%p">skd1</field> <value name="VALUE"> <block type="logic_boolean" id="F6LA$hiN46=pQ$Ch~FJ:"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="6E+{ZatN).l4jq(:I,E`"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.tasmstd1.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="V`~iWew{SIi)@-.TorMi"> <field name="VAR" id="+t18GF@A*~6WCWgyvE%p">skd1</field> </block> </value> <next> <block type="debug" id="+w-B9#xHjD-oZMC3LSv("> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="(;m+pwy96$F-8Z3C4D+w"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="+9DrEImJZ3,Bg-8)Uv]~"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="#(MOE]3o.-j}6Bh[V`r!"> <field name="TEXT">Schalte 1 aus</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> <next> <block type="debug" id="ivbsqz5OA^VjQLU7`CIa" disabled="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="VpOZ?f-u-|gLQ`h..Q)I"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="tZ/1]!pt+;eqqZ$2T2E9"> <mutation items="6"></mutation> <value name="ADD0"> <block type="text" id="|o)2~+{v0:V):bz5EoHZ"> <field name="TEXT">Überschuss </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="0*w61@f|mkX.nCI_Zg,3"> <field name="VAR" id="*lsT^~vphI_%`1/y5AUr">überschuss</field> </block> </value> <value name="ADD2"> <block type="text" id="gC)}9,%.ICP[NCfAJDz`"> <field name="TEXT"> | Steckdose 1 </field> </block> </value> <value name="ADD3"> <block type="variables_get" id="i[ojuq]0DQ|U!A6yEcu]"> <field name="VAR" id="+t18GF@A*~6WCWgyvE%p">skd1</field> </block> </value> <value name="ADD4"> <block type="text" id="p7it^-cd9TY4na`rt$0C"> <field name="TEXT"> | Steckdose 2 </field> </block> </value> <value name="ADD5"> <block type="variables_get" id="}fK*F6XthoBW#*NYSbnY"> <field name="VAR" id="k7=v*-Vnix-]g#sObZt6">skd2</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
-
Ich danke dir - es läuft tagsüber zu 80% zuverlässig.
Die restlichen 20% gehen leider nicht so gut. Es wird leider zu früh Heizkörper 1 eingeschaltet, obwohl vom Netz bezogen wird (vermutlich, weil 800W bezogen werden?) und Abends gehen beide Heizkörper auch an, obwohl bezogen wird und kaum noch PV-Strom zur Verfügung steht. Dazwischen klappt es erstaunlicherweise gut.
Eine Idee, was das Verhalten hervorruft?
Hier mal meine modifizierte Variante deines Scripts:
-
@wannseesprinter sagte: meine modifizierte Variante deines Scripts:
Was enthält der Trigger-Datenpunkt bei Bezug und bei Einspeisung?
Du negierst den Trigger-Wert und vergleichst dann mit -800?
Welche Leistungsaufnahme haben HK1 und HK2?
Wie hoch ist die PV-Leistung (max.)? -
mein Script oben stammt von paul53, also er wird dein Problem sicher lösen können
-
@paul53 die PV-Leistung wird max. auf 800W Einspeisung ins Netz gedrosselt, liegt aber bei 5kW insgesamt. Ein Heizkörper zieht 750W.
Wenn aus dem Netz bezogen wird, werden positive Werte aus dem Trigger genommen, wenn eingespeist, negative (mit einem Minus davor).
-
@wannseesprinter sagte: wenn eingespeist, negative (mit einem Minus davor).
Dann ändere den oberen Vergleich auf "überschuss <= 700" und den unteren Vergleich auf "überschuss >= -150".
-
@paul53 jau, das war's! Du bist echt Gold für die Community hier, Paul. Wenn ich schon allein meine Beiträge zähle, bei denen du mir geholfen hast... Vielen, lieben Dank!