- Home
- Deutsch
- Praktische Anwendungen (Showcase)
- Energymanagement PV/Solar: Nulleinspeisung
Energymanagement PV/Solar: Nulleinspeisung
-
@klassisch said in Energymanagement PV/Solar: Nulleinspeisung:
Der Inverter ist nicht sein Problem
Doch, steht ja ganz unten:
@jheide said in Energymanagement PV/Solar: Nulleinspeisung:
Woran scheitere ich aktuell:
Die Website des WR benötigt einen Login, danach wäre es vermutlich "nur" noch ein parsen der HTML SeiteAlles andere was ihr hier schreibt ist sowas von Offtopic...
@jheide Ich habe dir zwei Wege vorgeschlagen. Schau sie dir an. Kann dir ggf. bei der Webseite des WR helfen, nur über den Chat ist das schwierig. Vielleicht in Discord?
-
@h07d0q sagte in Energymanagement PV/Solar: Nulleinspeisung:
Alles andere was ihr hier schreibt ist sowas von Offtopic...
Sorry, dann habe ich den Titel
"Energymanagement PV/Solar: Nulleinspeisung "
und
Ein/Aus Schalten verschiedener Verbraucher
Strategie: Nulleinspeisungbzw. deren Bedeutung nicht richtig eingeordnet.
-
@h07d0q sagte in Energymanagement PV/Solar: Nulleinspeisung:
Alles andere was ihr hier schreibt ist sowas von Offtopic...
inwiefern?
Hier geht es darum ein Balkonkraftwerk mit allen notwendigen regulatorischen und technischen Möglichkeiten zu beleuchten, um anschließend eine Nulleinspeisung regeln zu können
-
Gut, um noch was zum Thema beizutragen, habe ich hier zwei von mir geschriebene Blocklys für euch.
- Blockly:
Die notwendigen Datenpunkte vorher anlegen
- MomentanwertErtrag (PV Momentanleistung)
- MomentanwertNetz (Smartmeter Momentanleistung über SML ausgelesen und einfach in den DP kopiert; Smartmeter zeigt Negativwerte bei Überschuss)
- MomentanwertGesamtverbrauch (Netz + PV)
- MomentanwertÜberschuss (negativer MomentanwertNetz)
- MomentanwertEigenverbrauch (bei Überschuss gleich Gesamtverbrauch; wenn MomentanwertNetz positiv nur Momentanwert PV)
- Berechnung der kWh für jeden einzelnen Momentanwert
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="izkgJG]@WDEEpP!/*8~;">ioMomentanwertPV</variable> <variable id="PkHJv!pTWh5?3nxx]llx">idPower</variable> <variable id="k:x2GxV0yr_4bxE=fy6F">idEnergy</variable> <variable id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</variable> <variable id="Q3-:px;|?IAa-}L]9kty">ooMomentanwertNetz</variable> <variable id="p0wl^WGra1tD0aEf5Q}5">ooEnergieNetz</variable> <variable id="3S6*S2zc7FI;a4U%b.1I">ooMomentanwertGesamtverbrauch</variable> <variable id="llyT,cpBv81et;*xDA?A">ooEnergieGesamtleistung</variable> <variable id="UfA3$=x:6j@Q7/--/`2h">ooMomentanwertErtrag</variable> <variable id=";VhS{UF5HVCr`X)~]K{T">ooEnergieErtrag</variable> <variable id="at6C8ry#oR/wh(q!{hHK">ooMomentanwertEigenverbrauch</variable> <variable id="Vi122v6s//L#`,LZNN^r">ooEnergieEigenverbrauch</variable> <variable id="$bKg1i(J6[[[jf_Pt0!G">ooMomentanwertÜberschuss</variable> <variable id="%z^.9%1Yn=mJlhg{CU[i">ooEnergieÜberschuss</variable> </variables> <block type="variables_set" id="m;Hw?hl(18qe(/zD/.uR" x="62" y="40"> <field name="VAR" id="izkgJG]@WDEEpP!/*8~;">ioMomentanwertPV</field> <value name="VALUE"> <block type="field_oid" id=".Sq$76PP~MM!pC[#/Y)D"> <field name="oid">shelly.0.SHSW-25#68C63AF9DB86#1.Relay0.Power</field> </block> </value> <next> <block type="variables_set" id="DC!nK%Ay!*[`G*Hb_JQb"> <field name="VAR" id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</field> <value name="VALUE"> <block type="field_oid" id="s/3QJ,dTSc@U5Llqr}XX"> <field name="oid">smartmeter.0.1-0:16_7_0__255.value</field> </block> </value> <next> <block type="variables_set" id="$GvaqSv31]X$Vi8(n?uW"> <field name="VAR" id="Q3-:px;|?IAa-}L]9kty">ooMomentanwertNetz</field> <value name="VALUE"> <block type="field_oid" id="H!~DRB..T%_QJJ?#oQ{l"> <field name="oid">0_userdata.0.PV.MomentanwertNetz</field> </block> </value> <next> <block type="variables_set" id="zBdH}Lge{Jz[$D5(g5|B"> <field name="VAR" id="p0wl^WGra1tD0aEf5Q}5">ooEnergieNetz</field> <value name="VALUE"> <block type="field_oid" id="(WLOP*|_f7tV{_+eWw(8"> <field name="oid">0_userdata.0.PV.EnergieNetz</field> </block> </value> <next> <block type="variables_set" id="D8f=Ch/Kx/_e^gW/SplZ"> <field name="VAR" id="3S6*S2zc7FI;a4U%b.1I">ooMomentanwertGesamtverbrauch</field> <value name="VALUE"> <block type="field_oid" id="3C8qMwOP,|uAp/W.qVC;"> <field name="oid">0_userdata.0.PV.MomentanwertGesamtleistung</field> </block> </value> <next> <block type="variables_set" id="{(]Z1_[0^VsI|U}7F-2z"> <field name="VAR" id="llyT,cpBv81et;*xDA?A">ooEnergieGesamtleistung</field> <value name="VALUE"> <block type="field_oid" id="`Y%RF{{~U5DuY}wHt^E6"> <field name="oid">0_userdata.0.PV.EnergieGesamtleistung</field> </block> </value> <next> <block type="variables_set" id="WA8}$f/;NE(n(3-zB})*"> <field name="VAR" id="UfA3$=x:6j@Q7/--/`2h">ooMomentanwertErtrag</field> <value name="VALUE"> <block type="field_oid" id="Lsulr)ug!LB0!5WQ#Xi0"> <field name="oid">0_userdata.0.PV.MomentanwertErtrag</field> </block> </value> <next> <block type="variables_set" id="?LAZWj{XKdBeOk+K]=.#"> <field name="VAR" id=";VhS{UF5HVCr`X)~]K{T">ooEnergieErtrag</field> <value name="VALUE"> <block type="field_oid" id="2*?cX2~2nOCO3usyRcE`"> <field name="oid">0_userdata.0.PV.EnergieErtrag</field> </block> </value> <next> <block type="variables_set" id="VOh$l88,|TgM-Br8N5*y"> <field name="VAR" id="at6C8ry#oR/wh(q!{hHK">ooMomentanwertEigenverbrauch</field> <value name="VALUE"> <block type="field_oid" id="w7KVM)8m)~?vF~(_dEuU"> <field name="oid">0_userdata.0.PV.MomentanwertEigenverbrauch</field> </block> </value> <next> <block type="variables_set" id="%VgeoDvmJ?eE-HRhLZbK"> <field name="VAR" id="Vi122v6s//L#`,LZNN^r">ooEnergieEigenverbrauch</field> <value name="VALUE"> <block type="field_oid" id="F[%w!.$DhIdgis?hyA/="> <field name="oid">0_userdata.0.PV.EnergieErtrag</field> </block> </value> <next> <block type="variables_set" id="gQlVBQO-|lwMcb#e9u[U"> <field name="VAR" id="$bKg1i(J6[[[jf_Pt0!G">ooMomentanwertÜberschuss</field> <value name="VALUE"> <block type="field_oid" id="+y9t+S?9x3D/W`8L6)N^"> <field name="oid">0_userdata.0.PV.MomentanwertÜberschuss</field> </block> </value> <next> <block type="variables_set" id="y)%+KqjQFn7ID+lkF!;F"> <field name="VAR" id="%z^.9%1Yn=mJlhg{CU[i">ooEnergieÜberschuss</field> <value name="VALUE"> <block type="field_oid" id="{@Xm$uF.SL=csDC|NF(E"> <field name="oid">0_userdata.0.PV.EnergieÜberschuss</field> </block> </value> <next> <block type="on_ext" id="Q89%4z()rdZS1X5b+A^)"> <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="G=8?`s#~Ut?pH;x9NFA|"> <field name="oid">default</field> </shadow> <block type="variables_get" id="Px}MnKP,3KD{~kID|D0q"> <field name="VAR" id="izkgJG]@WDEEpP!/*8~;">ioMomentanwertPV</field> </block> </value> <value name="OID1"> <block type="variables_get" id="MgAp4kGq[H+N*X)RpJM4"> <field name="VAR" id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</field> </block> </value> <statement name="STATEMENT"> <block type="control_ex" id="!yQ4;aibkvpg`CBxqQzR"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="/,v9}nx;CioIGpSNgRni"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="U$MPI`3]vhVFSx10[3U{"> <field name="VAR" id="UfA3$=x:6j@Q7/--/`2h">ooMomentanwertErtrag</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="-D=jWf*EYIH.l)3)JOXQ"> <field name="BOOL">TRUE</field> </shadow> <block type="math_rndfixed" id="(9hU/@P/_r4`whj8UiJ("> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="get_value_var" id="ns:ynA5c?/~$X,5!^;wh"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="Li4qOR%0o{uXPbWy:H1/"> <field name="VAR" id="izkgJG]@WDEEpP!/*8~;">ioMomentanwertPV</field> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="v,DOCWi{X5`H}CL1T:`3"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="i~(Nj]MQDIY^T_;dqWzl"> <field name="TYPE">true</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="S{ZzU0e}-Hn;ci4e2AP["> <field name="VAR" id="Q3-:px;|?IAa-}L]9kty">ooMomentanwertNetz</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_rndfixed" id="D+D@,SSOM@#O}n*G{g]N"> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="get_value_var" id="kIgLHah,fJZ}bsG9W|G9"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="z%nKg}Sqvla43gk+TP[q"> <field name="VAR" id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</field> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="-`OZ2KCKW0g/Fw+H^(=R"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="OWp[|C;Ik;T@^y6Q=Vwk"> <field name="TYPE">true</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="3T{9[k+^1_E[Y5R?#Zc="> <field name="VAR" id="3S6*S2zc7FI;a4U%b.1I">ooMomentanwertGesamtverbrauch</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_rndfixed" id="V7dk-f..mDlz2+ctinz}"> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="RQgl2EpgehH(tj]$G!hE"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="q}.zZ[Tti*AM`4H4q~TF"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="go-GXpzlVDKA2wrf2BOy"> <field name="VAR" id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="LJnzkZ]z.{{8ILF5Gn5F"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="~8]pWQx8or~)]fOWiIU_"> <field name="VAR" id="izkgJG]@WDEEpP!/*8~;">ioMomentanwertPV</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="bep0(E^LcSQjZ=%oiUo{"> <field name="NUM">0</field> </shadow> </value> <next> <block type="controls_if" id="D`!QwbW8F9imZ8RQOf_;"> <mutation else="1"></mutation> <value name="IF0"> <block type="math_number_property" id="Uasn0252g-cnO0`!@lIj"> <mutation divisor_input="false"></mutation> <field name="PROPERTY">NEGATIVE</field> <value name="NUMBER_TO_CHECK"> <shadow type="math_number" id="x/t$m$d~^];:r4t}I7Ed"> <field name="NUM">0</field> </shadow> <block type="get_value_var" id="ANLj5!{994Ci)hom88.J"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="|MY/.~39D.Cmp9UY3x^i"> <field name="VAR" id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="2w^7kbr!a[8QKFzJYD^#"> <field name="COMMENT">Überschuss</field> <next> <block type="control_ex" id=".kIU*93Fp^Kst]u(-)uB"> <field name="TYPE">true</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=":#,/i}!f.kJZ`dOxsIRA"> <field name="VAR" id="$bKg1i(J6[[[jf_Pt0!G">ooMomentanwertÜberschuss</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbN.]ZvNIa.~([%ezG]f"> <field name="BOOL">TRUE</field> </shadow> <block type="math_rndfixed" id="fel784_F!CWA]vohTPJq"> <field name="n">1</field> <value name="x"> <shadow type="math_number" id="*8}]PUg_,p(%Xg4H^R~k"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="f%mD)rl4YnE4r{}e6iIL"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="=yas,#u16i{Agyuo2W]R"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="Gnbd4RIK-3QGdh$}c}RZ"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="*H]1G16xXC(:rLTdG)(}"> <field name="VAR" id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="ecc^M9|X$]S`f6vCpERb"> <field name="NUM">-1</field> </shadow> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="(sLcC0e}o~#tAT}.)v{b"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="#jEWHj8OYUM*~Z8^X0pz"> <field name="TYPE">true</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="||9MAx5iNX]`n/q}$w%v"> <field name="VAR" id="at6C8ry#oR/wh(q!{hHK">ooMomentanwertEigenverbrauch</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_rndfixed" id="Gou3meWE5o6J)=Qx^vDY"> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="raqa:GJg8q)|?B%Qk_@u"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="t$dt,hI0E^33_ijk.rO7"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="h6UYt4sPO+@3v(=py6*9"> <field name="VAR" id="izkgJG]@WDEEpP!/*8~;">ioMomentanwertPV</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="@`{=eYz*f@COoX_#*{D!"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="AGeeCoGSTt-|{s?U,;,("> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="xlO43#PZ-(-/Z^iiou1S"> <field name="VAR" id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="~L}wlG$}`NutF(1T(+mO"> <field name="NUM">0</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="comment" id="~Tl6}SiA[B?/Ge[Aj4qq"> <field name="COMMENT">kein Überschuss</field> <next> <block type="control_ex" id="$Y09Eao=FiDW[li/1SS."> <field name="TYPE">true</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=")5*ui8M7uJ.$up)HYc3%"> <field name="VAR" id="$bKg1i(J6[[[jf_Pt0!G">ooMomentanwertÜberschuss</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="gL)cfGa^S!hf+!4jQk_q"> <field name="BOOL">TRUE</field> </shadow> <block type="math_number" id="+[VAmghxH8cfn:GTB8OT"> <field name="NUM">0</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="XrZrD6JbC.B9k}eMA!hN"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="~%%1IlP6yy@1%X(r*[GD"> <field name="TYPE">true</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="/)e[0Z-xOx.}5wG-jxl#"> <field name="VAR" id="at6C8ry#oR/wh(q!{hHK">ooMomentanwertEigenverbrauch</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_rndfixed" id="H7sIENM!lQ-t6.(vs;,O"> <field name="n">1</field> <value name="x"> <shadow type="math_number" id="pg(gf-9:B8Ei$h?XGSv."> <field name="NUM">3.1234</field> </shadow> <block type="get_value_var" id="rb}@?LLu^pn_ohK}Fb`$"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="LP/b]@dl@+XNn@HA:K46"> <field name="VAR" id="izkgJG]@WDEEpP!/*8~;">ioMomentanwertPV</field> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="`m`2MG7`;6SHfuWZ]5gQ"> <field name="NUM">0</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="procedures_callcustomnoreturn" id="4NPS7?bggL$oA0y|8/UM"> <mutation name="kWh berechnen"> <arg name="idPower"></arg> <arg name="idEnergy"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="!~hSC9J3Uf6#0{Ar#%|v"> <field name="VAR" id="UfA3$=x:6j@Q7/--/`2h">ooMomentanwertErtrag</field> </block> </value> <value name="ARG1"> <block type="variables_get" id="oE|bP5,^{5*:2Bifm=ye"> <field name="VAR" id=";VhS{UF5HVCr`X)~]K{T">ooEnergieErtrag</field> </block> </value> <next> <block type="procedures_callcustomnoreturn" id="JkjewDAT~3^{cj*I[0#J"> <mutation name="kWh berechnen"> <arg name="idPower"></arg> <arg name="idEnergy"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="60/Dc(/nzA^tLjM=+_a}"> <field name="VAR" id="?UBsG=y}eGCj9#{/%}JJ">ioMomentanwertNetz</field> </block> </value> <value name="ARG1"> <block type="variables_get" id="5o{hbOnwC!#l4j9D1i,$"> <field name="VAR" id="p0wl^WGra1tD0aEf5Q}5">ooEnergieNetz</field> </block> </value> <next> <block type="procedures_callcustomnoreturn" id="O3-v19Kw0LHCe}Di*:ep"> <mutation name="kWh berechnen"> <arg name="idPower"></arg> <arg name="idEnergy"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="$Ol%U_BAmg`Z1n_R)Pvh"> <field name="VAR" id="3S6*S2zc7FI;a4U%b.1I">ooMomentanwertGesamtverbrauch</field> </block> </value> <value name="ARG1"> <block type="variables_get" id="1fp6*[7d81{[pJju;ef;"> <field name="VAR" id="llyT,cpBv81et;*xDA?A">ooEnergieGesamtleistung</field> </block> </value> <next> <block type="procedures_callcustomnoreturn" id="1Xf#HNN!9g7Qn?+bmI*="> <mutation name="kWh berechnen"> <arg name="idPower"></arg> <arg name="idEnergy"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="$5S~6Yw^L6jP,CaZ[)v="> <field name="VAR" id="$bKg1i(J6[[[jf_Pt0!G">ooMomentanwertÜberschuss</field> </block> </value> <value name="ARG1"> <block type="variables_get" id="!I#n1|KSvgut?=hBBZGd"> <field name="VAR" id="%z^.9%1Yn=mJlhg{CU[i">ooEnergieÜberschuss</field> </block> </value> <next> <block type="procedures_callcustomnoreturn" id="o^81W3F{e7Qz?Zy^;,20"> <mutation name="kWh berechnen"> <arg name="idPower"></arg> <arg name="idEnergy"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="x6*g04YU;NLgH_11jLYt"> <field name="VAR" id="at6C8ry#oR/wh(q!{hHK">ooMomentanwertEigenverbrauch</field> </block> </value> <value name="ARG1"> <block type="variables_get" id="{t5msqp_#r:}2)3;ZgUn"> <field name="VAR" id="Vi122v6s//L#`,LZNN^r">ooEnergieEigenverbrauch</field> </block> </value> <next> <block type="schedule" id="I00bCdg5aDfH0YCZY^.Z"> <field name="SCHEDULE">{"time":{"exactTime":true,"start":"00:00"},"period":{"days":1}}</field> <statement name="STATEMENT"> <block type="control_ex" id="Lk@v2y7:xWk}b/66hoEe"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="x{kTqkUr=Grc5]FYI1tC"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="b-$ltTD9au58#yRtY1#6"> <field name="VAR" id="llyT,cpBv81et;*xDA?A">ooEnergieGesamtleistung</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="(2zAoc0-2(#YDikxsHs7"> <field name="BOOL">TRUE</field> </shadow> <block type="math_number" id="oY}_%=ngkMIm/~kB29cu"> <field name="NUM">0</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="A]wbzrB3e)4S#OIs+~BQ"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="(WDur9^Ph%U4tPv[Ie_w"> <field name="TYPE">true</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="3LsdOigJ@qvLI3xBjp:="> <field name="VAR" id=";VhS{UF5HVCr`X)~]K{T">ooEnergieErtrag</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_number" id="[yLBAczpsQ,rl3c^H!P0"> <field name="NUM">0</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="zRfEwJ?LeIsxG37!ts=i"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="j:w6xv%_~=%c@an7m3Bw"> <field name="TYPE">true</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="O=bf4/P=|~z^J(-wi2q("> <field name="VAR" id="p0wl^WGra1tD0aEf5Q}5">ooEnergieNetz</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_number" id="N^o~`lX[cH%Tzr+05(Yy"> <field name="NUM">0</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="J5[PRk-5-(~76laKZsG."> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="]?1@zcPlBvl;W4xjX|FG"> <field name="TYPE">true</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="0g9+mQNVrYfCsHfkI.HZ"> <field name="VAR" id="%z^.9%1Yn=mJlhg{CU[i">ooEnergieÜberschuss</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_number" id="l%v`]{cSaKZpVR[Dd.Qn"> <field name="NUM">0</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="s:UY#M~?Lt1(n-`dIU`C"> <field name="NUM">0</field> </shadow> </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> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomnoreturn" id="p|(xFb6nb}3ab{(ZuXW6" x="587" y="1913"> <mutation statements="false"> <arg name="idPower" varid="PkHJv!pTWh5?3nxx]llx"></arg> <arg name="idEnergy" varid="k:x2GxV0yr_4bxE=fy6F"></arg> </mutation> <field name="NAME">kWh berechnen</field> <field name="SCRIPT">Ly9odHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8xNzMwOS9nZWwlQzMlQjZzdC1rd2gtYmVyZWNobmVuLXVuZC1mb3J0bGF1ZmVuZC1zcGVpY2hlcm4vMzg/bGFuZz1kZQ0KDQovL2NvbnN0IGlkUG93ZXIgPSAnamF2YXNjcmlwdC4wLnh4eC5wb3dlcic7ICAvLyBjdXJfcG93ZXINCi8vY29uc3QgaWRFbmVyZ3kgPSAneHh4LmtXaCc7ICAvLyBrV2gNCiANCmNvbnN0IGluaXRpYWxLd2ggPSAwLjA7IC8vIGtXaCBhdCBiZWdpbg0KdmFyIGVuZXJneSA9IDA7DQogDQovLyBFbmVyZ2llLURhdGVucHVua3QgZXJ6ZXVnZW4NCmNyZWF0ZVN0YXRlKGlkRW5lcmd5LCBpbml0aWFsS3doLCB7IHR5cGU6ICdudW1iZXInLCB1bml0OiAna1doJyB9LA0KICAgICgpID0+IGVuZXJneSA9IDEwMDAgKiBnZXRTdGF0ZShpZEVuZXJneSkudmFsDQopOyAvLyBBbmZhbmdzd2VydCBhbnBhc3NlbiAhDQogDQpvbih7IGlkOiBpZFBvd2VyIH0sIGZ1bmN0aW9uIChkcCkgew0KICAgIGVuZXJneSA9IDEwMDAgKiBnZXRTdGF0ZShpZEVuZXJneSkudmFsOyAvL2V2dGwuIHZvcmhhbmRlbmVuIFdlcnQgbGVzZW4NCiAgICBlbmVyZ3kgPSBlbmVyZ3kgKyBkcC5vbGRTdGF0ZS52YWwgKiAoZHAuc3RhdGUudHMgLSBkcC5vbGRTdGF0ZS50cykgLyAzNjAwMDAwOyAvLyBXaA0KICAgIHNldFN0YXRlKGlkRW5lcmd5LCBNYXRoLnJvdW5kKGVuZXJneSkgLyAxMDAwLCB0cnVlKTsgLy8ga1doIG1pdCAzIE5hY2hrb21tYXN0ZWxsZW4NCn0pOw0K</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml>
Eventuell habe ich an der ein oder anderen Stelle einen Denkfehler... die wechselnden Vorzeichen machen es nicht gerade leichter... Die Berechnung der kWh habe ich bisher nicht auf Plausibilität geprüft und der Link der (angepassten) Quelle steckt im Skript. Der Sourceanalytics Adapter ist für mich irgendwie overkill
- Blockly:
-
- Blockly
Benachrichtigung per Telegram wenn Mindest-Überschuss länger als 10 Minuten überschritten ist. Danach wird die Nachricht immer wieder aktulalisiert (bearbeitet). Wird der Mindest-Überschuss länger als 3 Minuten unterschritten, wird die Nachricht gelöscht. Danach geht das Ganze wieder von vorne los. (weiß gerade nicht wie sich das mit dem Timer "nächste Warnung" verhält - das ist ein gewachsenes Skript)
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="+uo*h9CiBC;Z6Tu6|]{-">url</variable> <variable id="t735B|g/I)mmA`_=bQf=">Token</variable> <variable id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</variable> <variable id="[cm_4R;3)cv_BI@^],fP">ÜberschussMin</variable> <variable id="V+u7Uf#;)B4bY+w!q#b:">aktiv</variable> <variable id="Oz_`bUcn~F`@Yx~KX@t6">nächsteAktualisierung</variable> <variable type="timeout" id="minimum-zeit unterschritten">minimum-zeit unterschritten</variable> <variable type="timeout" id="nächste Warnung">nächste Warnung</variable> <variable type="timeout" id="Benachrichtigung">Benachrichtigung</variable> <variable id="UNwn*kL_@D)gcE`$^mO+">ChatID_old</variable> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="comment" id="`]K4h=n0i;nQJm.g0OXj" x="2213" y="38"> <field name="COMMENT">PV Überschuss</field> <next> <block type="variables_set" id="SPfX1fy;_JV}@tLLLZ}n"> <field name="VAR" id="t735B|g/I)mmA`_=bQf=">Token</field> <value name="VALUE"> <block type="get_value" id="tia~F+^mE`V^WFLpJ]Wt"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Telegram.Token</field> </block> </value> <next> <block type="variables_set" id="pd`+}c6k}RdpIR%g4ty6"> <field name="VAR" id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</field> <value name="VALUE"> <block type="text" id="E~g|;]jTA[oq#Yz0mR@#"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="#dy/OwG@e1Gn|=N4qwps"> <field name="VAR" id="[cm_4R;3)cv_BI@^],fP">ÜberschussMin</field> <value name="VALUE"> <block type="math_number" id="rcwze5X=CEl8nT|9w[Ne"> <field name="NUM">50</field> </block> </value> <next> <block type="variables_set" id="-I.7v}2OO!agGHfnCF`~"> <field name="VAR" id="V+u7Uf#;)B4bY+w!q#b:">aktiv</field> <value name="VALUE"> <block type="logic_boolean" id="o;=Ft3,44yukRdj~G?b~"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="`r-=kwrDStf)Yy!^{#fE"> <field name="VAR" id="Oz_`bUcn~F`@Yx~KX@t6">nächsteAktualisierung</field> <value name="VALUE"> <block type="math_number" id="S~aBFESzn3NFyq3;x:bU"> <field name="NUM">0</field> </block> </value> <next> <block type="on_ext" id="YzNQ9Xi|,Zh/V1/8{s89"> <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="gZimHH#8!L?jYTs)zsi-"> <field name="oid">0_userdata.0.PV.MomentanwertÜberschuss</field> </shadow> </value> <statement name="STATEMENT"> <block type="debug" id="W^E5Um3?2:yK=pF}ZY%q"> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text" id="9G|vv.L5YkXn]G0o{+KQ"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="(38u(qHq6[?}kkNJ(~hG"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="zjj{O6r2}[qfrl*owp?f"> <field name="TEXT">Benachrichtigung aktiv: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="p83c%6d!NT{3`]i;Ypgs"> <field name="VAR" id="V+u7Uf#;)B4bY+w!q#b:">aktiv</field> </block> </value> <value name="ADD2"> <block type="text" id="{GnY!ecGz^3{-n/K9zEk"> <field name="TEXT">; Momentanwert: </field> </block> </value> <value name="ADD3"> <block type="on_source" id="i@W)6eFLrwbMFxXr$~9~"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="controls_if" id=")zjaK4dsMbvEb:e%CzF!"> <mutation elseif="3"></mutation> <value name="IF0"> <block type="logic_operation" id="KjHv~A/949Fv:YQM6fto"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="*p#pWZD_V`eowQoyO$5N"> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="52^;sStuV4blN{:3!ml-"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="variables_get" id="I%YvNA^e.H6Urv6l2sXM"> <field name="VAR" id="[cm_4R;3)cv_BI@^],fP">ÜberschussMin</field> </block> </value> </block> </value> <value name="B"> <block type="logic_negate" id="YmR9cAnBuNT%mC.WwRun"> <value name="BOOL"> <block type="variables_get" id="XOd+~acw+EeaEGIOYUu@"> <field name="VAR" id="V+u7Uf#;)B4bY+w!q#b:">aktiv</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="j[nFIS)6A2Ie`TyY4myH"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="|2.iafrWY#ZzJ-#oh+)P"> <field name="TEXT">Überschuss</field> </block> </value> <next> <block type="timeouts_cleartimeout" id="zHdYa8zYHU~jnx-x:@nL"> <field name="NAME">minimum-zeit unterschritten</field> <next> <block type="variables_set" id="s|CSMlA/W.o,E@L/@zhq"> <field name="VAR" id="V+u7Uf#;)B4bY+w!q#b:">aktiv</field> <value name="VALUE"> <block type="logic_boolean" id="2)1qcLKEf@M/QBcoPkiu"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_settimeout" id="AR[H#0h]{dssZgyT@ViB"> <field name="NAME">nächste Warnung</field> <field name="DELAY">15</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="variables_set" id="vct%etLLl,G!ZQ_FFs.8"> <field name="VAR" id="V+u7Uf#;)B4bY+w!q#b:">aktiv</field> <value name="VALUE"> <block type="logic_boolean" id="UZO9K8,v-^,m{dD@-25h"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="debug" id="TYsUK*8NYmtmO8udIJC@"> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="!yWMD;u#|U{A@o)nZ%ak"> <field name="TEXT">nächste Warnung kann kommen</field> </block> </value> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="8DSXrbtsM9;o;LKq@ID`"> <field name="NAME">Benachrichtigung</field> <field name="DELAY">10</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="debug" id="fF$MIEs@DZN}.Dr6mWdh"> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="/oiwNq69oO:w!N0y`#qc"> <field name="TEXT">Benachrichtigung (zeitverzögerte)</field> </block> </value> <next> <block type="controls_if" id="JfVueB1$i?*Mabtv,G@_"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="{+rdLns6hK,J{y0Hh!zY"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id=",KkV#(C]EI)^S[M/brw*"> <field name="VAR" id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</field> </block> </value> <value name="B"> <block type="text" id="R7o6ajypmdhH%`oj$QLu"> <field name="TEXT"></field> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id=".KG5zXOq`2aPXSTwix;y"> <field name="INSTANCE"></field> <field name="LOG">debug</field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text"> <field name="TEXT">Vorsicht WW ist bei °C</field> </shadow> <block type="text_join" id="1q)#|2D9M^YSeYDva!dQ"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="0/gGP~oxeP_4ak9Yr58m"> <field name="TEXT">PV-Überschuss: </field> </block> </value> <value name="ADD1"> <block type="on_source" id=":t9Tpf{x1kw/jRAmqV-E"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="variables_set" id="~8O9B)6:$SP1Y3rc/_:x"> <field name="VAR" id="Oz_`bUcn~F`@Yx~KX@t6">nächsteAktualisierung</field> <value name="VALUE"> <block type="math_arithmetic" id="e5lCBAdl:tw8`e;uW:g?"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="on_source" id="wMzhn@fOF3!^lb]Yk]TJ"> <field name="ATTR">state.ts</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="Nj7vD/D!*rI*@p;UdVC3"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="Q[F=:q;AWWkE?dsSO6Di"> <field name="NUM">1000</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="6nW20c4^%:Jysw0A-$i*"> <field name="NUM">30</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="comment" id="H90jwd1O]T9w*vM7.|#J"> <field name="COMMENT">MessageID für später merken</field> <next> <block type="timeouts_settimeout" id="#!b{mjY%}JF3r6T;Rj[6"> <field name="NAME">timeout</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="variables_set" id="^CZ{$5}1M-^(5]:d=[ei"> <field name="VAR" id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</field> <value name="VALUE"> <block type="get_value_var" id="$b1ImQg_SiDH`#A6L9T7"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="_%2i%0gQYmWIOJ_z0QBz"> <field name="TEXT"></field> </shadow> <block type="field_oid" id="%6Y`/R^ix0}6G:HgNZXZ"> <field name="oid">telegram.0.communicate.botSendMessageId</field> </block> </value> </block> </value> <next> <block type="variables_set" id="Im!5B9gQ@Z7Rpjj#)w@w"> <field name="VAR" id="UNwn*kL_@D)gcE`$^mO+">ChatID_old</field> <value name="VALUE"> <block type="get_value_var" id=";@@xRpp=^$5icRd*2Q#R"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="field_oid" id="Gfwkp!J7JMiJNI`):.la"> <field name="oid">telegram.0.communicate.botSendChatId</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="debug" id="7)y`=f09@b4cArc:^3h9"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="ZPD$1|_|R%_-CF_9k)/j"> <field name="TEXT">MessageID_old ist nicht leer!!!!</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="sH*,MP%A(B1UdZuvv~GR"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id=")gD@SJYz;4TZ+zY(wc7s"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="ML7uK_3QYuR//_8x%c+X"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="CXI9kLd(/7*Jf4habbl^"> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="szvmyZHtlNo)c(mUy0Q-"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="variables_get" id=")I2GZ7TTSr=rQlIIbsHI"> <field name="VAR" id="[cm_4R;3)cv_BI@^],fP">ÜberschussMin</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="B[Wk#t79my0{$_v;]`kp"> <field name="VAR" id="V+u7Uf#;)B4bY+w!q#b:">aktiv</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="Xmb~|,r3UO*/0K,DrdQ="> <field name="OP">NEQ</field> <value name="A"> <block type="variables_get" id="YIaz.X?RG;gF!:z$A+~v"> <field name="VAR" id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</field> </block> </value> <value name="B"> <block type="text" id="60?SN$jwQb-_j4GU^~3~"> <field name="TEXT"></field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="h5$qN;rEDymEXg/Ls!AH"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="Y(APA7CD%a1U#Y$a?qS9"> <field name="VAR" id="Oz_`bUcn~F`@Yx~KX@t6">nächsteAktualisierung</field> </block> </value> <value name="B"> <block type="on_source" id="Z*zw,ryx7CD/@|@v.]K~"> <field name="ATTR">state.ts</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="debug" id="9YyYL@FO8*,)-_:KO-J%"> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text" id="I]RG6k~V-xqO9g/?r#m]"> <field name="TEXT">test</field> </shadow> <block type="text" id="k9L6%$Nz4ok[OZ89_K*j"> <field name="TEXT">sonst falls message wurde gesendet, Wert aktualisieren.</field> </block> </value> <next> <block type="timeouts_cleartimeout" id="7OE5C[:4MEAgbF..pGmn"> <field name="NAME">minimum-zeit unterschritten</field> <next> <block type="variables_set" id="XwF:)6dY84JyN}BRG?P("> <field name="VAR" id="Oz_`bUcn~F`@Yx~KX@t6">nächsteAktualisierung</field> <value name="VALUE"> <block type="math_arithmetic" id="l|e*4uj5SCH{{ylFgh:s"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="Eq5@Y9VzUr}dSZ+yv~t%"> <field name="NUM">1</field> </shadow> <block type="on_source" id="2*koF3/2pv*-]o,I8D1O"> <field name="ATTR">state.ts</field> </block> </value> <value name="B"> <shadow type="math_number" id="0+N:yZJUl+WEudT3yav)"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="3h4NIV%7pcFiOV^Zqzgs"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="qo)=$$d1NiH%5lN($VSC"> <field name="NUM">1000</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="?*Cx!gU:]T)2,sKq2+t,"> <field name="NUM">15</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="request" id="yh6{#(a!a*zzX.S0O}Jl"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG">debug</field> <value name="URL"> <shadow type="text"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="d`hP9NFCs/O)sRN(5iWy"> <mutation items="8"></mutation> <value name="ADD0"> <block type="text" id="HayC](:j7qa~vXX*Cz*="> <field name="TEXT">https://api.telegram.org/bot</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="5v`R4$$SCz*zHBVTrHR%"> <field name="VAR" id="t735B|g/I)mmA`_=bQf=">Token</field> </block> </value> <value name="ADD2"> <block type="text" id="Ddi{D+zm-4^US]NQkKak"> <field name="TEXT">/editMessageText?chat_id=</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="Cyp+gOM35bp]pi{tonN."> <field name="VAR" id="UNwn*kL_@D)gcE`$^mO+">ChatID_old</field> </block> </value> <value name="ADD4"> <block type="text" id="*-G3B3hFN5w8Em(X]1xf"> <field name="TEXT">&message_id=</field> </block> </value> <value name="ADD5"> <block type="variables_get" id="nj%U(!7{t;K@~NXE,qx/"> <field name="VAR" id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</field> </block> </value> <value name="ADD6"> <block type="text" id="(jvJ80p1|hCYv|r2:sCc"> <field name="TEXT">&text=</field> </block> </value> <value name="ADD7"> <block type="procedures_callcustomreturn" id="P+G[F^$b3kYUu0}6/-4)"> <mutation name="URIencode"> <arg name="url"></arg> </mutation> <value name="ARG0"> <block type="text_join" id="SM8(MQ)c1|w?xjqH;qaO"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="K;e6@]em4{IS6]6+3x/H"> <field name="TEXT">PV-Überschuss: </field> </block> </value> <value name="ADD1"> <block type="on_source" id="ZBo!@07Wskxg)TZmKnK:"> <field name="ATTR">state.val</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF2"> <block type="logic_operation" id="WO4o%(5EKI4M8KD5M;zl"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id=";=AMP;.Z+9R2$uE=U_{l"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="Pe)^F$6jv^Uj/=7!,c5%"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="variables_get" id="pn!_b|pHR@9;PEYw#7r["> <field name="VAR" id="[cm_4R;3)cv_BI@^],fP">ÜberschussMin</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="QN{q/2SF|xNy2va!m@?n"> <field name="VAR" id="V+u7Uf#;)B4bY+w!q#b:">aktiv</field> </block> </value> </block> </value> <statement name="DO2"> <block type="timeouts_settimeout" id="pb9p#UNX+Ic$qTJP#C|d"> <field name="NAME">minimum-zeit unterschritten</field> <field name="DELAY">3</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="debug" id="J+en5BYLuXJ:QOji^q:i"> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="YZ]8$|Hp^iSG*K$M$?L+"> <field name="TEXT">sonst falls kleiner ÜberschussMin und aktiv</field> </block> </value> <next> <block type="debug" id="l7T~Ynz*guM.E;96*B%~"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="a[d!Q.6r9kK+Z!7jS;7-"> <field name="TEXT">Momentanwert wurde mehr als 3min unterschritten, aktiv=falsch, Benachrichtigung und Warnung Timer stoppen</field> </block> </value> <next> <block type="timeouts_cleartimeout" id="4MZ6w%:YKzCaTKqnH9r4"> <field name="NAME">nächste Warnung</field> <next> <block type="timeouts_cleartimeout" id="mOfFb{Po,d1Py^t@mb;@"> <field name="NAME">Benachrichtigung</field> <next> <block type="variables_set" id="zLg9?*u1BBL}^j%a%l?m"> <field name="VAR" id="V+u7Uf#;)B4bY+w!q#b:">aktiv</field> <value name="VALUE"> <block type="logic_boolean" id="Q7#0l)u#tqnj:MLsR^Qk"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="comment" id=")5}dXz#65x)x]o)Q6ct@"> <field name="COMMENT">alte Benachrichtigung löschen</field> <next> <block type="controls_if" id="Io{{EN%TbcMivXNk$VRQ"> <value name="IF0"> <block type="logic_compare" id="^d6+W!})07~kxl_*1?R%"> <field name="OP">NEQ</field> <value name="A"> <block type="variables_get" id="`x|vFuKKk,8r?-@!n}A3"> <field name="VAR" id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</field> </block> </value> <value name="B"> <block type="text" id="1H{xq^3NCjNFP,rdf,sJ"> <field name="TEXT"></field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="Q?74^SGE%*g:+MHK7egq"> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="yp_jIZhMV$X5ic{vt/Z+"> <field name="TEXT">alte Benachrichtigung für neue löschen</field> </block> </value> <next> <block type="request" id="-,[nMtcIh^e8A*n?/PyY"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG">debug</field> <value name="URL"> <shadow type="text"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="CGIN9IYmQkmT)MN.TwvK"> <mutation items="6"></mutation> <value name="ADD0"> <block type="text" id="2%7=ugy#}^2xmN+A/@Sx"> <field name="TEXT">https://api.telegram.org/bot</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="yMD$it.T]Nf5R+^s/!#t"> <field name="VAR" id="t735B|g/I)mmA`_=bQf=">Token</field> </block> </value> <value name="ADD2"> <block type="text" id="x^lrLQ{Zkm(Oy}il(%#/"> <field name="TEXT">/deleteMessage?chat_id=</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="[Dj.{K^j/_TA!QpA];Zl"> <field name="VAR" id="UNwn*kL_@D)gcE`$^mO+">ChatID_old</field> </block> </value> <value name="ADD4"> <block type="text" id="R!%rFAYt7l6lI-:365#0"> <field name="TEXT">&message_id=</field> </block> </value> <value name="ADD5"> <block type="variables_get" id="%!(/hS`v6m|mm0U8D$[W"> <field name="VAR" id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</field> </block> </value> </block> </value> <next> <block type="variables_set" id="BjZmQFa%y=ix~9V{M|rE"> <field name="VAR" id="OY|-nxmyPkjf5lu#3k4b">MessageID_old</field> <value name="VALUE"> <block type="text" id="?C83XxOuf5fv0iP0hNmq"> <field name="TEXT"></field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> <value name="IF3"> <block type="logic_compare" id="0^24VPv!_^,UGJ|hYDr("> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="~nC%oAT$ETg$NjK;HW8."> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="variables_get" id="sCVR[7~XMq7d[FzfITk6"> <field name="VAR" id="[cm_4R;3)cv_BI@^],fP">ÜberschussMin</field> </block> </value> </block> </value> <statement name="DO3"> <block type="timeouts_cleartimeout" id="[g*JMoCpS(gxV2qmpHj6"> <field name="NAME">minimum-zeit unterschritten</field> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomreturn" id="Av)?|}5mmDBPYHIw~:L;" x="3263" y="1738"> <mutation statements="false"> <arg name="url" varid="+uo*h9CiBC;Z6Tu6|]{-"></arg> </mutation> <field name="NAME">URIencode</field> <field name="SCRIPT">dXJsPWVuY29kZVVSSUNvbXBvbmVudCh1cmwpOw0KcmV0dXJuIHVybDs=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml>
Um deinen Wunsch einer Nulleinspeisung kannst du dich an das zweite Skript anlehnen und nach einer Überschreitung deines kleinsten Verbrauchers bzw. auch nach unterschiedlichen Kombinationen der Verbraucher die eben zuschalten.
Am besten wäre z.B. deine Poolpumpe mit einem Frequenzumrichter oder deine Poolheizung mit einem Dimmer auszustatten und darüber dessen Leistung linear zum Überschuss zu regeln. Aber ob das irgendwie wirtschaftlich ist und die Kosten irgendwann mal wieder reinholt, mag ich bezweifeln.
In Zukunft würde ich auch wie du im ersten Schritt einzelne Verbraucher zu- und abschalten, da bin ich aber noch nicht so weit. Handhabe es daher so, dass ich die Spül- Waschmaschine und ggf. Trockner dann einschalte wenn ich die Benachrichtigung bekomme.
Da man den meisten Überschuss im Sommer hat, bietet es sich an diesen in die Pooltechnik zu schieben, oder eben z.B. in Kühl und Gefrierschrank. Mein Gefrierschrank hat einen Inverter-Kompressor, welcher die Leistung nach Bedarf regelt. Ob es dafür eine Lösung gäbe die Leistung hochzuschrauben wenn es Überschuss gibt? - Blockly
-
Hallo Leute,
vielen Dank für eure Anregungen, ich muss mich jetzt erstmal einarbeiten.
Nch ne ggf blöde Frage:Ich schreibe in ne mariaDB per sql Adapter täglich den Gesamtertrag und kann dies auch als Diagramm anzeigen in der VIS.
Ich blicke aber grade überhaupt nicht, wie ich mir den Tagesertag rausrechnen könnte.Ich dachte eig an folgendes in Blockly:
- 2 Variablen mit Wert aus SQL von heute und gestern füllen und Differenz bilden.
Kann mir da ggf jemand einen Schubser geben?
-
@jheide zu Blockly kann ich leider nichts sagen. Ich mache es so wie Du beschrieben hast in JS und ich arbeite auch noch mit history.
- Jeden tag um 23:59 (oder so) wird der Speicherwert von gestern vom aktuellen Wert von heute ("jetzt") subtrahiert.
- Das bildet den heutigen Tagensverbrauch und
- wird in den entsprechenden Datenpunkt gespeichert.
- Dann wird der aktuelle Wert in den Zwischenspeicher für gestern eingespeichert
Mittlerweile gibt es aber Adapter, die genau sowas machen
- Statistik Adapter https://github.com/iobroker-community-adapters/ioBroker.statistics
- Sourceanalytics Adapter https://github.com/DrozmotiX/ioBroker.sourceanalytix
-
Hast Du Dir mal sourceanalytix angesehen? Der rechnet die Werte aus und dann kannst Du sie bequem in die DB schreiben...
-
sourceanalytiks scheitert beim npm audit fix irgendwie
-
npm audit fix
meidet man ja auch. Macht mehr kaputt als ganz, wenn es blöd läuft. -
@h07d0q Hallo zusammen,
ich möchte gerne das Thema Solarman Cloud nochmal aufnehmen.
https://www.solarman.cn/english.htmlIch habe einen Huayu HY-600-Pro womit ich auch soweit zufrieden bin möchte aber gerne meine Daten in Grafana darstellen.
https://www.huayu-energy.com/cpxq?product_id=43&menu_id=113Ich habe von Solarman eine API Doku bekommen und ein Key und API ID.
Leider fehlen meine Kenntnisse in diesem Bereich.
SolarmanOpenAPI(v1.1.7)-EN.pdf
SOLARMAN3.0 OPEN API Collection-DEMO.postman_collection.jsonIch habe auch mehre Projekt auf Git gesehen welche Interessant aussehen, ich diese aber bedauerlicherweise durch fehlende Kenntnis nicht alleine umsetzten kann.
https://github.com/search?q=solarmanMein letzter Versuch war das GITHUB Projekt via mqtt, hier werden die Daten aber leider nur alle 5min gesendet. Und ich hab es auch nicht zum Laufen bekommen. Siehe Issu.
https://github.com/mpepping/solarman-mqtt
https://github.com/mpepping/solarman-mqtt/issues/11j3sk0 created this issue in mpepping/solarman-mqttclosed Error #11