Hallo, ich werde Morgen mal dein Script testen als Spaß an der Sache und Berichten da ich die selben Ausgangspositionen wie du habe nur halt viel kleinere PV, aber auch Fronius mit Smartmeter und auch Tuya Steckdose.
Aber ich bin mit meinen Blockly zum Laden absulut zufrieden macht was es soll , das ist der heutige Tag gewesen leider ohne Sonnenschein.
NEWS
Best posts made by 19bobby65
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
Latest posts made by 19bobby65
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
Hallo. Ja dürfte funktionieren aber mein Akku ist schon voll und die einspeisung auch zu hoch um zu sehen ob es auch wirklich regelt, ist gleich auf 2000 gesprungen und da steht es bis jetzt.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
Scripte und Blockly waren alle deaktiviert, ich hab deinen teil in den Script von Ralf ausprobiert dieses hier
const vPower = 'fronius.0.meter.0.PowerReal_P_Sum'; // Pfad zur Leistung des Fronius Smartmeters const Schalter = 'tuya.0.072000918XXXXXXXXX.1'; // Pfad zur Tuya Steckdose let timeout = null; const ecoflowObject = "0_userdata.0.ecoflow.app_16994463680XXXXXX_DAEBZ5ZXXXXXX_thing_property_set.writeables.slowChgPower"; // Pfad zum Ecoflow-Objekt let intervalId = null; // Setzen Sie den Wert im iobroker-Objekt auf 200 bei jedem Neustart des Skripts setState(ecoflowObject, 200); // Funktion zum Abrufen und Umrechnen des Werts vom Fronius Smartmeter alle 60 Sekunden const EINSCHALT_POWER = 300 const AUSSCHALT_POWER = 0 let powerValue = 0 intervalId = setInterval(function () { const froniusValue = Math.floor(getState(vPower).val); // Wert vom Fronius Smartmeter const aktuelle_powerValue = getState(ecoflowObject).val const Entscheidungswert = (froniusValue * -1) + aktuelle_powerValue if (Entscheidungswert >= EINSCHALT_POWER){ powerValue = Entscheidungswert } if (powerValue > 0 && Entscheidungswert > AUSSCHALT_POWER){ powerValue = Entscheidungswert } if (Entscheidungswert <= AUSSCHALT_POWER){ powerValue = 0 } let setValue = powerValue //Wenn du die Werte in festen Schritten setzten wills, z.b. 100 w schritte dann kommentiere das hier noch ein: //setValue = setValue - (setValue % 100) if (setValue < 200) setValue = 200 if (setValue > 2000) setValue = 1999 setState(ecoflowObject, setValue); // Wert in das Ecoflow-Objekt schreiben }, 60000); // alle 60 Sekunden // Funktion zum Setzen des iobroker-Objekts auf 200, wenn die Tuya-Steckdose ein- oder ausgeschaltet wird function setEcoflowObject() { setState(ecoflowObject, 200); } on(Schalter, function(dp) { setEcoflowObject(); }); on(vPower, function(dp) { if (dp.state.val <= -400) { // Überschussleistung in Watt if (timeout) { clearTimeout(timeout); timeout = null; } setState(Schalter, true); // Steckdose einschalten setEcoflowObject(); // Setzen Sie das iobroker-Objekt auf 200, wenn die Tuya-Steckdose eingeschaltet wird } else if (dp.state.val >= 50) { if (!timeout) { timeout = setTimeout(function() { setState(Schalter, false); // Steckdose ausschalten nach 2 Minuten setEcoflowObject(); // Setzen Sie das iobroker-Objekt auf 200, wenn die Tuya-Steckdose ausgeschaltet wird timeout = null; }, 120000); // Verzögerung von 2 Minuten } } });
Wie gesagt die Tuya Steckdose zum Laden wurde eingeschaltet startet mit 200 Watt ladung geht dann für 1 Sekunde auf den Wert vom Überschuss waren bei mir dann 1754 Watt und dann gleich wieder zurück auf 200 Watt, ich glaub das funktioniert nur wenn der Überschuss schon sehr hoch liegt das er da nicht mehr zurück springt auf die 200 Watt, aber da würde man zu viel herschenken und nicht Laden.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Hallo, funktioniert leider auch nicht, die AC leistung wird zwar angepasst und geschrieben aber nur für eine Sekunde fällt dann aber sofort immer wieder auf 200 Watt zurück.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
Bei mir regelt dein Script nicht nach es schaltet die Tuya Steckdose ein und ladet dann mit 200 Watt aber ich hab schon 1200 Watt überschuss und das Script regelt nicht nach und bleibt auf die 200 Watt.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
Hallo, ich werde Morgen mal dein Script testen als Spaß an der Sache und Berichten da ich die selben Ausgangspositionen wie du habe nur halt viel kleinere PV, aber auch Fronius mit Smartmeter und auch Tuya Steckdose.
Aber ich bin mit meinen Blockly zum Laden absulut zufrieden macht was es soll , das ist der heutige Tag gewesen leider ohne Sonnenschein. -
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="z?RSsC$V#o)f[Uf=J_F.">pv</variable> <variable id="8jAy3,$^XwJf~/#-uIEU">eigenverbrauch</variable> <variable id="tANO5)Fws;PbejQI|6_K">ueberschus</variable> </variables> <block type="schedule" id="/.@G|5ZDL/g|}6Y(TVn^" x="-337" y="-362"> <field name="SCHEDULE">{"time":{"start":"sunrise","end":"sunset","mode":"minutes","interval":1},"period":{"days":1},"valid":{"from":"19.09.2023","to":""}}</field> <statement name="STATEMENT"> <block type="variables_set" id="g%2?UVY^7Q,sLL1uB4_@"> <field name="VAR" id="z?RSsC$V#o)f[Uf=J_F.">pv</field> <value name="VALUE"> <block type="get_value" id="cq%YBwfza@)f7ec{bAL^"> <field name="ATTR">val</field> <field name="OID">fronius.0.powerflow.P_PV</field> </block> </value> <next> <block type="variables_set" id="%31}bYLyZ!@!T2pT;X|M"> <field name="VAR" id="8jAy3,$^XwJf~/#-uIEU">eigenverbrauch</field> <value name="VALUE"> <block type="get_value" id="DCr~sOj3]h]G[t_W}:|j"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Eigenverbrauch</field> </block> </value> <next> <block type="variables_set" id="PTjbb3PFLe}:!2|qt@=|"> <field name="VAR" id="tANO5)Fws;PbejQI|6_K">ueberschus</field> <value name="VALUE"> <block type="math_arithmetic" id=".-xW]_d#vw]?s,Y.@Y4."> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="*ODotjCrz/_1P[9tC0$z"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="g6wh6Yc{iA)/i?wswu6K"> <field name="VAR" id="z?RSsC$V#o)f[Uf=J_F.">pv</field> </block> </value> <value name="B"> <shadow type="math_number" id="lY79g[Wo-C3Mh(A.GJAF"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="vKhaHdbCULV^MCID;HZ{"> <field name="VAR" id="8jAy3,$^XwJf~/#-uIEU">eigenverbrauch</field> </block> </value> </block> </value> <next> <block type="controls_if" id="$KrntQhU)rR[{Jl?5~Xz"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="s]bQU5IFZC9|A(rIHY|W" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="sA+ZhIk3`dX5ZF%R8yrt"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="hQT_czZI~WzhPSQlHTv3"> <field name="VAR" id="tANO5)Fws;PbejQI|6_K">ueberschus</field> </block> </value> <value name="B"> <block type="convert_tonumber" id="j^3{5)ge!1//_QlJcTM_"> <value name="VALUE"> <block type="math_number" id=":`:9.H0~|4dJ+@#kgd@%"> <field name="NUM">250</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="/V?/{9u*P-u%AU=KaaIO"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="%RX?N$P;s_bGHl3b}Tp/"> <field name="ATTR">val</field> <field name="OID">tuya.0.0620008184f3eb85a03d.1</field> </block> </value> <value name="B"> <block type="logic_boolean" id="x+(jxI:R]ArJwQsdn/oe"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="zBiqXDkFElLS2X@0ci2Z"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">tuya.0.0620008184f3eb85a03d.1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="4J:`UPTh(0N=6M2n1h8)"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="y7gFBI~Sl1;upLRsUfko" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="i~dBl(E6XD=H.uRn~fBH"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="wR3cwB)f;|^RJhFIZeC_"> <field name="VAR" id="tANO5)Fws;PbejQI|6_K">ueberschus</field> </block> </value> <value name="B"> <block type="convert_tonumber" id="O6fR+|r!yr5q7?XTFZ?g"> <value name="VALUE"> <block type="math_number" id="kG4Ph?*3F$q_[45V@Ku*"> <field name="NUM">5</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="xVPLuD{`xomav}V_@RE3"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=".Oi//vv9Q:n6bWm(m#)n"> <field name="ATTR">val</field> <field name="OID">tuya.0.0620008184f3eb85a03d.1</field> </block> </value> <value name="B"> <block type="logic_boolean" id="!KDe7nC{+kKlP6,Z^vmU"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="TS5NneGqaTO|#E)kkB=O"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">tuya.0.0620008184f3eb85a03d.1</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="%!q^MjX,:zdI+)nI8l2|"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="update" id="Z2D!Q](VIi/e3L=^Bn^@"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="N!9FHOuUmBWMRDQ`-LGu"> <value name="VALUE"> <block type="math_number" id="Gj}@r![*8A4-*Ai$$ej-"> <field name="NUM">100</field> </block> </value> </block> </value> <next> <block type="control" id="kqUQK7E]5%Qc)Y`{lFHJ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.ecoflow.app_1699446398039774562_DAEBZ5ZE6280131_thing_property_set.writeables.slowChgPower</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id=",4gy=A:Gucd5W~JU?K_+"> <value name="VALUE"> <block type="math_number" id="O0O[XjW*8?!$}muvC7hj"> <field name="NUM">100</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="schedule" id="~{)0dhBI=@]Y^nrQTf)K"> <field name="SCHEDULE">{"time":{"start":"17:02","end":"17:05","mode":"minutes","interval":1},"period":{"days":1}}</field> <statement name="STATEMENT"> <block type="controls_if" id="Rd7HrS?G6XhPgXriPoIO"> <value name="IF0"> <block type="logic_compare" id="nd4@mxqyvYz#-CxSU#88"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="VIv)[[iy9{$7N%qD{u:F"> <field name="ATTR">val</field> <field name="OID">tuya.0.0620008184f3eb85a03d.1</field> </block> </value> <value name="B"> <block type="logic_boolean" id="~*2HOA[RepI^2oO%wv%T"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="X#+Ev)+/LOrm=5QCO+]v"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">tuya.0.0620008184f3eb85a03d.1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="559fu-Y1o!Ciw:r$Ls*_"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="on_ext" id="wutz@-^x{JMv1l`jlU5`"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="%30Ret=}C/HjSe^nO=4z"> <field name="oid">0_userdata.0.Datenpunkte.Netzeinspeisung</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="]Qzh`7w3Hd(vmR!4iYeU"> <value name="IF0"> <block type="logic_operation" id="tNsYkXQH?w$cC%{)1,Z/" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="niQ#G|rZd^M.kQKAl8_m" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id=":NT?7+^;uNnF@LH([p!Y"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=";33=H?#xLD7y!8eM%ZnH"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Netzbezug</field> </block> </value> <value name="B"> <block type="math_number" id="AW|n;ik=a`J;2Txhg,I3"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="FagzWE.m8B5QyG+5!gY$"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id=".b|Y(p%046wHd5A~6?y3"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Netzeinspeisung</field> </block> </value> <value name="B"> <block type="convert_tonumber" id="BZ-^=rd}H[V?uQP)4*4/"> <value name="VALUE"> <block type="math_number" id=";^;mGkMF,Ma[v//vygh9"> <field name="NUM">300</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="zMf:t@c2.elAGPQJHsjL"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="Aja1vYWtDxXeY,M7kN~X"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> </block> </value> <value name="B"> <block type="math_number" id="lpcpra$3)Ln;8xwEFDjq"> <field name="NUM">2000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="@A@f9dw4zDQYVaPMPi~,"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="Aa1m;N5wd~0,n}/aG(?q"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="BG`YHIr@apG4;{ai^!#n"> <field name="NUM">1</field> </shadow> <block type="get_value" id="C-~O$)|3[Yg2.9(,{eL."> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> </block> </value> <value name="B"> <shadow type="math_number" id=":UC1-vH)-a_48Z(pp0-a"> <field name="NUM">100</field> </shadow> </value> </block> </value> <next> <block type="control" id="RNsweT1begokmpsMdq/w"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.ecoflow.app_1699446398039774562_DAEBZ5ZE6280131_thing_property_set.writeables.slowChgPower</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="Jq[!jZ^e*aG*MhJj+%|9"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> </block> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="Sk#tj]/H|wiuR3TNQQ0?"> <value name="IF0"> <block type="logic_operation" id="ppG-mT7o6S^yJU-/K(3J" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="lh3u!,H~291P%0I~gjpY"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="E|8**U~,O/Y9Y1{+dmm#"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Eigenverbrauch</field> </block> </value> <value name="B"> <block type="get_value" id="nPjG#kCa(Mo+`sG1o1z0"> <field name="ATTR">val</field> <field name="OID">fronius.0.powerflow.P_PV</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="]5te~SMy|LG~0T{ZLI5_"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="LzjI?_DT{3iGm8Vn#_Yb"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> </block> </value> <value name="B"> <block type="math_number" id="Pm7SQnN_W?H/vPZ!jC:*"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="xI@#zAR~=)ym@z*Z2{xg"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="!5]fiu??C;YIR_NmlRH:"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="BG`YHIr@apG4;{ai^!#n"> <field name="NUM">1</field> </shadow> <block type="get_value" id="Lh;Q5v7_D7U^:JaV.ykA"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> </block> </value> <value name="B"> <shadow type="math_number" id="q.pvW6a9KHRNBP-rAxpN"> <field name="NUM">100</field> </shadow> </value> </block> </value> <next> <block type="control" id="9Df$]g*A]Am#={;0kD08"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.ecoflow.app_1699446398039774562_DAEBZ5ZE6280131_thing_property_set.writeables.slowChgPower</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="6Y}-M|So/0nPL;2:nx.-"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Datenpunkte.Neuer_Zustand1</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </xml>
Der unter Teil im Script regelt die AC-Ladung in 100 Watt schritten von 0 bis 2000 Watt je nach vorhandenen Überschuss aber ob dir das so etwas hilft keine Ahnung müssen ja auch die Datenpunkte dazu passen bzw. musst du die erstellen.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@ralf77 Hallo, ja Regelung der AC-Ladeleistung nach Überschuss geht.
Ich mach das auch über Tuya Wlan Steckdosen und einen Blockly Script in Iobrocker, funktioniert bei mir bestens, lade meine Ecoflow nur mit AC wenn überschuss vorhanden ist, hab kein Solarpanel angeschlossen.
AC ladung kommt bei mir von der Dachanlage mit einen Fronius Wechselrichter und einspeisung dann mit der ecoflow nur sobald die Dachanlage nicht mehr genug an leistung liefert.