NEWS
Regelung eines Hoymiles Solarinverters (Nulleinspeisung)
-
Hallo,
ich habe mich mal daran versucht, ein Blockly zu erstellen, welches dazu dient, einen Hoymiles Wechselrichter für ein Balkonkraftwerk zu regeln.
Dazu gibt es im Netz schon einige, aber die, die ich gefunden hatte, gingen immer von dem Ansatz aus, das reagiert wird, wenn die Anlage in die Einspeisung geht, also mehr Strom erzeugt wird, als benötigt wird.
Mein Ansatz verfolgt einen anderen Weg. Und zwar den, dass die Anlage immer maximal soviel Strom liefert, wie von den Verbrauchern verlangt wird. Meinen Stromzähler lese ich mit einem Hichi aus, der negative Werte anzeigt, wenn eingespeist wird. Die benötigte Strommenge ergibt sich aus der Summe dessen, was der Hichi ausliest und der momentanen Leistung der PV-Anlage.
Meine Regelung erfolgt alle 30 Sekunden und nur zwischen Sonnenauf- und Sonnenuntergang. Um zu häufige Regelungen zu vermeiden, habe ich eine Hysterese eingebaut, wobei die Regelung nur dann erfolgt, wenn der gemessene Strombedarf mehr als 10% vom vorher eingestellten abweicht. Den eingestellten Wert speichere ich dazu in einem Datenpunkt. Die Regelung erfolgt über MQTT non-persistent und in Prozent, also relativ.
Ich hoffe, das Skript ist einigermaßen lesbar und würde mich mich über Hinweise zu Fehlern oder Verbesserungsvorschläge freuen.
Hier nun das Blockly;
viele Grüße
Kymchy@kymchy
Vielen Dank für deine WR Steuerung.
Funktioniert!

Habe das Blockly noch etwas verändert. Bin da aber leider kein Fachmann.

Interessant währe noch die Steuerung für einen zweiten WR. -
Hallo Zusammen,
Ich möchte dieses Thema Nocheinmal aufgereifen. Ich habe das Blockly von Carsaab nachgebaut. eigenlich das was ich die ganzezeit gesucht habe.
das Blockly rechnet die Prozente aus die ich in eine DummyVariable schreibe. Getriggert von der Wert anderung des Stromzählers ca alle 10 Sekunden. Möchte ich nun den Wert in den Open -DTU Adapter schreiben (Limit_nonpersistent_relativ) schreiben, scheind sich die Komunikation zwischen Adapter und DTU aufzuhängen.
das heist es werden keine Aktualdaten von der DTU an den Adapter zurück übermittelt. wenn nur Sporadisch und nicht wie gewohnt alle 10 Sekunden.
ich habe auch schon gedacht das zuviel daten gesendet werden und habe es über einen Cronjob alle 5 min versucht.
Sobald ich einmal auf die variable schreibe ist Feierabend. stoppe ich das Blockly normalisiert sich wieder alles .
Schreibe ich aber mehrfach in die Variable hängen sich die DTU auf. Auch die Webseite auf dem ESP bleibt bei der Daten übertragung hängen.Mein Setup
HM 1500
Open DTU auf ESP 32 Neuste Firmware
Open DTU Adapter auf Raspi4 8 GBJemand eine Idee Woran es liegen könnte.

Im Sonnenuntergang ist mit Absicht noch der Dummy drin
Gruß Thomas
-
Hallo Zusammen,
Ich möchte dieses Thema Nocheinmal aufgereifen. Ich habe das Blockly von Carsaab nachgebaut. eigenlich das was ich die ganzezeit gesucht habe.
das Blockly rechnet die Prozente aus die ich in eine DummyVariable schreibe. Getriggert von der Wert anderung des Stromzählers ca alle 10 Sekunden. Möchte ich nun den Wert in den Open -DTU Adapter schreiben (Limit_nonpersistent_relativ) schreiben, scheind sich die Komunikation zwischen Adapter und DTU aufzuhängen.
das heist es werden keine Aktualdaten von der DTU an den Adapter zurück übermittelt. wenn nur Sporadisch und nicht wie gewohnt alle 10 Sekunden.
ich habe auch schon gedacht das zuviel daten gesendet werden und habe es über einen Cronjob alle 5 min versucht.
Sobald ich einmal auf die variable schreibe ist Feierabend. stoppe ich das Blockly normalisiert sich wieder alles .
Schreibe ich aber mehrfach in die Variable hängen sich die DTU auf. Auch die Webseite auf dem ESP bleibt bei der Daten übertragung hängen.Mein Setup
HM 1500
Open DTU auf ESP 32 Neuste Firmware
Open DTU Adapter auf Raspi4 8 GBJemand eine Idee Woran es liegen könnte.

