NEWS
Victron MP2 und Shelly Zählerstände sichern.
-
Hallo zusammen ich habe Folgendes Problem.
Ich logge fleißig alle möglichen Energiedaten und habe leider das Problem von Verfälschungen durch das zurücksetzen der Zähler. Aktuell besteht das Problem bei meinem Multiplus. Ich lese die Werte mit NodeRed und Mqtt aus und übergebe sie in den IoBroker. Dort gibt es den aktuellen Wert einen Merker und den Zählerstand. Bei einem Neustart geht der aktuelle Wert wieder auf 0. Nun wird der Zählerstand in den Merker geschrieben und der aktuelle Wert mit dem Merker als Zählerstand geschrieben. Leider passiert es immer wieder das die Werte Springen als ob er mehrmals den Wert zum Merker addiert.
Desweiteren bekomme ich immer eine Warnung das die Datentypen nicht passen, finde aber den Fehler nicht?<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="Q(czJk(Jb:dSzs;`lo5S">Zähler</variable> <variable id="a@f?|71I;pa3iDRF4)Ar">Faktor</variable> <variable id="!chA+1p-}`$$*:-cQ[$R">Merker</variable> <variable id="t/|xS+{c,d5!I@/+m+ZF">ZS</variable> </variables> <block type="procedures_defnoreturn" id="Y8~mNwhrlcVCV+)3l!y^" x="-1188" y="88"> <mutation> <arg name="Zähler" varid="Q(czJk(Jb:dSzs;`lo5S"></arg> <arg name="Faktor" varid="a@f?|71I;pa3iDRF4)Ar"></arg> <arg name="Merker" varid="!chA+1p-}`$$*:-cQ[$R"></arg> <arg name="ZS" varid="t/|xS+{c,d5!I@/+m+ZF"></arg> </mutation> <field name="NAME">ZS Sichern</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="on_ext" id="vE^zM*~CQ?maA*6}rKc["> <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"> <field name="oid">default</field> </shadow> <block type="variables_get" id="4#+g9v[D=v#dc-Lq%]hB"> <field name="VAR" id="Q(czJk(Jb:dSzs;`lo5S">Zähler</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="z2cpbpnew7Y1(E!Qi#Mh"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="bnH7%G)ES]5)zM@E|:h|"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="x*B~lQ,t9;#5MTvf=0FF"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="on_source" id="R6@]BcH33b7MW_Q7R4Ms"> <field name="ATTR">oldState.val</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="byI)d9)!c*{Uf-]#6^XY"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="X4*@P45PB}cCgY!d;E{K"> <field name="VAR" id="!chA+1p-}`$$*:-cQ[$R">Merker</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_arithmetic" id=")Jp0kAT`.(#?muMM!3r2"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="%d5+pUM$W$evi/%pF:t%"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id=".@hsfFse1rxf.A!uY.J}"> <field name="VAR" id="!chA+1p-}`$$*:-cQ[$R">Merker</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="on_source" id=":N9{W;[PG/VO.3oD3*1="> <field name="ATTR">oldState.val</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="9;{nlnHT.7MaxPJc}Vqx"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <statement name="ELSE"> <block type="control_ex" id="bc71wo:QJX(j$BO+^+Wh"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="Cz!H?SC#LGWmkfG@6rvg"> <field name="VAR" id="t/|xS+{c,d5!I@/+m+ZF">ZS</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_arithmetic" id="|e**H]Lfh^G2oXan!c*1"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="KNozeulBEQs^~}6=.FbZ"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="K{aoEWIRrnt/,CG`Ym+o"> <field name="VAR" id="Q(czJk(Jb:dSzs;`lo5S">Zähler</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="X0dnLvM,WAr(5ynL/W#8"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="Vg$vTT+tql`0S,|B$h[T"> <field name="VAR" id="!chA+1p-}`$$*:-cQ[$R">Merker</field> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="C~33gSZ3Q(qw!HpT!Qjy"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </statement> </block> </statement> </block> <block type="on_ext" id="ix#,wgWZ]/h|[m{`FF?a" collapsed="true" disabled="true" x="-712" y="87"> <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="k(-#m;gq~@5j)6p6M:4I"> <field name="oid">default</field> </shadow> <block type="variables_get" id="_QlvFiaIk2;bZ@0-Ddc_"> <field name="VAR" id="Q(czJk(Jb:dSzs;`lo5S">Zähler</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="dHQ-tdjdJ|OADS,L$T9k"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="RFJ7Oftb]1%Z5q9|E$bh"> <field name="OP">GTE</field> <value name="A"> <block type="math_arithmetic" id="@6*/iD~no*Yf2aSHV5g%"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="SK9R29HLBB;E*X~lcfq_"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="uL:[P]C7}/4BDyYPTvNR"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="Y(86]v!dS@R[3qnlcKbC"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="MpVY$]3.Yk~}_;?}2N+2"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="zLOtu0-d54[sdITR{tl5"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="i)b(aF=AE|nPt/qSMO$B"> <field name="VAR" id="Q(czJk(Jb:dSzs;`lo5S">Zähler</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="4Z:rJI@6hI-t@n2AW%rF"> <field name="NUM">1000</field> </shadow> <block type="variables_get" id="Pxo=qU)ga(`(0DV5~^f3"> <field name="VAR" id="a@f?|71I;pa3iDRF4)Ar">Faktor</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="afiSTl),eU8p9W9`75dR"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="n3`Yy(5bhA2lmbng~|wg"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="UZ{QVi_}@SB$nksvX-@o"> <field name="VAR" id="!chA+1p-}`$$*:-cQ[$R">Merker</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="get_value_var" id=")U4GMaKjB:!,C)3HhZb)"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="aRGk|g53;tkhnTg=?Oo/"> <field name="VAR" id="t/|xS+{c,d5!I@/+m+ZF">ZS</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="w+WgkBU$f{$YB.l%LBWZ"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="4tQ2+:`6Z4|Yr6`;.]Em"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="+4z}h-+[!IlCJ[ra+W_("> <field name="VAR" id="t/|xS+{c,d5!I@/+m+ZF">ZS</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="qX1;)0{6ubi0]yDvV5R."> <field name="BOOL">TRUE</field> </shadow> <block type="math_arithmetic" id="`c!akLftjsT+@-3W:Jrh"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="L4H;)WJO~!PGa{Xlf8DQ"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="p(Yi1U`d3GXB,uHw:$nc"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="{G,5h^-+1eK5PB46h;;U"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="Ri_f}A|$^7LR$ktQd/^Q"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="Kx1!=Ed}ctr,qdF)/p.`"> <field name="VAR" id="Q(czJk(Jb:dSzs;`lo5S">Zähler</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="$a0xWPN6xLjd/rto!Z07"> <field name="NUM">1000</field> </shadow> <block type="variables_get" id="tx3uP=V^w(2p#sYfF3}."> <field name="VAR" id="a@f?|71I;pa3iDRF4)Ar">Faktor</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id=",*2iSknPwTcw9}:^m-?,"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="`q5Kqa2Fs^j*-[LheSXl"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="I;M=iMmmA7^2-/Lb_ixW"> <field name="VAR" id="!chA+1p-}`$$*:-cQ[$R">Merker</field> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="o0~GB2%Of^6-=(xI@$UL"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <statement name="ELSE"> <block type="control_ex" id="E2%klZ:H_-/3Zp=5.]yo"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="OU!IO2f92Sm?4yv;ZWA~"> <field name="VAR" id="!chA+1p-}`$$*:-cQ[$R">Merker</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="EBC,#[OzlY!*^PRT_vEa"> <field name="BOOL">TRUE</field> </shadow> <block type="get_value_var" id="FHccAS$W^x@SsFPeKaSK"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="VBh??*~Gyz%U*/eCxcBO"> <field name="VAR" id="t/|xS+{c,d5!I@/+m+ZF">ZS</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="kPzCWfoEas1x-/H`TbeD"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </statement> </block> <block type="on" id="*,lr;X=?_?_@*)b[Vx`-" disabled="true" x="-1038" y="787"> <field name="OID">0_userdata.0.Multiplus_II.Energie.Yield_Grill</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="~^!,kzxpqOQ=V%(;-djA"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Zählerstände.ZS_PV_Grill</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="~@*GsI|R#v$YN!:OZj(h"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Multiplus_II.Energie.Yield_Grill</field> </block> </value> </block> </statement> <next> <block type="procedures_callnoreturn" id="AkqDEI~#=kj_Q=z--.;#" disabled="true"> <mutation name="ZS Sichern"> <arg name="Zähler"></arg> <arg name="Faktor"></arg> <arg name="Merker"></arg> <arg name="ZS"></arg> </mutation> <value name="ARG0"> <block type="field_oid" id="$[%n/d=vcNc}Rx:_atr{"> <field name="oid">0_userdata.0.Multiplus_II.Energie.Yield_Grill</field> </block> </value> <value name="ARG1"> <block type="math_number" id="b[QpFe{DOx2[+e(3SGA~"> <field name="NUM">1</field> </block> </value> <value name="ARG2"> <block type="field_oid" id="DrQphOiwn=|Vu$.~=KpT"> <field name="oid">0_userdata.0.Multiplus_II.Energie.Merker_Yield_Grill</field> </block> </value> <value name="ARG3"> <block type="field_oid" id="FWJxx}!)F49d0r?Y_TXF"> <field name="oid">0_userdata.0.Zählerstände.ZS_PV_Grill</field> </block> </value> <next> <block type="on" id="a^N@l]#U4pG=-Te-T9#:"> <field name="OID">0_userdata.0.Multiplus_II.Energie.Yield_Grill</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="0|l~vR;6Dz{ZH+*_`MT1"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Zählerstände.ZS_PV_Grill</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value_var" id=")!Zl,jl955uvMh%kYWCp"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="J}u#vQ]vLHt~RAjE5uuw"> <field name="TEXT"></field> </shadow> <block type="field_oid" id="I8,H~s-d8z.w/m=jb@}w"> <field name="oid">0_userdata.0.Multiplus_II.Energie.Yield_Grill</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on" id="b%_j[JLYHz2LX_|cg=(~"> <field name="OID">shelly.0.SHSW-PM#34945472B1EC#1.Relay0.Energy</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="9ySS1tVS0Qt(i=M;gi:V"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="vX:8qqkp_h/2XL-)Y;mz"> <field name="OP">GTE</field> <value name="A"> <block type="math_arithmetic" id="b(#7``6K.;62`urV9|3m"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="LWRN65z34.4;23Xva,SI"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHSW-PM#34945472B1EC#1.Relay0.Energy</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="`!gopaAjO%+Ym82UxQP|"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Klima</field> </block> </value> </block> </value> <value name="B"> <block type="get_value" id="|5cx.BAr|Q|e6d.G.A`u"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Dnv{L{`[;{R^sgFS9@fT"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id=";)9_/[^z(K6vX+e%Pgp("> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="(x6.G;fhJfQc05Lg07Nj"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHSW-PM#34945472B1EC#1.Relay0.Energy</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="D[TTZ4p`mq7[#PEr)sy."> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Klima</field> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="control" id="MCwdx}Sug?WL4W:XP=-*"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Klima</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="`C8z44s`ww!ilbDsLS-J"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="on" id="By{mE;!O*n.?h+$2M)SY"> <field name="OID">shelly.0.SHSW-PM#34945471ADAA#1.Relay0.Energy</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="w%;UXFyzo3/s%q|8=)vs"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="EY)S}Hh[zQ/l|2W7`A8z"> <field name="OP">GTE</field> <value name="A"> <block type="math_arithmetic" id="96JCkXs?hAUN}6iY[zAJ"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="7dTT8-m/@I(@Ks0h*,2~"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHSW-PM#34945471ADAA#1.Relay0.Energy</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="8UJR%|E6Zfi0pp~:v`G;"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Klima_Amelie</field> </block> </value> </block> </value> <value name="B"> <block type="get_value" id="L23f5;{fMP~LkBGY/h5j"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima_Amelie</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Lb{czvnRlnOu*.P=8Z=m"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima_Amelie</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="X8xV3LvE1#^U%A.OVX=8"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="W(UA-t?+HmWl+).y+64/"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHSW-PM#34945471ADAA#1.Relay0.Energy</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="hRiH,o_*()]v}B*r)b%{"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Klima_Amelie</field> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="control" id=":kDLT,xb07LG/uQ6OaZO"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Klima_Amelie</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="2``NsG3dV2;+e6jdE0ez"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima_Amelie</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="on" id="Q?o+/h/w;jnPg%wM[ag2"> <field name="OID">shelly.0.SHSW-PM#34945472B1EC#1.Relay0.Energy</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="JZe`v;bNxGRW$$ju36al"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima_Gesamt</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="xG?9YTy]vWSYRSW?lt#E"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="Czm:Xeyhf^N~Ne0=VdB3"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima_Amelie</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="^C{rI0!UOtPKSw~|K/)x"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zählerstände.ZS_Klima</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on" id="Qh5zg{mem4B};~o3l@d^"> <field name="OID">shelly.0.SHSW-PM#34945472BCBF#1.Relay0.Energy</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="IJy3q3SPb[W-MKuoT=;4"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="b+/rsDT2oCRclD5X@S*h"> <field name="OP">GTE</field> <value name="A"> <block type="math_arithmetic" id="}@uLb$l|egpc?flFYChe"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id=".N*TkQog_;pH3,lnX]vi"> <field name="NUM">1</field> </shadow> <block type="get_value" id="8C]5})hQyGhPsclActx7"> <field name="ATTR">val</field> <field name="OID">alias.0.Growatt.Energy</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="zpjEK4(MzjFd}LWfij/-"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Growatt</field> </block> </value> </block> </value> <value name="B"> <block type="get_value" id="S28~7jb(aI=AEN89#.HA"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zählerstände.ZS_Growatt</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="AOJV)S_@YCyPc?~`4Rxp"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Zählerstände.ZS_Growatt</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="+e4-duaJ}duPh)rHiz03"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="!Ez9.kDibtWC(Kr3Z$@P"> <field name="NUM">1</field> </shadow> <block type="get_value" id="igj}@`FO4D;O2/MIBL-u"> <field name="ATTR">val</field> <field name="OID">alias.0.Growatt.Energy</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="u*kVpHe/D8Vh?0B~.U9j"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Growatt</field> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="control" id="(N:^90RV`2UIm;3R^Qj_"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Hilfsvariablen.Merker_Growatt</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="R47){$9=+QD.#XTB)H#n"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zählerstände.ZS_Growatt</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="procedures_callnoreturn" id="c$4%f6v;C?vQNNLf)V3f"> <mutation name="ZS Sichern"> <arg name="Zähler"></arg> <arg name="Faktor"></arg> <arg name="Merker"></arg> <arg name="ZS"></arg> </mutation> <value name="ARG0"> <block type="field_oid" id="AY,M:/DcXsuSl;[IC,VJ"> <field name="oid">0_userdata.0.Multiplus_II.Energie.AcIn1ToAcOut</field> </block> </value> <value name="ARG1"> <block type="math_number" id=";}ji/*L0Q3Ui.d,:1g9k"> <field name="NUM">1</field> </block> </value> <value name="ARG2"> <block type="field_oid" id="eFa#!:QKP!bFlXQBkwN."> <field name="oid">0_userdata.0.Multiplus_II.Energie.Merker_AcIn1ToAcOut</field> </block> </value> <value name="ARG3"> <block type="field_oid" id="u,A?u_T||710[vzm]HP;"> <field name="oid">0_userdata.0.Multiplus_II.Energie.ZS_AcIn1ToAcOut</field> </block> </value> <next> <block type="procedures_callnoreturn" id="#[F?LO]H6D4;xfYTMh1%"> <mutation name="ZS Sichern"> <arg name="Zähler"></arg> <arg name="Faktor"></arg> <arg name="Merker"></arg> <arg name="ZS"></arg> </mutation> <value name="ARG0"> <block type="field_oid" id="h5x(=VS,10@TQc^H-Z5v"> <field name="oid">0_userdata.0.Multiplus_II.Energie.AcIn1ToInverter</field> </block> </value> <value name="ARG1"> <block type="math_number" id=")e!}l6)SPYz70VCw`.}*"> <field name="NUM">1</field> </block> </value> <value name="ARG2"> <block type="field_oid" id="lk-Kq+2iAMmJ/wO78NG{"> <field name="oid">0_userdata.0.Multiplus_II.Energie.Merker_AcIn1ToInverter</field> </block> </value> <value name="ARG3"> <block type="field_oid" id="-!XH9`p+WU11LHzyTLrm"> <field name="oid">0_userdata.0.Multiplus_II.Energie.ZS_AcIn1ToInverter</field> </block> </value> <next> <block type="procedures_callnoreturn" id="5Trp1Dwdafn+A-|JROF@"> <mutation name="ZS Sichern"> <arg name="Zähler"></arg> <arg name="Faktor"></arg> <arg name="Merker"></arg> <arg name="ZS"></arg> </mutation> <value name="ARG0"> <block type="field_oid" id="b(;|2XC#S~I`3hP4IvDj"> <field name="oid">0_userdata.0.Multiplus_II.Energie.AcOutToAcIn1</field> </block> </value> <value name="ARG1"> <block type="math_number" id="{dJK;uV1pO;4z/?~+,}W"> <field name="NUM">1</field> </block> </value> <value name="ARG2"> <block type="field_oid" id="X.`l$9jp6TrLEu!-c!F_"> <field name="oid">0_userdata.0.Multiplus_II.Energie.Merker_AcOutToAcIn1</field> </block> </value> <value name="ARG3"> <block type="field_oid" id="KUCRWi3x0Y]AA/[nL)kA"> <field name="oid">0_userdata.0.Multiplus_II.Energie.ZS_AcOutToAcIn1</field> </block> </value> <next> <block type="procedures_callnoreturn" id="GHs-e@0?JXPi*tbu*l33"> <mutation name="ZS Sichern"> <arg name="Zähler"></arg> <arg name="Faktor"></arg> <arg name="Merker"></arg> <arg name="ZS"></arg> </mutation> <value name="ARG0"> <block type="field_oid" id="V1:W`?~PK@Y~*tz}3epP"> <field name="oid">0_userdata.0.Multiplus_II.Energie.InverterToAcIn1</field> </block> </value> <value name="ARG1"> <block type="math_number" id="eV|F3[D$:;%z/Z,od$k0"> <field name="NUM">1</field> </block> </value> <value name="ARG2"> <block type="field_oid" id="#:Ax36@_l*x8-7{v^tOl"> <field name="oid">0_userdata.0.Multiplus_II.Energie.Merker_InverterToAcIn1</field> </block> </value> <value name="ARG3"> <block type="field_oid" id="s,H$PR4*cmnUyucfC-M?"> <field name="oid">0_userdata.0.Multiplus_II.Energie.ZS_InverterToAcIn1</field> </block> </value> <next> <block type="procedures_callnoreturn" id="s6-@HetNWGct!v_jrJXD"> <mutation name="ZS Sichern"> <arg name="Zähler"></arg> <arg name="Faktor"></arg> <arg name="Merker"></arg> <arg name="ZS"></arg> </mutation> <value name="ARG0"> <block type="field_oid" id="aqWp:EiF|kO9^RxZWi42"> <field name="oid">0_userdata.0.Multiplus_II.Energie.InverterToAcOut</field> </block> </value> <value name="ARG1"> <block type="math_number" id="m0;Rcue7x=01ViY82uE*"> <field name="NUM">1</field> </block> </value> <value name="ARG2"> <block type="field_oid" id="m,AszFkLlG|1$b|X2)^?"> <field name="oid">0_userdata.0.Multiplus_II.Energie.Merker_InverterToAcOut</field> </block> </value> <value name="ARG3"> <block type="field_oid" id="#i0].7Wra.?=r(b%Jmc4"> <field name="oid">0_userdata.0.Multiplus_II.Energie.ZS_InverterToAcOut</field> </block> </value> <next> <block type="procedures_callnoreturn" id=":p+:Ii~VotfnK{jmCGoC"> <mutation name="ZS Sichern"> <arg name="Zähler"></arg> <arg name="Faktor"></arg> <arg name="Merker"></arg> <arg name="ZS"></arg> </mutation> <value name="ARG0"> <block type="field_oid" id="9Y=M0eV{4BYTDyH5|l54"> <field name="oid">0_userdata.0.Multiplus_II.Energie.OutToInverter</field> </block> </value> <value name="ARG1"> <block type="math_number" id="@=imL?s0fJhqps|_fmhd"> <field name="NUM">1</field> </block> </value> <value name="ARG2"> <block type="field_oid" id="iUE4Okr6+]*WzC6[u(AV"> <field name="oid">0_userdata.0.Multiplus_II.Energie.Merker_OutToInverter</field> </block> </value> <value name="ARG3"> <block type="field_oid" id="=]~^.s;*po:mC^yd.V-H"> <field name="oid">0_userdata.0.Multiplus_II.Energie.ZS_OutToInverter</field> </block> </value> <next> <block type="procedures_callnoreturn" id="-aBQU;gCxPkZu%wVede@"> <mutation name="ZS Sichern"> <arg name="Zähler"></arg> <arg name="Faktor"></arg> <arg name="Merker"></arg> <arg name="ZS"></arg> </mutation> <value name="ARG0"> <block type="field_oid" id="xbNb*s`~?VNyNrJmjARK"> <field name="oid">0_userdata.0.Zählerstände_aus_Leistung.ZS_Leistung_Haus</field> </block> </value> <value name="ARG1"> <block type="math_number" id="oAc6i?Y*Z)tXa=rX_nZ*"> <field name="NUM">1</field> </block> </value> <value name="ARG2"> <block type="field_oid" id="ihq`8,$HO`^f!6,cqs#/"> <field name="oid">0_userdata.0.Hilfsvariablen.Merker_Haus_+_Verluste</field> </block> </value> <value name="ARG3"> <block type="field_oid" id="M8G$zaQ+}6VxTE$*YB}S"> <field name="oid">0_userdata.0.Zählerstände.ZS_Haus_+_Verluste</field> </block> </value> </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> </xml>
-
@jacke sagte: Verfälschungen durch das zurücksetzen der Zähler.
Weshalb so kompliziert? Erstelle einen eigenen Datenpunkt mit dem Zählerstand, trage vor erstem Skriptstart den abgelesenen Zählerstand manuell ein und das folgende Blockly zählt weiter - auch bei einem Reset des Originalwertes:
Version mit Umrechnung Wh --> kWh:
-
@jacke abgesehen davon, dass die Energiewerte im Multiplus flüchtig sind, sind sie auch nur "grobe Anhaltswerte".
Bei mir liegen sie deutlich neben dem was mir über andere Wege zur Verfügung steht.
Der Batteriewirkungsgrad läge dann bei etwa 64%, nach Berechnungen über BatteryPower komme ich auf 91% -
Danke für die antworten das war halt das wa ich mit meinem Wissen machen konnte der andere Ansatz ist natürlich wesentlich eleganter.
@paul53
Bei Objekt Id Energy muss da noch der Datenpunkt des Zählers hin?
Kann ich das skript auf 10mal hintereinander packen oder als funktion direkt anlegen?@homoran said in Victron MP2 und Shelly Zählerstände sichern.:
@jacke abgesehen davon, dass die Energiewerte im Multiplus flüchtig sind, sind sie auch nur "grobe Anhaltswerte".
Bei mir liegen sie deutlich neben dem was mir über andere Wege zur Verfügung steht.
Der Batteriewirkungsgrad läge dann bei etwa 64%, nach Berechnungen über BatteryPower komme ich auf 91%Ja habe es auch mal mittels Sourceanalytix für eine Woche ausgerechnet und kan auf 73%. Was ist den Battery Power?
Ich war auch kurz davor noch Zähler vor und hinter dem Multiplus zu installieren, weil mich das doch etwas nervt.
aber es ist haltein komplizeirter Aufbau.
AC gekoppelte PV 3phasig, 1 phasiger Multiplus mit Lifepo4 akku und Solarladeregler plus 1 Phasige PV an AC-Out mit Kritischen Lasten.
Wie hast du das denn gelöst? -
@jacke sagte in Victron MP2 und Shelly Zählerstände sichern.:
Was ist den Battery Power?
die Lade und Entladeleistung der Batterie.
die habe ich auch über SourceAnalytix erfasst
3P WR und 3P Multiplus mit 48V (51.2V) Pytes-Batterien. Ladung über MP. Ganzes Haus an AC out1 incl WR
-
@homoran
also hast du es über die Leistung und nicht die Energie gelöst?
War ich auch schon am überlegen das so in den Volkszähler zu loggen, wusste nicht das dass auch über SourceAnalytix geht.
3P Multiplus mit dem Gedanken Spiele ich auch aber es ist in meinem Fall halt so überflüssig. Aber der kleine Mann in meinem Ohr
Werde es heute Abend mal testen und kurze Rückmeldung geben.
Danke nochmal -
@jacke sagte: Kann ich das skript auf 10mal hintereinander packen
Ja, aber für jeden
Zaehlerstand
eine andere Variable verwenden.@jacke sagte in Victron MP2 und Shelly Zählerstände sichern.:
als funktion direkt anlegen?
Das macht hier keinen Sinn, da lokale Trigger-Variablen verwendet werden, die übergeben werden müssten. Es gibt nichts, was gemeinsam verwendet werden kann.
@jacke sagte in Victron MP2 und Shelly Zählerstände sichern.:
Bei Objekt Id Energy muss da noch der Datenpunkt des Zählers hin?
Das ist der Originalzählwert (z.B. vom Shelly).
-
@jacke sagte in Victron MP2 und Shelly Zählerstände sichern.:
also hast du es über die Leistung und nicht die Energie gelöst?
ja, schon der Hinweis bei Victron über die "volatile values" hatte mich aufgeschreckt.
Als dann so absolut grottenschlechte Wirkungsgrade berechnet wurden, hatte ich nochmal die Handbücher gelesen, wo explizit auf "berechnete, nicht gemessene" Werte des MP und deren Ungenauigkeiten hingewiesen wurde, habe ich SourceAnalytix installiert und bin mitvden Werten deutlich zufriedener.
Eine Rückfrage bei meinem Victron Hänfler bestätigte dies. -
@jacke sagte: über die Leistung und nicht die Energie gelöst?
Wenn man den Zählerstand über die Leistung ermitteln will, macht man das anstelle des oben gezeigten Skripts mit folgendem Skript, das über die Zeit integriert:
Hier gibt es kein Rücksetzen des Zählers.
-
@paul53 said in Victron MP2 und Shelly Zählerstände sichern.:
@jacke sagte: Verfälschungen durch das zurücksetzen der Zähler.
Weshalb so kompliziert? Erstelle einen eigenen Datenpunkt mit dem Zählerstand, trage vor erstem Skriptstart den abgelesenen Zählerstand manuell ein und das folgende Blockly zählt weiter - auch bei einem Reset des Originalwertes:
Version mit Umrechnung Wh --> kWh:
Also prinzipiell klappt das Skript, aber leider ist Venus Os bistig anscheinend springt der wert nach einem Neustart was auch bei dieser Version zu Fehlern führt. Nach einem reset ist der Wert auf 455 gestiegen und dann auf die erwartende 0 gefallen.
Dadurch war der Zählerstand 455kWh zu hoch. -
@jacke sagte: Nach einem reset ist der Wert auf 455 gestiegen und dann auf die erwartende 0 gefallen.
Dann sollte man zu große Sprünge abfangen (ausklammern).
-
Ich habe es jetzt so gelöst ich hoffe das klappt, geht bestimmt auch eleganter
-
Habe es jetzt mehrmals getestest mit der+2 abfrage bekomme ich den Sprung beim neustart raus. Logge trotzdem die Leistung in Energie mittels Sourceanalytix mit