NEWS
Pool Wärmepumpe & PV Überschuss + PV Speicherfüllstand
-
Hallo zusammen,
beschäftige mich gerade neu mit Blockly und komme an meine GrenzenIch plane folgendes:
- Pool Filterpumpe Stufe1 an 7:00 Uhr
- Wenn PV Akku über 95% und genügende Leistung vom Dach z.B: 5000Wh schalte Pool Filterpumpe auf Stufe2
(höhere Fließgeschwindigkeit sorgt dafür das Wärmepumpe eingeschaltet wird) - Wenn Akku unter 90% schalte Filterpumpe auf Stufe1
- Pool Filterpumpe aus um 21:00 Uhr
Werte für die Trigger sind im IOBroker vorhanden. Ich habe es mit vier Skripten versucht aber irgendwie klappt das nicht
- Skript = Pumpe an um 7:30 Uhr Stufe 1
- Skript = in der Zeit von 10-21:30 Uhr - Wenn Speicher <= 95 % und 5000Wh vom Dach Schalte Pumpe Stufe2
- Skript = in der Zeit von 10-21:30 Uhr - Wenn Speicher >= 90 % und 1000Wh vom Dach Schalte Pumpe Stufe1
- Skript = 22:00 Schalte Pool Filterpumpe aus
Skript4
Skript3
Skript2
Skript1
Evtl. kann mir da ja jemand einen Tipp geben oder hat da was ähnliches was ich anpassen könnte...
Wie gesagt bin neu mit Blockly unterwegs...Vielen Dank schon mal für eure Unterstützung
Tobias -
@tobias_b ohne alles anzusehen:
Skript 2 & 3: Trigger in Trigger geht nicht
und Zeitbereich als Trigger schaltet nur zu Beginn und Ende.Du müsstest das ganze ereignisgesteuert umsetzen und dann die Zeit prüfen.
also nur die innerrn Trigger und dann einen Logikblock falls aktuelle Zeit ist zwischen x und y -
@homoran
Meinst du also so in etwa? -
@tobias_b sagte: Meinst du also so in etwa?
Besser so:
Gebe den Datenpunkten eindeutige Namen, denn mit 4 mal "On" kann niemand etwas anfangen.
Enthält der Trigger-Datenpunkt den PV-Überschuss (laut Überschrift) oder die PV-Leistung? -
@paul53 Hi, Danke für die Informationen.
Ich habe mir nun das Thema mit den Namen der Datenpunkte angeschaut und auch das Thema Variablen.Bei Leistung habe ich erst einmal PV-Leistung genommen, da Überschuss als negativer Wert ausgegeben ist und ich nicht sicher bin wie es da dann mit > und < ist... Also 2000Watt Überschuss werden mit -2000 angegeben. Wenn ich nun bei über 2000W als Trigger nehmen will, ist es dann > oder < ?
Habe es nun mal so gemacht und werde morgen mal testen...
DANKE für die Informationen !!!
-
@tobias_b sagte: Habe es nun mal so gemacht
Auch für die PV-Leistung benötigt man eine Hysterese, damit im Grenzbereich (um 4000 W) nicht ständig ein- und ausgeschaltet wird.
Initialisiere die Variable
WP_Ein
bei Skriptstart mit dem Wert des Datenpunktes "2400".@tobias_b sagte in Pool Wärmepumpe & PV Überschuss + PV Speicherfüllstand:
Überschuss als negativer Wert ausgegeben ist
Wenn der Überschuss verwendet wird, muss die Hysterese für die Leistung etwas (20 %) größer sein, als die Leistungsaufnahme der Wärmepumpe. Bei negativen Werten muss der Vergleich umgedreht werden.
-
Meine Idee war, dass morgens erst der Speicher auf 95% aufgeladen wird.
Wenn dann Überschuss vorhanden, Pool Wärmepumpe an.
Damit nicht bei jedem Wolkenfeld welches durchzieht die Wärmepumpe wieder aus geht, soll die Wärmepumpe auch aus dem Speicher betrieben werden, bis Speicherfüllstand von 90% erreicht.
Dann soll die Wärmepumpe wieder aus gehen.Oder siehst du da einen Gedankenfehler?
Aktuell so angepasst, Speicher lädt gerade noch auf
-
@tobias_b sagte: Wärmepumpe auch aus dem Speicher betrieben werden, bis Speicherfüllstand von 90% erreicht.
Das verstehe ich nicht. Ausschalten bei Akku >= 90 % bedeutet: Wenn es den Rest des Tages bedeckt ist, wird der Akku durch die WP geleert. Nach meinem Verständnis muss die WP ausgeschaltet werden, wenn der Akku einen bestimmten Stand unterschreitet.
-
@paul53
Ja genau,- Wärmepumpe ein, wenn PV Speicher voll >95% und genügend PV Leistung vorhanden.
- Wärmepumpe aus, wenn Speicher unter 90% Füllstand. Damit die Wärmepumpe nicht den Speicher komplett leer zieht, aber bei kleinen Wolkenfeldern nicht jedes mal abschaltet.
So habe ich es auch versucht im Script zu realisieren....
Habe ich da einen Denkfehler?
-
@tobias_b sagte: Habe ich da einen Denkfehler?
Nein, aber das Blockly hat den falschen Vergleich:
Akku >= 90
-->Akku < 90
. -
@paul53 Ups, da sieht man den Wald vor Bäumen nicht
Habe mich schon gewundert, warum die die Pumpe immer abgeschaltet wird, wenn die Leisung kurzfristig abfällt, aber der Speicher noch gefüllt ist... Heute halt teilweise bewölkt hierDann werde ich das nun mal im Auge behalten ab es sich so verhält wie ich es gerne hätte...
Danke DIR für deine Geduld
-
@tobias_b Moin.
Ich bin auch gerade in der Findungsphase..
Solaranlage läuft, nun soll der Pool warm werden.Magst Du mir sagen welche Hardware Du verbaut hast? Welche Wärmepmpe?
Und wie sie im IOBroker eingebunden ist? -
ich habe fast das gleiche vor
kann jemand über mein skript darüberschauen ob es so funktioniert oder was kann ich verbessern kann.
kurz zu meinen angaben:
ich prüfe (PV leistung aktuell - (PV an Verbraucher + PV an Batterie) dies ist mein Objekt Differenz)
ich möchte das die pumpe zwischen 8 und 21 uhr läuft
die pumpe soll ab 1kw überschuss anfangen zum laufen und abschalten wenn der wert auf 200W absinkt aber es soll noch 10 min warten und dann nochmals prüfen und dann abschalten wenn immer noch unter 200w
ich hoffe ihr versteht was ich meine
und wenn ich es so mache wann läuft die pumpe wieder an
ich möchte verhindern dass die pumpe immer an und aus geht
ich möchte auch noch das gleiche script für die wärmepumpe erstellen aber mit höheren wertender wert gartenbeleuchtung steht eig für die pumpe, ist nur testzweck
und ich benötige durch meine siemens logo immer eine rückstellung des wertes da bei der logo keine taster funktionierenMfG Jonas
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout4">timeout4</variable> <variable type="timeout" id="timeout2">timeout2</variable> <variable type="timeout" id="timeout3">timeout3</variable> </variables> <block type="on_ext" id="oaL|SQ^9FlR7oB!=v@Jk" x="363" y="-62"> <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.]Fdjwxl;kEY+d/9[,,"> <field name="oid">modbus.1.inputRegisters.5016_Total_DC_Power</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="#GtCWkqW{K2*DY|M.f2#"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV.Differenz_pv_/_verbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="?IA2Dx:OvGR^FbtYMi+?"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="}1u~Hp!5XkhUYdxm=h6o"> <field name="NUM">1</field> </shadow> <block type="get_value" id="(l,yb9PSCsm6of`|NT=j"> <field name="ATTR">val</field> <field name="OID">modbus.1.inputRegisters.5016_Total_DC_Power</field> </block> </value> <value name="B"> <shadow type="math_number" id="8^p9V]%tVNOZqe~Fg6pS"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="lpW$vU9O=X}Yae0mWx_@"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="(0R-fN?h+^Xm7Yibc$:X"> <field name="NUM">1</field> </shadow> <block type="get_value" id="l}Xv*rYeKvxLfK+;^*[u"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV.PvToLoad</field> </block> </value> <value name="B"> <shadow type="math_number" id="}p+(]!A}wJN^HOUth^Xk"> <field name="NUM">1</field> </shadow> <block type="get_value" id="8($Oe_u5R[{)Z.I|!dRN"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV.PvToBat</field> </block> </value> </block> </value> </block> </value> </block> </statement> </block> <block type="comment" id="$!}j`TXzL~USW2{RbOQk" x="400" y="117"> <field name="COMMENT">Pumpe einschalten ab 1000 kw sonnenleistung</field> <next> <block type="on_ext" id="9ZdRm?Iz2c?C51bfUnb("> <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="I|(]UX-B#U,X.c7ZS[]4"> <field name="oid">0_userdata.0.PV.Differenz_pv_/_verbrauch</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="YY;|PF0+rtfJ`eN]hZ.1"> <value name="IF0"> <block type="time_compare_ex" id="$+HKl{(FoNA@%.K$D1|-"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="X5[;/vbkTbdWwU[x`d4Z"> <field name="TEXT">8:00</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="vv~,_Q65Sk*3mF=CQ32K"> <field name="TEXT">21:00</field> </shadow> </value> </block> </value> <statement name="DO0"> <block type="control" id="mJ~v(93:,(Jue1Im@NV{"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.1.DBs.DB1.Gartenbeleuchtung_Ein</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="ute*puJ5kHgsfmLLte]d"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_settimeout" id="9DPCM1j82q:D6Z_LtNG~"> <field name="NAME">timeout</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control" id="WDoOHX}@3SA60.ludRpw"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.1.DBs.DB1.Gartenbeleuchtung_Ein</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=".pv;rbASM+G^=PFDf[Aj"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="!h(Gc`-[cU${Jmzd5Px4"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="~q;5MNW/n-?GUBR=U~K+"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id=";t#6vn`Y^]30JH*O8rjk"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="AyL%B^*iQ]SC*Zz%T@iX"> <field name="NUM">1000</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="/0{JN=6cA-#-%vF$eu]a"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.1.DBs.DB1.Gartenbeleuchtung_Ein</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="2A!}P{Gr#.@ComCKUQCG"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_settimeout" id="BW(MnCZ_62hPuQ,!*`6q"> <field name="NAME">timeout2</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control" id="v/+f2XR)B4dGJ{N`]8ov"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.1.DBs.DB1.Gartenbeleuchtung_Ein</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="AwR|G/OPDzw?[5QFD0St"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="Gw}]U}Xa-e1l=[fKKb7M"> <field name="OP">LTE</field> <value name="A"> <block type="on_source" id="oz1V^`:6HcxfKv)n9r6_"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id=";?$G!u2y5pA!Q:c=9*NR"> <field name="NUM">200</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="=GGU5GZGbQ!]{BMRc+B%"> <field name="NAME">timeout4</field> <field name="DELAY">10</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="23ljJ|~ClaCaEspRvOL!"> <value name="IF0"> <block type="logic_compare" id="lA#bd@l_YVIGd8}v9CrQ"> <field name="OP">LTE</field> <value name="A"> <block type="on_source" id="/hk4nhY:%u}-%^wS`^w~"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="qns2.B#E+m:(M{RXl%Yg"> <field name="NUM">200</field> </block> </value> </block> </value> <next> <block type="control" id="lUDirwjXJGw1]M+(Fz+_"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.1.DBs.DB1.Gartenbeleuchtung_Aus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="jn^VhcT,X5`.WHqMYSVK"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_settimeout" id="-_[jIN,Zb/Nyw9p=(y-c"> <field name="NAME">timeout3</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control" id="gVkJ-TdP@rtD6![:H;jk"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.1.DBs.DB1.Gartenbeleuchtung_Aus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="5aLZemrykr5r_|ayn;Ou"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>
-
@jonas5492 sagte: - (PV an Verbraucher
Wie wird diese Leitung ermittelt?
@jonas5492 sagte in Pool Wärmepumpe & PV Überschuss + PV Speicherfüllstand:
ich möchte verhindern dass die pumpe immer an und aus geht
Prinzip:
-
@paul53
Danke für das Script
Aber in dem Script ist doch auch die Einschaltung um 10min verzögert oder?
Und ich möchte nur die Ausschaltung um 10 min verzögern und wenn der wert immer noch unter soll ist aus geht und wenn er über soll ist an bleibt.
Bin mit blockly nicht so fit
Der wert "pv an Verbraucher" kommt vom wechselrichter und ist der wert was aktuell im Haus benötigt wird.
Wenn die Pumpe ein geht wird diese dann auch dazugerechnet. -
@jonas5492 sagte: ich möchte nur die Ausschaltung um 10 min verzögern
Bei jeder kleinen Wolkenlücke soll eingeschaltet werden?
Man kann auch eine geringere Verzögerung vorsehen.@jonas5492 sagte in Pool Wärmepumpe & PV Überschuss + PV Speicherfüllstand:
Wenn die Pumpe ein geht wird diese dann auch dazugerechnet.
Welche Leistungsaufnahme hat die Pumpe?
@jonas5492 sagte in Pool Wärmepumpe & PV Überschuss + PV Speicherfüllstand:
Der wert "pv an Verbraucher" kommt vom wechselrichter und ist der wert was aktuell im Haus benötigt wird.
Den Wert kann der WR nur berechnen, wenn er den Wert von Bezug-Einspeisung kennt. Gibt es dafür keinen Datenpunkt?
@jonas5492 sagte in Pool Wärmepumpe & PV Überschuss + PV Speicherfüllstand:
möchte auch noch das gleiche script für die wärmepumpe erstellen aber mit höheren werten
Wenn eine Priorisierung erfolgen soll, sollte es im gleichen Skript geschehen.
-
@paul53
danke für die schnelle Hilfe
Ich habe dein Script nachgebaut
leider funktioniert die Aus schaltung nicht
@paul53Bei jeder kleinen Wolkenlücke soll eingeschaltet werden?
Nein aber dies habe ich mir gedacht das ich durch die 10 min abschaltung verhindere
Welche Leistungsaufnahme hat die Pumpe?
Muss ich die Tage erst noch messen was Pumpe allein und mit Wärmepumpe aufnahme haben
Der wert "pv an Verbraucher" kommt vom wechselrichter und ist der wert was aktuell im Haus benötigt wird.
Den Wert kann der WR nur berechnen, wenn er den Wert von Bezug-Einspeisung kennt. Gibt es dafür keinen Datenpunkt?
Ich habe ein Script für meinen Wechselrichter der errechnet wie viel verbrauch am Haus anstehen und wie viel in batterie oder netz eingespeist werden
ich habe die größer als und kleiner als werte auch geändert da die in deinem script verkehrt herum sind oder?
Vielen Dank schon mal für deine Hilfe
-
@jonas5492 sagte: größer als und kleiner als werte auch geändert da die in deinem script verkehrt herum sind oder?
Nein, die sind richtig herum, wenn die Einspeiseleistung ein negativer Wert ist. Es wird mit positiven Werten (Negation des Trigger-Wertes) verglichen.
-
@paul53
ich glaube wir reden aneinander vorbeimein datenpunkt "Differenz pv / verbrauch" setzt sich aus den werten PV leistung aktuell (106W) - (PV an Batterie(68W) + PV an Haus(37W)) zusammen
das heist ich möchte bei dem wert +2000W die pumpe einschalten lassen und wenn die pumpe ein ist der "wert von Differenz PV" auf +200w sinkt wieder ausschalten lassen. mit 10min verzögerung
ich weis noch nicht genau wie viel die pumpe aufnimmt. ich rechne im moment 500Whab ich irgendwie einen denkfehler
-
@jonas5492 sagte: "Differenz pv / verbrauch" setzt sich aus den werten PV leistung aktuell (106W) - (PV an Batterie(68W) + PV an Haus(37W)) zusammen
Dann ist er offenbar positiv bei Überschuss. Lasse einfach die Negation (Block
-
) weg.