NEWS
Steuerung PV Strom Überschuss verwenden
-
Ich hab das jetzt mal mit der Schwimmbadpumpe probiert (mit ner kurzen Delay-Zeit) und das funktioniert einwandfrei. Die Pumpe schaltet ein, wenn genug Überschuss vorhanden ist und schaltet aus, wenn der Überschuss zu gering ist. Also wird es dann beim Boiler auch funktionieren.
Gibt es auch die Möglichkeit zu steuern welches Gerät zuerst abgeschaltet wird.
Ich habe z.B. zusätzlich zur Schwimmbadpumpe manuell den Boiler hinzugeschaltet, dann war der Überschuss klarerweise auf 0 und es haben dann sowohl Boiler als auch Pumpe ausgeschaltet, obwohl für die Pumpe ohne Boiler noch genug Überschoss da gewesen wäre. Die Pumpe hat zwar dann wieder eingeschaltet, aber kann man das irgendwie verhindern, dass alles ausgeschaltet wird? -
@manfredh-1 sagte: Gibt es auch die Möglichkeit zu steuern welches Gerät zuerst abgeschaltet wird.
Ja, durch unterschiedliche, genügend weit auseinander liegende Grenzwerte. Was soll Vorrang haben?
-
@paul53 said in Steuerung PV Strom Überschuss verwenden:
Ja, durch unterschiedliche, genügend weit auseinander liegende Grenzwerte. Was soll Vorrang haben?
Naja das ist schwierig zu sagen.
Im Grund braucht die Pumpe weniger Strom und würde vermutlich mit dem Überschuss durchkommen, wenn der Boiler nicht laufen würde.Oder bräuchte ich dazu auch den Wert was die PV aktuell gerade erzeugt?
-
@manfredh-1
Also soll der Boiler eher abschalten? Dann ändere die Grenzwerte dafür auf 3000 / 400 W. -
@paul53 said in Steuerung PV Strom Überschuss verwenden:
@manfredh-1
Also soll der Boiler eher abschalten? Dann ändere die Grenzwerte dafür auf 3000 / 400 W.OK, heisst das dann aber auch, dass für das einschalten mind. 3000 Überschuss vorhanden sein müssen oder ?
-
@manfredh-1 sagte: dass für das einschalten mind. 3000 Überschuss vorhanden sein müssen oder ?
Ja, das ist der Preis, den man für die Überschuss-Steuerung mehrerer Verbraucher zahlen muss ... Oder die Steuerung verkompliziert sich stark.
-
@paul53 said in Steuerung PV Strom Überschuss verwenden:
Oder die Steuerung verkompliziert sich stark.
Wäre es irgendwie anders schon möglich? Oder würde es gehen, wenn ich in einem Datenpunkt den Wert hätte, wieviel die PV aktuell erzeugt ?
Weil sobald ich die Kommunikation über Modbus vom Solaredge-Energiezähler mit Modbus hergestellt habe, habe ich dann diesen Wert ja zur Verfügung. -
@manfredh-1 sagte: wenn ich in einem Datenpunkt den Wert hätte, wieviel die PV aktuell erzeugt ?
Ein solcher Datenpunkt bringt nichts, da der Verbrauch sehr unterschiedlich sein kann. Es gibt auch Verbraucher, die selbständig schalten (z.B. Kühlschrank).
-
@paul53
Hallo, ich muss mich jetzt nochmals bei dir melden, weil ich mit diesem Script für das Schwimmbad ein Problem habe. Wenn die PV, so wie jetzt 3500 Watt überschuss hat, schaltet es trotzdem nicht ein.
Wo habe ich da jetzt den Fehler? -
Hallo , bin über den Beitrag gestolpert und möchte das gerne mit meine BKW Anlage nutzen.
Ich möchte das wenn die Leistung von der BKW über 600 W liegt das meine Ladegerät für das Ebike eingeschaltet wird. Das Ladegerät benötigt ca. 160 W. Aktuell habe ich eine Grundlast von 400W wenn niemand zuhause ist. Ich habe das Blocky oben jetzt nachgebaut.Passt das so mit den Einstellungen ?
-
@mymeyer sagte: Passt das so mit den Einstellungen ?
Nein. Der Vergleichswert von
Wert
undvorheriger Wert
muss gleich sein.@mymeyer sagte in Steuerung PV Strom Überschuss verwenden:
Das Ladegerät benötigt ca. 160 W.
Nimm zum Einschalten 580 W und zum Ausschalten 500 W. Da nicht der PV-Überschuss ausgewertet wird, sondern die PV-Leistung, kann die Hysterese kleiner sein als die Leistungsaufnahme des Ladegerätes.
@mymeyer sagte in Steuerung PV Strom Überschuss verwenden:
wenn die Leistung von der BKW über 600 W liegt
Der gesetzliche Grenzwert ist 600 W. Kann der überschritten werden?
-
@paul53 sagte in Steuerung PV Strom Überschuss verwenden:
@mymeyer sagte: Passt das so mit den Einstellungen ?
Nein. Der Vergleichswert von
Wert
undvorheriger Wert
muss gleich sein.@mymeyer sagte in Steuerung PV Strom Überschuss verwenden:
Das Ladegerät benötigt ca. 160 W.
Nimm zum Einschalten 580 W und zum Ausschalten 500 W. Da nicht der PV-Überschuss ausgewertet wird, sondern die PV-Leistung, kann die Hysterese kleiner sein als die Leistungsaufnahme des Ladegerätes.
@mymeyer sagte in Steuerung PV Strom Überschuss verwenden:
wenn die Leistung von der BKW über 600 W liegt
Der gesetzliche Grenzwert ist 600 W. Kann der überschritten werden?
Der gesetzliche Grenzwert für eine BKW ist 600W in DE und in Österreich 800 W pro BKW.
-
Hallo Paul, würde das Thema gerne nochmal aufgreifen und mein Blockly Script vorstellen.
Das Skript soll einen E-Heizkörper steuern.
Kurz ein paar Worte zur Funktion, ich hab ein Timerscript laufen, wo ich mit Hilfe von Vis die Timer einstellen kann. Dieses Timerscript schaltet den Datenpunkt Freigabe_Timer. Dieser soll den Heizkörper immer unabhängig ein u. ausschalten.Bei PV Überschuss und wenn das Fenster zu ist und die Temperatur unter 21 Grad ist, soll der Heizkörper wieder einschalten, bis entweder der Überschuss nicht mehr ausreicht oder die Temperatur im Bad >23 Grad ist.
Leider wird der PV Überschuss mit einem Minus Vorzeichen ausgegeben, wie kann ich das im Skript realisieren?
Kann das Skript so funktionieren oder kann man es noch vereinfachen:
![0_1663251586629_timer.JPG](Uploading 100%)
![0_1663251603484_PV_Überschuss.JPG](Uploading 100%)
![0_1663251615938_temperatur.JPG](Uploading 100%)
![0_1663251623398_fenster.JPG](Uploading 100%)
Danke u.Grüße
-
@diamand2k22 sagte: Datenpunkt Freigabe_Timer. Dieser soll den Heizkörper immer unabhängig ein u. ausschalten.
Unabhängig vom PV-Überschuss und der Raumtemperatur, aber abhängig vom Fenster?
@diamand2k22 sagte in Steuerung PV Strom Überschuss verwenden:
Kann das Skript so funktionieren oder kann man es noch vereinfachen:
Ja und ja, wenn die Leistungsaufnahme des Heizkörpers < 1400 W ist.
Bei Einschalten per Timerscript sollten die Timeouts gestoppt werden.
-
@paul53 said in Steuerung PV Strom Überschuss verwenden:
Unabhängig vom PV-Überschuss und der Raumtemperatur, aber abhängig vom Fenster?
ja das ist richtig.
Und wenn der Timer nicht aktiv ist, dann soll der Heizkörper nur bei PV Überschuss und Fenster zu u. Temperatur <23 Grad laufen.
Jetzt liefert der Datenpunkt meines Fronius Smartmeter den Wert des PV Überschuss mit einem negativen Vorzeichen. Wie kann ich das im Skript verarbeiten?
-
@diamand2k22 sagte: PV Überschuss mit einem negativen Vorzeichen. Wie kann ich das im Skript verarbeiten?
falls Wert >= -1500 stop delayOn sonst falls vorheriger Wert >= -1500
und
falls Wert <= -100 stop delayOff sonst falls vorheriger Wert <= -100
-
Hallo Paul, danke das funktioniert soweit.
-
Hallo Paul, ich habe noch das Problem, dass wenn die Temperatur erreicht wird, der Heizkörper zwar abgeschaltet wird, aber wenn die Temp unter 23 Grad fällt oder Fenster wieder geschlossen wird, die Heizung nicht mehr eingeschalten wird, wenn die Bedingung PV ÜBerschuss oder Timer = true gegeben ist.
Problem ist denk ich der Trigger, der den Wert nur bei Änderung der Objekt ID durchgibt.Wie kann ich das noch elegant lösen?
Gruß
-
@diamand2k22
Wenn man auf zwei Datenpunkt-IDs triggert, kann man die lokale VariableWert
nicht verwenden.
Exportiere bitte das Blockly.Nochmal nachgefragt:
- Die höchste Priorität hat "Fenster offen" (schaltet immer aus)?
- Die zweithöchste Priorität hat "Freigabe_Timer" (schaltet ein)?
- PV-Überschuss und Raumtemperatur-Regelung müssen gleichzeitig erfüllt sein?
-
ok wieder was gelernt
Wenn Timer ein oder PV Überschuss vorhanden und Fenster zu und Temperatur nicht erreicht
-> schalte Heizung ein.
Wenn Timer ein oder PV Überschuss vorhanden und Fenster auf oder Temperatur erreicht
-> schalte Heizung aus
Wenn Fenster wieder zu gemacht wird oder Temperatur fällt unter 23 Grad -> schalte Heizung wieder ein wenn Bedingung Timer ein oder PV Überschuss erfüllt.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="B3AWq:t3%Fveo3mB2NuX">Freigabe_Heizen</variable> <variable id="@aE5Jy)uWPNid/rz47O|">Fenster_offen</variable> <variable id="!tUPvKYTXSVo4pQ{Eu,1">Freigabe_Temp</variable> </variables> <block type="comment" id="9;-YAMBWk1ZT~VR@,q@l" x="-1562" y="-262"> <field name="COMMENT">E-Heizung ein/aus</field> <next> <block type="on_ext" id="za|2c92..c2u15p5U#PQ"> <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="[rp8Ds4V}7l-YAa4i$mv"> <field name="oid">javascript.0.Freigaben_PV_Überschuss.Freigabe_PV_Überschuss_E-Heizung_Bad</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="@@}P0$Z:-L%0J/yhtFHU"> <field name="oid">zigbee.0.540f57fffe3f5d93.Freigabe_Timer</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="13$j%=YA$9TDVi?[b-Pi"> <field name="VAR" id="B3AWq:t3%Fveo3mB2NuX">Freigabe_Heizen</field> <value name="VALUE"> <block type="logic_operation" id="=wM+9Iu}EeuxJAFfqCZQ" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="on_source" id="e1fI~3nPKM6U+tIKAp6;"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_operation" id="QscvU.v34fapDmiH0r%c" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_negate" id="ZADaXJ,)K7_k`irh7Y)("> <value name="BOOL"> <block type="variables_get" id="Cnxr${ovxGNGne|*853;"> <field name="VAR" id="@aE5Jy)uWPNid/rz47O|">Fenster_offen</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id=";S!6EWB%97/},vCw6hm`"> <field name="VAR" id="!tUPvKYTXSVo4pQ{Eu,1">Freigabe_Temp</field> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="w?d5@SVIM@e;Gr|_jBTy"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">zigbee.0.540f57fffe3f5d93.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="rJ$DR-MT`Q8u^l+ZXIQf"> <field name="VAR" id="B3AWq:t3%Fveo3mB2NuX">Freigabe_Heizen</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="3AsCGdV-~R1OT:{+C1pp"> <field name="COMMENT">Auswertung Fenster offen</field> <next> <block type="variables_set" id=";(m=sY6D8-!SVai500-D"> <field name="VAR" id="@aE5Jy)uWPNid/rz47O|">Fenster_offen</field> <value name="VALUE"> <block type="get_value" id="?^1f|?KYd!p%P,mSup#8"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d00087e8fd7.opened</field> </block> </value> <next> <block type="on_ext" id="{Ti96S_f^4XlU3Amx3j3"> <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="gI%Z+5fD{~#_[7v7,$b9"> <field name="oid">zigbee.0.00158d00087e8fd7.opened</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="9iA3y8,R`,56Yezy2MyH"> <field name="VAR" id="@aE5Jy)uWPNid/rz47O|">Fenster_offen</field> <value name="VALUE"> <block type="on_source" id="?z!~G|W/q+Mc|W0Bgp]I"> <field name="ATTR">state.val</field> </block> </value> <next> <block type="controls_if" id="]#gb/OHjO_IXR[?(rE/y"> <value name="IF0"> <block type="variables_get" id="rMx}t%|62xr|@F*p[$~W"> <field name="VAR" id="@aE5Jy)uWPNid/rz47O|">Fenster_offen</field> </block> </value> <statement name="DO0"> <block type="control" id="8)zp?^j^*Gv*Zp0?/yHG"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">zigbee.0.540f57fffe3f5d93.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="5as5;DN32^SMHu7.]M9M"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="comment" id="TnJ=_MGU8%AcQKzNjtD:"> <field name="COMMENT">Auswertung Temperatur</field> <next> <block type="variables_set" id="=D:D/BKe:Gx2oh.rC$^n"> <field name="VAR" id="!tUPvKYTXSVo4pQ{Eu,1">Freigabe_Temp</field> <value name="VALUE"> <block type="logic_compare" id="G^LFbZ4]i:C9Ae#/w:c("> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="R}Yf7fH+e)*pz`uk;B[i"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d00083672fb.temperature</field> </block> </value> <value name="B"> <block type="math_number" id="WP/A1[K)J$Nz[)S~#$MA"> <field name="NUM">23</field> </block> </value> </block> </value> <next> <block type="on_ext" id="lV#,fyEcw?_]{kUcU+NW"> <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="GMryg0Ty6rz8m$Q2M^UF"> <field name="oid">zigbee.0.00158d00083672fb.temperature</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="}]k^8s:RUfKg/8t{D$E!"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="t5{{!*af6Ou[4nE^l5sR"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="Fp56p*nye+%.2ESbUOHu"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="ueh!M+R}h|D2Y/8*wLv7"> <field name="NUM">23</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="D)=fYYS$QRsbuV;Mf6w;"> <field name="VAR" id="!tUPvKYTXSVo4pQ{Eu,1">Freigabe_Temp</field> <value name="VALUE"> <block type="logic_boolean" id=":T@ke7ZsKK:yyX!LHct^"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id=")/,7]S2C2mL51x{a^6dO"> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="0AnFvm4c?{gp4[1|{=bH"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="Ob4zEPVVhH*v)~g{3nUS"> <field name="NUM">24</field> </block> </value> </block> </value> <statement name="DO1"> <block type="variables_set" id="ovS_v9sc_:M]@IuztT/8"> <field name="VAR" id="!tUPvKYTXSVo4pQ{Eu,1">Freigabe_Temp</field> <value name="VALUE"> <block type="logic_boolean" id="Eq.:+H=ZWsD-%QQ_?)Iy"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="Qx^)z7F{KQzNv]N`v?(r"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">zigbee.0.540f57fffe3f5d93.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="otzesr:xSu:6x=,:*,i1"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>