NEWS
Blockly Ladelimit
-
Ein Problem mit der API von PSA zwingt mich momentan zu einer Anpassung meines dashboards inkl Script.
Da keine SoC ausgewertet werden kann, möchte ich 10 bzw 20 kWh nachladen.
Dies wird über Radiobuttons realsiert, die auch den Lademodus (off,pv,minpv und now) steuern.
Das angehängte Script schreibt einen user DP (ladelimit 10 oder 20) mit True , damit der Radiobutton aktiv seiner Farbe ändert. Dazu überwacht es die geladen Menge an Strom . Das klappt soweit prima die Box stoppt auch bei 9800Wh....
Was nicht klappt.. das Script soll den Modus der Wallbox zum Schluß , also bei erreichen des Ladelimits auf "off" setzen, damit der entsprechende radiobutton auch auf OFF springt...
Wenn ich das "setze" Blockly aus dem Script per Zeittrigger ausführen lassen, dann klappt auch dies, aber warum nicht in diesem Script? Wo hab ich es evt falsch hingebogen?<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id=";@O!lW.q*L+[7:}ca4P;" x="-5" y="-815"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="%k_Ohz.onv_.WMeRYSPZ"> <field name="oid">0_userdata.0.PV.Ladelimit_10_KW</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="ejE.[;(lnzj17+u2U#Qi"> <field name="oid">mqtt.0.evcc.loadpoints.1.sessionEnergy</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="a5`TEi5i|4@*5KUcegoV"> <value name="IF0"> <block type="logic_operation" id="X%@tVy{rko]*bp^Vne+r" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="|k,7ot]52X5AdU~~6s,."> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="?OVXQ_q71Y3p/J%Hs5U9"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV.Ladelimit_10_KW</field> </block> </value> <value name="B"> <block type="text" id="*+q1juG$A5`@^ON5Tg=c"> <field name="TEXT">True</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="~ea-!OM@lT:ihS[%@@ZP"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="(~op2zL:xFOr:^$eqV%$"> <field name="ATTR">val</field> <field name="OID">mqtt.0.evcc.loadpoints.1.sessionEnergy</field> </block> </value> <value name="B"> <block type="math_number" id="?ou@Jikgu%ayGN/?T9n="> <field name="NUM">9800</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="j8dz-:5nQj%C={Qj.xnJ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV.Ladelimit_20KW</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="/%OZ5xNw(3dQF,|O^Yw]"> <field name="TEXT">false</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="^}}#z$L+d5y#{r{TV^y4"> <value name="IF0"> <block type="logic_operation" id="wg6tP$KllEC*~g4!O[{a" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="G`7d4pLpcCAqz+DP{AYC"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="M1k`Xm,/Uv2]I)_+(`}:"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV.Ladelimit_10_KW</field> </block> </value> <value name="B"> <block type="text" id="A7VFY7VTi=O-o_DGQBFt"> <field name="TEXT">True</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="D`V854p(YHrSx:[CL%-q"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="xvE2R4(kVHudk.w=*n$m"> <field name="ATTR">val</field> <field name="OID">mqtt.0.evcc.loadpoints.1.sessionEnergy</field> </block> </value> <value name="B"> <block type="math_number" id="SyOXa1zDQ~qrb*OMt9Q`"> <field name="NUM">9800</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="oF9YiPm!mT5ya`Nm2o$a"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.evcc.loadpoints.1.mode.set</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="R*s.[RXzR3yhtMx2lX[2"> <field name="TEXT">off</field> </block> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="on_ext" id="2,ZG|rc|~0NcWbAG%GrH"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="=0%V}q:{,BMvtwQp4S=O"> <field name="oid">0_userdata.0.PV.Ladelimit_20KW</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="IWYX)DpbTg-n/B?q*`GI"> <field name="oid">mqtt.0.evcc.loadpoints.1.sessionEnergy</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="4m^2#fi59w`jR~gHYMw3"> <value name="IF0"> <block type="logic_operation" id="VAZXe,%J;(?fDJ}#S]Ir" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="PuW`2=FH=lM`i)ht}Z2["> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="$Lj!;2bAMwm1KA,DiQZu"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV.Ladelimit_20KW</field> </block> </value> <value name="B"> <block type="text" id="W,TK.!FViv=2$Q=r@9;B"> <field name="TEXT">True</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="@%xfD$%C:4=%8A_.03wC"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="k79C|7BvV:?,853T%F/W"> <field name="ATTR">val</field> <field name="OID">mqtt.0.evcc.loadpoints.1.sessionEnergy</field> </block> </value> <value name="B"> <block type="math_number" id="X8E;sMrBlG;5qu}{)N6@"> <field name="NUM">19800</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Z5Q#V;2PB~+.|LB%a$%G"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV.Ladelimit_10_KW</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="qy{Iy;G`olys,._E,ys("> <field name="TEXT">false</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="uQXO%`_A4.eeH5U`R/aj"> <value name="IF0"> <block type="logic_operation" id="OZ?YnjLUf;Z|=]_fzC[I" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="k#5AC3v)%h=kObC!Y,k7"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="^G,Bi7iCF.[({Z0_G%[r"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV.Ladelimit_20KW</field> </block> </value> <value name="B"> <block type="text" id="q$|ol#ej.gyLM.n(?So!"> <field name="TEXT">True</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="n#?Omh68[~k+*`$DqNDj"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="--w`g{+j=FPElO;TdPZ|"> <field name="ATTR">val</field> <field name="OID">mqtt.0.evcc.loadpoints.1.sessionEnergy</field> </block> </value> <value name="B"> <block type="math_number" id="6w}j}62mukrq}(Q8-@L_"> <field name="NUM">19800</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="?7*Vp,Wo$.m//%Pau#sC"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.evcc.loadpoints.1.mode.set</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="fpCxi5bCB_YI[L%e_*_z"> <field name="TEXT">off</field> </block> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="on" id="Q8Q_]jP%$[h}RG_j0c.v"> <field name="OID">mqtt.0.evcc.loadpoints.1.mode</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="$}(VdS,!I,WD:=v9{CJ]"> <value name="IF0"> <block type="logic_compare" id="a5[T[IQ]Z*bsXM`Dv}qF"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="^DYc{d0~0$!nIce+xAk."> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="U)MjWF0(Tj-G$AZ`Q`b}"> <field name="TEXT">off</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="?#h6J1+tV!)+fbFUTi1X"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV.Ladelimit_10_KW</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="eVJyEr|1+sIW-qOZAl+6"> <field name="TEXT">false</field> </block> </value> <next> <block type="control" id="m6{IIUP=B?,5H,rNr/Jh"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV.Ladelimit_20KW</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="3l60H.Ci|p%rz]){;/Rh"> <field name="TEXT">false</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </xml>
-
@docsnyder7
und wie immer auch bitte einen Screenshot vom Blockly zeigen. -
sorry vergessen...
Für den modus benutzte ich ja einen Alias, da schreiben und lesen 2 verschieden DP sind... sollte ich den steuere evt auf den Alias legen, statt den DP direkt zu nehmen
-
So ich habs gelöst... hab alles nochmal durchgedacht, wer wie was machen muss und hab das Blockly umgestrickt
-
@docsnyder7 sagte: Blockly umgestrickt
Sind die Ladelimit-DP vom Typ "string"?
Gibt es zu den MQTT-DP nicht auch einen Alias vom Typ "boolean"? Wenn ja, sollte man den Alias verwenden.EDIT: Vorschlag mit Ladelimit-DP vom Typ "boolean"
-
Ja.. die Ladelimit DP sind string
der DP zum MQTT Dp (Limitenergy) ist eine Zahl und zum MQTT DP (Mode) ist ein String... bei verwendung des alias fürs setzen des Mode klappt es...die gelbe Zeile mit den Alias muss ich noch ergänzen...
den beiden letzten steuere Blöcke besser durch aktualisiere ersetzen?ach ja und ich muss irgendwo noch den Wert 10 bzw 20 schreiben... damit der Wert entsprechend gesetzt wird und die Wallbox nicht mehr wie bis zu diesem Limit läd...
-
@docsnyder7 sagte: die gelbe Zeile mit den Alias muss ich noch ergänzen...
Den MQTT-DP durch den Alias ersetzen!
@docsnyder7 sagte in Blockly Ladelimit:
die Ladelimit DP sind string
Die sollten in "boolean" geändert werden.
@docsnyder7 sagte in Blockly Ladelimit:
ich muss irgendwo noch den Wert 10 bzw 20 schreiben... damit der Wert entsprechend gesetzt wird und die Wallbox nicht mehr wie bis zu diesem Limit läd...
??
-
@paul53 said in Blockly Ladelimit:
@docsnyder7 sagte in Blockly Ladelimit:
ich muss irgendwo noch den Wert 10 bzw 20 schreiben... damit der Wert entsprechend gesetzt wird und die Wallbox nicht mehr wie bis zu diesem Limit läd...
??
die oberen Radiobuttons setzen im alias den Modus, welchen der alias wiederum in den MQTT DP schreibt.. alias, weil lese und schreib DP verschieden sind
die beiden 10 und 20kwh Buttons schreiben den Wert 10 oder eben 20 in den Ladelimit alias, der wiederum schreibt den Wert in den MQTT limitenergy DP... hier brauch ich den alias, weil der Button sich verändert wenn der Wert noch aktiv ist, dass klappt mit dem MQTT DP nicht, weil dieser auch nach dem schreiben wieder auf NULL geht und das ergebniss in einem anderen DP anzulesen ist
-
@paul53 said in Blockly Ladelimit:
@docsnyder7 sagte: Blockly umgestrickt
Sind die Ladelimit-DP vom Typ "string"?
Gibt es zu den MQTT-DP nicht auch einen Alias vom Typ "boolean"? Wenn ja, sollte man den Alias verwenden.EDIT: Vorschlag mit Ladelimit-DP vom Typ "boolean"
der Alias muss aber auch 4 verschieden werte annehmen.. (off,pv,minpv und now) somit wird "falsch" nicht funktionieren..oder
hab es jetzt nochmal zusammengerafft... funktioniert.. die Werte werden gesetzt, die Buttons reagieren und ändern entsprechend farbe und Bezeichnung
Danke für die Hilfe @paul53
-
@paul53 said in Blockly Ladelimit:
@docsnyder7 sagte: Blockly umgestrickt
Sind die Ladelimit-DP vom Typ "string"?
Gibt es zu den MQTT-DP nicht auch einen Alias vom Typ "boolean"? Wenn ja, sollte man den Alias verwenden.EDIT: Vorschlag mit Ladelimit-DP vom Typ "boolean"
oder meinst du mit Alias hier gelb... den Alias der true/false steht also der 10 oder 20KW alias?
dann hab ich deinen Vorschlag nicht korrekt gelesen.. entschuldige Bitte
Aber kann der Radiobutton auch True/False setzen, wenn Boolean?
Denn den Wert 10 oder 20 muss noch in den MQTT DP für limitenergy...