Im Sonnenuntergang ist mit Absicht noch der Dummy drin
Gruß Thomas
-
@gonzokalle said in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):
@lieggie
Hast du es schon einmal mit dem openDTU-Adapter und
probiert?
Das ist die Variable aus dem dtu Adapter
Gruß Thomas -
@gonzokalle said in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):
@lieggie
Hast du es schon einmal mit dem openDTU-Adapter und
probiert?
Das ist die Variable aus dem dtu Adapter
Gruß Thomas@lieggie said in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):
@gonzokalle said in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):
@lieggie
Hast du es schon einmal mit dem openDTU-Adapter und
probiert?
Das ist die Variable aus dem Open DTU Adapter die nutze ich auch.
Gruß Thomas -
Ich habe die Regelung von Kymchy noch ein bisschen geändert. Der WR hat jetzt Grenzen.
Ich hätte es gerne, dass das obere Limit für 1 Minute gehalten wird.
Falls noch ein höheres Limit, soll das dann gehalten werden.
Also höher geht immer, runter nach einer Minute.
Mir fehlt da die Idee, wie ich da ran gehen soll.
-
Nun hatte ich doch eine Idee. So scheint es zu funktionieren.

-
Ich habe dein Script auch mal verwendet und lasse es seit gestern laufen.
Sieht ziemlich gut aus auch wenn ich mich ein bisschen rein fuchsen musste, weil die Werte des Tibberpulse für Production und bezug nicht so cool sind.
Nehme jetzt für den Bezug den Tibber Wert und für die Produktion den aus MQTT - das klappt sehr gut.Danke dir!
-
Ich habe dein Script auch mal verwendet und lasse es seit gestern laufen.
Sieht ziemlich gut aus auch wenn ich mich ein bisschen rein fuchsen musste, weil die Werte des Tibberpulse für Production und bezug nicht so cool sind.
Nehme jetzt für den Bezug den Tibber Wert und für die Produktion den aus MQTT - das klappt sehr gut.Danke dir!
@schumi1992
Meinst du das letzte Script? -
@schumi1992
Meinst du das letzte Script?@gonzokalle Ne habe das Ursprüngliche von Kimchy verwendet :-)
-
@t-maas
OK, du must natürlich noch einiges anpassen nach dem Import, wie die Seriennummer des Wechselrichter usw. Außerdem einen eigenen Datenpunkt für den Vergleichswert anlegen. Und du benötigst natürlich das MQTT-Topic. Momentan regelt es alle 20 Sekunden. Das Limit für den Vergleichswert oben liegt bei 5% über und für den unteren bei 10% unter dem des zuletzt gespeicherten Wertes. Hier ist noch ein Feintuning möglich.<block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="!P+uzJ#%y!_wHsKqo2~M" x="-812" y="-562"> <field name="SCHEDULE">0,20,40 * * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="~v~t5u;a_q(#kb+E{(FH"> <field name="VAR" id="?~:J:;gqC%-pt?=zNsH:">Sunrise</field> <value name="VALUE"> <block type="time_astro" id="Svgszky6QE2/10f8vck1"> <field name="TYPE">sunrise</field> <field name="OFFSET">0</field> </block> </value> <next> <block type="variables_set" id="~/087{!i@]6[`rKxsw]j"> <field name="VAR" id="UJ`JGN{Ezb$K7jJ[4P}j">Sunset</field> <value name="VALUE"> <block type="time_astro" id="BO/%++Qd.ktL4PfK.r3?"> <field name="TYPE">sunset</field> <field name="OFFSET">0</field> </block> </value> <next> <block type="controls_if" id="xaOp|xXgB@BB44iq}cJ."> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="|K,B[pWUT`!LyJsB6,pK"> <field name="OP">AND</field> <value name="A"> <block type="time_compare_ex" id="Y8n@Iqzd:%qZbp|#P_v^"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">>=</field> <value name="START_TIME"> <shadow type="text" id="]-0N3DkP*7?ghtYzXwX!"> <field name="TEXT">12:00</field> </shadow> <block type="variables_get" id="!,6PYgrHnSxh#Evn[Yie"> <field name="VAR" id="?~:J:;gqC%-pt?=zNsH:">Sunrise</field> </block> </value> </block> </value> <value name="B"> <block type="time_compare_ex" id="qRYvI=rC7,D?`B=PV@^6"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION"><=</field> <value name="START_TIME"> <shadow type="text"> <field name="TEXT">12:00</field> </shadow> <block type="variables_get" id="LMy)6-$QN(f3d9klxV`O"> <field name="VAR" id="UJ`JGN{Ezb$K7jJ[4P}j">Sunset</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="~p6WKGjCNU[UXfc{|$8|"> <field name="VAR" id="BN!a@q$SEAU4^)xo:SRJ">maxSolarPower</field> <value name="VALUE"> <block type="math_number" id="Z(v(#cMkS]/o.,;iyE/|"> <field name="NUM">600</field> </block> </value> <next> <block type="variables_set" id="Ih%sQzzK`!Ec=`tscEm-"> <field name="VAR" id="AcYpB0Ty+wVObL7=Y.a.">measuredPower</field> <value name="VALUE"> <block type="get_value" id="E60zTd:yszZT-@pD[YB#"> <field name="ATTR">val</field> <field name="OID">sonoff.0.DVES_0649F9.ENERGY_Power</field> </block> </value> <next> <block type="variables_set" id=":rlAB32E^@yPP9Jh?EMO"> <field name="VAR" id="1}Q0686mMw0ZGk)e+r?(">measuredSolarPower</field> <value name="VALUE"> <block type="get_value" id="Q8pLDlgI~N(N2-6)X@Qu"> <field name="ATTR">val</field> <field name="OID">mqtt.0.solar.Seriennummer-Wechselrichter.0.power</field> </block> </value> <next> <block type="variables_set" id="t8-xB+K`%rr)x]%:Q5cN"> <field name="VAR" id="le#}gR{6G.yhW=x|6pS8">neededPower</field> <value name="VALUE"> <block type="math_arithmetic" id="2FaDMR/kS5K9d!j=`dK3"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="2FEk%?jHI2)Hvf4}p|*;"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Z`YZ!4FileGG?5VwaP-/"> <field name="VAR" id="AcYpB0Ty+wVObL7=Y.a.">measuredPower</field> </block> </value> <value name="B"> <shadow type="math_number" id="+10nRI6/x]hugF{/lmxM"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="n0BqKn~p@qPw.Jvfrj,s"> <field name="VAR" id="1}Q0686mMw0ZGk)e+r?(">measuredSolarPower</field> </block> </value> </block> </value> <next> <block type="variables_set" id="$61h{3os=)%X-VEx9M:i"> <field name="VAR" id="X-B3:`dA%wy5$?]at5W-">NeededPowerPercent</field> <value name="VALUE"> <block type="math_round" id="3$tH.4.P)ukPPcI4xw.A"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="{D8W1ElJ#97Cg:]vDkM;"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="ju~9S8j-`0c/OF%2$7-o"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="6:p#t,*^;)z:Wb:@dc|3"> <field name="NUM">100</field> </shadow> </value> <value name="B"> <shadow type="math_number" id=".fYZ,3H9RSS}:wD=%Bvk"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="Z9S-r-/8^FbCeq,[{ULB"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="jul_lM$(9.yj`:ZH8}%@"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="_mPBX.l-0%hNvWtND[z1"> <field name="VAR" id="le#}gR{6G.yhW=x|6pS8">neededPower</field> </block> </value> <value name="B"> <shadow type="math_number" id="{Q+JfjzDv.)Z1KRbU*uv"> <field name="NUM">600</field> </shadow> <block type="variables_get" id="M!sN^/9!7$b}.ru.lqgC"> <field name="VAR" id="BN!a@q$SEAU4^)xo:SRJ">maxSolarPower</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="g3gA+F5X4*$4x2),%sJV"> <field name="VAR" id=":U;.Z4:pYNy(TwM9X-dL">storedNeededPower</field> <value name="VALUE"> <block type="get_value" id="7wbrC,7l;@ahCGcw2/pL"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV-Anlage.storedNeededPower</field> </block> </value> <next> <block type="variables_set" id="2KI]WdQd`0MzEf%mOPaL"> <field name="VAR" id="}s`y%Qd}~t2t(jU$8(ud">upperLimit</field> <value name="VALUE"> <block type="math_round" id="Ha.~N]M`[1eWboby_aYe"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id=":C/cpWh)P`-jK9}]IN*4"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="v}v!|Jkv3JHVqQR7poM0"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="{dg*rTfc(I5I1PoYYN;l"> <field name="VAR" id=":U;.Z4:pYNy(TwM9X-dL">storedNeededPower</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="#Aa[sC!ija_TtL9Go*jl"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="?YS@_}6Hup[`ZsLR!Z45"> <field name="VAR" id=":U;.Z4:pYNy(TwM9X-dL">storedNeededPower</field> </block> </value> <value name="B"> <shadow type="math_number" id="YxGb?xk[MY37)!7O-Cqe"> <field name="NUM">0.05</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="+KJ71_Z(eLN.a(uoEuci"> <field name="VAR" id="P^1|W+9iVy?PgNp}9!.S">lowerLimit</field> <value name="VALUE"> <block type="math_round" id="=HYNg!vGE)^Z7m{+e$cs"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="|d.50MyF$Zxnn(B]!gq~"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="?8HAOa[X,LM#h`p]lLc4"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="(8p!3BSrd)N0m`PVj}cd"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="?$cU!rsg;wkU}CP.VsR."> <field name="VAR" id=":U;.Z4:pYNy(TwM9X-dL">storedNeededPower</field> </block> </value> <value name="B"> <shadow type="math_number" id="@kP8*eoC!D4/Wa?%grKM"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="D$_kryX`Gb5eu$gnYS_q"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="nrL6t1UCC{jy1*U[O|Xq"> <field name="VAR" id=":U;.Z4:pYNy(TwM9X-dL">storedNeededPower</field> </block> </value> <value name="B"> <shadow type="math_number" id="||~-FC.nb3oU=fuLJzw}"> <field name="NUM">0.1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="8cGY=ms*^/Fbn#Cde4/e"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="QUQf.~7J|ziuD3sLdl)|"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="lGPf[Ci!QdAF4j#Bn34-"> <field name="TEXT">Sonnenaufgang; </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="kwmbl:u%6-!)]lE{Bhdj"> <field name="VAR" id="?~:J:;gqC%-pt?=zNsH:">Sunrise</field> </block> </value> </block> </value> <next> <block type="debug" id="yaFK]t~sZKg}j1WzH!TL"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="g_%Dq-ksE!p;Tib-dWoB"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="(bZZUaTT0bt~IQ|a~%#R"> <field name="TEXT">Sonnenuntergang; </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="weuYcyZ5+:mfnpSK9UiP"> <field name="VAR" id="UJ`JGN{Ezb$K7jJ[4P}j">Sunset</field> </block> </value> </block> </value> <next> <block type="debug" id="1|f1K~GhCe(a;/q4o_X]"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="2Zo2{I0w6J%`$2:qEY1l"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="+YI.VRyx;em.YT$D(|bs"> <field name="TEXT">Istwert: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="z%3ACfZd0~)KLgj0p}%@"> <field name="VAR" id=":U;.Z4:pYNy(TwM9X-dL">storedNeededPower</field> </block> </value> </block> </value> <next> <block type="debug" id="r+xN[i`4xS-M`OYDBpb."> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="(f(78JM#Hy0@?Z0hJe~l"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="~}`O(MW.TU:J%_oS)#Xu"> <field name="TEXT">obere Grenze: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id=",vBoJg7x{3!@v.c5w4q]"> <field name="VAR" id="}s`y%Qd}~t2t(jU$8(ud">upperLimit</field> </block> </value> </block> </value> <next> <block type="debug" id="qBNh2:P3U}F#$|$6FZFn"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="2kPK8(t-SdR9TZvb.%-l"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="}cq5v9RJT$55w(=?6BX)"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="*q^TTVgJ+?:b!z,x/S;V"> <field name="TEXT">untere Grenze: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="Vh$)4$K%:ZHW:~MiMXet"> <field name="VAR" id="P^1|W+9iVy?PgNp}9!.S">lowerLimit</field> </block> </value> </block> </value> <next> <block type="debug" id="k}*+@}8y%^u*6nB1JGm^"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="9O/.cB+R0J#M=YHuIJn?"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="3Uv-x,Irz%wnP{oXU!s^"> <field name="TEXT">benötigte Power in Prozent:</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="T);Yxf;X[xS0z_7}_YkI"> <field name="VAR" id="X-B3:`dA%wy5$?]at5W-">NeededPowerPercent</field> </block> </value> </block> </value> <next> <block type="controls_if" id="//Rx),f%pyif!qW8O/?G"> <mutation elseif="1" else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="6|n{EZ*g-L?wwMuw~`pt"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="@s)ep$AZC}nn4%[Y{zXv"> <field name="OP">GTE</field> <value name="A"> <block type="variables_get" id="rLGQIwoD@(-[)i.@Gek1"> <field name="VAR" id="X-B3:`dA%wy5$?]at5W-">NeededPowerPercent</field> </block> </value> <value name="B"> <block type="math_number" id="i.8)/]r6EY5E@{+61}ch"> <field name="NUM">100</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="M%7gn=%*6!Oo0Iy!N0HE"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="FPBUa4}8MCdw~u2(u=Z4"> <field name="VAR" id=":U;.Z4:pYNy(TwM9X-dL">storedNeededPower</field> </block> </value> <value name="B"> <block type="math_number" id="])#t~DUCT78?qe_~1/X)"> <field name="NUM">100</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="_|aD2Z`JU`?BoQCCcfTz"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="wcNA/`cj2DUcJLr26^bd"> <field name="TEXT">keine Änderung, Wert ist gleich gespeichertem Wert</field> </shadow> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="4WJuW,40dOlCCnG8!=A("> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="0U*fZT58L0uKFJsD)N{;"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="%=U`G7.6z`w:8|:XtgTI"> <field name="VAR" id="X-B3:`dA%wy5$?]at5W-">NeededPowerPercent</field> </block> </value> <value name="B"> <block type="variables_get" id="IE{(_NPVQP{:.^rxbG?4"> <field name="VAR" id="}s`y%Qd}~t2t(jU$8(ud">upperLimit</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="7GGwP6lHcmy!ILxZJvYk"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="EN^7brshgWEicI7V4)C!"> <field name="VAR" id="X-B3:`dA%wy5$?]at5W-">NeededPowerPercent</field> </block> </value> <value name="B"> <block type="variables_get" id="7B.88d1a^Hr`R-b6!iMZ"> <field name="VAR" id="P^1|W+9iVy?PgNp}9!.S">lowerLimit</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="controls_if" id="P8/_4.KJ/zZ6qh9iBh+o"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="mk*xKT^,LdqKZpmRr}r4"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id=".d_KP;p/?wytr_{S7(db"> <field name="VAR" id="le#}gR{6G.yhW=x|6pS8">neededPower</field> </block> </value> <value name="B"> <block type="variables_get" id="R!EQmKR0*lP1iR`NTG%f"> <field name="VAR" id="BN!a@q$SEAU4^)xo:SRJ">maxSolarPower</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="v_^pc%4YAqueF4@xp/Ph"> <field name="VAR" id=")2]D^Y|D:QS6S[A}9J=/">SolarLimit</field> <value name="VALUE"> <block type="variables_get" id="rba!2I;EQyijkPfjo!Ze"> <field name="VAR" id="X-B3:`dA%wy5$?]at5W-">NeededPowerPercent</field> </block> </value> <next> <block type="update" id="E7HJvqAC,*BNAxN~e8sd"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV-Anlage.storedNeededPower</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="hR1[WimPbd@1ICN+UAdn"> <field name="VAR" id="X-B3:`dA%wy5$?]at5W-">NeededPowerPercent</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="iqqD`P-h34,:2q7p$CH|"> <field name="VAR" id=")2]D^Y|D:QS6S[A}9J=/">SolarLimit</field> <value name="VALUE"> <block type="math_number" id="dowAhu.+=iz#Wc-F]p:X"> <field name="NUM">100</field> </block> </value> <next> <block type="update" id="*?5=;cANP)NJ|KuX_[PF"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV-Anlage.storedNeededPower</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="7vXqNl1zb}n*oh6q3:]4"> <field name="NUM">100</field> </block> </value> </block> </next> </block> </statement> <next> <block type="control" id="z87W,.vtwA$UGqi.I!=^"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.solar.Seriennummer-Wechselrichter.cmd.limit_nonpersistent_relative</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="tl[!e[[e4iwK1(?b$77o"> <field name="VAR" id=")2]D^Y|D:QS6S[A}9J=/">SolarLimit</field> </block> </value> <next> <block type="debug" id="4(mO4hae0d8|yCEDlMj~"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="GhK9E*i9z*IoFuBKSaq1"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="K$7:Tw;%Pm?f$3/:xV?V"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="tzX795?CuQ=.SGL`i!ns"> <field name="TEXT">gesetztes Limit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="`hpd|~6gnaa1#A:#I^ku"> <field name="VAR" id=")2]D^Y|D:QS6S[A}9J=/">SolarLimit</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="debug" id="k-_yI!1YR}Cw@^zA*2By"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="pOzzR,#7b~P,=jhm/QLz"> <field name="TEXT">keine Änderung</field> </shadow> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="debug" id="6hv2w66u%V}c3Ij`Q?pi"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="LmPU])Tk80,#%40`K:m4"> <field name="TEXT">Zeit ist außerhalb der Reglungszeit.</field> </shadow> </value> </block> </statement> </block> </next> </block> </next> </block> </statement> </block>@kymchy Danke- Daten eingegeben und schon rennt das Teil - super Idee
MFG