NEWS
Intervall Script Schaltung - Pool Schaltung
-
-
@paul53 Ja, das könnte helfen
Vielen Dank -
Energetisch gesehen (abgesehen vom Pumpenverbrauch) sollte es egal sein ob Intervall oder Dauerbetrieb der Panele stattfindet. Die Ausbeute sollte die gleiche sein. Meine 3 ausgemusterten Solarthermiemodule am Whirlpool laufen mit einer 30W Umwälzpumpe dauerhaft solange die Panele im Vergleich zur Wassertemperatur ein einstellbares Delta (aktuell 5 Kelvin) aufweisen. So schaukelt sich die Temperatur im Whirlpool nach oben und die Pumpe läuft nur, wenn genügend Sonne scheint um den Pool (noch) weiter aufzuheizen.
-
@Homoran sagte in Intervall Script Schaltung - Pool Schaltung:
ich habe so eine Steuerung früher auch benutzt um Strom zu sparen.
Soll doch die Sonne den Kollektor erst einmal wieder ordentlich aufheizen bevor ich die Energie wieder raushole.Aber davon bin ich wieder weg.
Erstens kam ich an den üblichen Tagen nicht auf die notwendige Pumpenlaufzeit um ausreichend zu filtern. Das musste dann wieder anders abgefangen werden. zum anderen war die effektive Temperatursteigerung an Tagen mit Intervallsteuerung deutlich niedriger als an vergleichbaren Tagen ohne Intervallsteuerung.
Über Nacht kühlt es doch ohnehin trotz Solarplane wieder erheblich aus.Hi und wie steuerst Du heute ? Hast Du einen Link für mich oder eine Export ? Bin gerade dabei meine Pool/Solar Steuerung anzupassen. Ich wenn es was schönes gibt brauche ich das Rad ja nicht neu erfinden.
-
So sieht mein Script jetzt aus, in Anlehnung an Skripte die schon hier irgendwo im Forum von anderen geschrieben wurden...vielleicht kannst du es gebrauchen.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="interval" id="Intervall">Intervall</variable> </variables> <block type="on_ext" id="%}p,5/FOtEH7?-ENJr5Y" x="-1837" y="-1113"> <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="4cLw$,c6LD[ItHM#7oH$"> <field name="oid">node-red.0.Erzeugung</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id=";86,weYMr-Pq?~x-TH+|"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="pwUknR5Gk~$@oD_1/mx7" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="!tqV^qhccI@@ly:}dK`d"> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="CjYC`62kpt;:{7W{^R09"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="S`a@].0**0jxP}%D+5+I"> <field name="NUM">400</field> </block> </value> </block> </value> <value name="B"> <block type="time_compare" id="]xsncBb11%fR+7XlV,hR"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">11:00</field> <field name="END_TIME">18:00</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="hoMhEffvl,:#YMKd.J`e"> <value name="IF0"> <block type="logic_negate" id="GzatSc3Mx~,wnPb2n4;R"> <value name="BOOL"> <block type="variables_get" id="Z{T@-d:Re|pe!!ZlB[*:"> <field name="VAR" id="Intervall" variabletype="undefined">Intervall</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="H]%iZmji}q4kZL3$Dncc"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">homee.0.MeteringPlug-201.OnOff-1120</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="%((b;1s]|iv]9}MDZ3[+"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="_2G0=~f@(ufq@J6_)L{h"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">homee.0.MeteringPlug-201.OnOff-1120</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">60</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="|L|4r|kCkT+khB1}xCCX"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="timeouts_setinterval" id="(d.56)?5gj3SVQ9Gi`AZ"> <field name="NAME">Intervall</field> <field name="INTERVAL">120</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="q-(Q?O+hS(c2iKvf@Kba"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">homee.0.MeteringPlug-201.OnOff-1120</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="9#Q;8zd+qPNwFpxG@n+_"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="9eB@Ytv[t||)u/wU/^={"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">homee.0.MeteringPlug-201.OnOff-1120</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">60</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="6NIgNBi*DuQ@MHz6XXeQ"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> <next> <block type="debug" id="rS*l.hfk^NU:V3+0Fy{g" disabled="true"> <field name="Severity">warn</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="`sBF`/{u9sLT1kcX5rRh"> <field name="TEXT">Dazwischen </field> </shadow> <block type="text_join" id="PE69pUHWaA%[#).)403r"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="(AFNf9dR4U90zcdEkw7s"> <field name="TEXT">Pumpe an</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="timeouts_clearinterval" id="+QIl0_GAZp6JZ(#.g:/4"> <field name="NAME">Intervall</field> <next> <block type="controls_if" id="lH_I^v$*1#g*47MWd7V$"> <value name="IF0"> <block type="logic_compare" id="EvR#lQB2wi(9QlGsyW}K"> <field name="OP">LTE</field> <value name="A"> <block type="on_source" id="A.!WbhG{{Nor1g84Lpn+"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="U%%S2e!9]@.hCSD-=2uN"> <field name="NUM">200</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="9;q[tc5D(8LJHNvY#};}"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">homee.0.MeteringPlug-201.OnOff-1120</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="]KUic+TJLB/3#y])}?eF"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="debug" id="5/#m#/Hi6[USY8rr#m2V" disabled="true"> <field name="Severity">warn</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="`sBF`/{u9sLT1kcX5rRh"> <field name="TEXT">Dazwischen </field> </shadow> <block type="text_join" id="@6I;5o_rzce]8YQ%(f=l"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="buiCb4KegO95x$0B`b^|"> <field name="TEXT">Pumpe aus</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
@MyMeyer sagte in Intervall Script Schaltung - Pool Schaltung:
wie steuerst Du heute ?
Die Steuerung ist über die Zeit gewachsen.
Vieles könnte immer noch anders und wahrscheinlich auch einfacher laufen und einiges läuft doch nicht ganz und immer so wie es soll.Im allgemeinen habe ich drei Programme:
- eine Poolsteuerung für die Grundfunktionen
- einen Poolwächter für Alarm- und Notabschaqltfunktionen
- und einen Pumpentimer, der die Pumpenlaufzeit hochzählt und nachts auf 0 setzt.
als Parameter nutze ich u.a.
- Sonnensensor (ist Sonnenenergie vorhanden)
- Sonnenstand (Scheint die Sonne überhaupt auf den Kollektor)
- Außentemperatur (muss ja im Winter nicht laufen)
- Regensensor (wenn der Kollektor naß wird und es ist windig, kühlt er eher, als dass er heizt)
- Solarleistung der PV-Anlage (habe ich genug PV-Überschuss, den ich verbraten will)
- Temperaturdifferenz vor und Rücklauf (ist die Heizung noch effektiv?)
- Wassertemperatur (ist der Pool schon zu warm?)
Teilweise schreiben die Skripte in ein log, dass dann in der vis dargestellt wird:
-
und weil es nicht mehr passte hier der
-
@Homoran Wo holst du dir den Sonnenstand her - https://www.sonnenverlauf.de/ - oder kommt der von deiner PV Anlage genauso wie der Sonnensensor?
Ein Großteil der Sensoren hätte ich auch zur Verfügung außer der PV Geschichte - meine Anlage wird erst im August installiert
Was für einen Druckschalter hast da verbaut? Einfach ein DruckSCHALTER der dir True/False ausgibt oder einen Druckaufnehmer der dir Analog Werte liefert?
Regensensor RG-11 von rainsensors.com habe ich gerade gestern in Betrieb genommen - super Teil !!
Wieviel Temperatur Differenz fährst du zwischen Vorlauf und Rücklauf?
PS: Habe deine Skripte gerade mal importiert - HAMMER was da so gewachsen ist. Du nimmst 5°C (bzw. Kelvin) als Temperaturdifferenz - richtig?
-
@JB_Sullivan sagte in Intervall Script Schaltung - Pool Schaltung:
Wo holst du dir den Sonnenstand her -
Ein einfaches zeitgetriggertes Skript.
Das modul Suncalc ist inzwischen sogar Bestandteil der Standardinstallation (denke ich).@JB_Sullivan sagte in Intervall Script Schaltung - Pool Schaltung:
Was für einen Druckschalter hast da verbaut?
Das ist ein 5v dreileitungs billigdruckmesser aus eBay um die 15euro. Ist inzwischen ziemlich verrottet. Werde ihn mal austauschen müssen. Ggg, gegen einen 10v 2 Leitungssensor und den an das hip muti Mo modul, an den auch die Steuerung der Bewässerung kommt.
@JB_Sullivan sagte in Intervall Script Schaltung - Pool Schaltung:
Wieviel Temperatur Differenz fährst du zwischen Vorlauf und Rücklauf?
Was die Sonne so hergibt.
Da ist nichts geregelt. Sind Mitra Kollektoren, da geht der ganze Fluss durch.
Bei guter Sonne und Sonnenstand etwa 1,5 -1.8° sonst zwischen 0.4 und 1 -
Ich habe jetzt die letzte Zeit viel gelesen bzgl. Regelung von Warmwasser Erzeugung via Solarabsorber.
Im Grunde kann man das über ein relativ kleines Skript abbilden. In meinem besonderen Fall habe ich aber das Problem, das die Solarabsorber irgendwann gegen Nachmittag vom Nachbarhaus beschatte werden.
Wie ich jetzt feststellen musste, geht die Absorber Temperatur dann drastisch nach unten und man hat dann keine Pool Heizung, sondern vielmehr eine Pool Kühlung.
Wie könnte man diesen Anwendungsfall mit in das Skript einbauen? Wie ich bei sonnenverlauf.de gesehen habe, ändert sich der Wurfschatten des Nachbarhaus vom Frühjahr zum Spätsommer hin.
Ich habe jetzt bereits das JavaSkript für den Sonnenstand laufen und bekomme die Werte für Azimut und Elevation in ioBroker angezeigt.
Wie aber verarbeite ich diese Werte sinnvoll im Skript? Schließlich ändert sich die Beschattung der Absorber kontinuierlich über die Pool Betriebszeit im Jahresverlauf.
Ziel ist es halt, in der Zeit wo beschattet wird, eine Förderung des Poolwassers über die beschatteten Absorber zu vermeiden.
Hat jemand einen Gedankenansatz für mich? Vielen Dank
-
@JB_Sullivan sagte in Intervall Script Schaltung - Pool Schaltung:
Im Grunde kann man das über ein relativ kleines Skript abbilden
Hatte ich auch gedacht.
und dann kamen die Feinheiten . . .@JB_Sullivan sagte in Intervall Script Schaltung - Pool Schaltung:
das die Solarabsorber irgendwann gegen Nachmittag vom Nachbarhaus beschatte werden.
Bei mir ist das mein eigenes Haus bis etwa 11:00 oder 130° Azimut.
Hier mein kompletter View:
Die Garage befindet sich rechts neben dem Haus um 1m eingerückt.
Die Sonne geht morgens im Osten auf (90°) und steht nach Mittag so, dass auch das Nachbarhaus Schatten wirft. Allerdings ist der Schattenwurf im Sommer so kurz, dass von dort keine "Gefahr" ausgeht.@JB_Sullivan sagte in Intervall Script Schaltung - Pool Schaltung:
geht die Absorber Temperatur dann drastisch nach unten
Ja, wenn vorher seit der Nacht noch keine Sonne drauf stand ist es definitiv eher eine Kühlung, sonst ist es nicht sooo schlimm.
Schlimm ist es auch wenn es geregnet hatte und der Wind das Regenwasser verdunstet und die Verdunstungskälte wirkt.@JB_Sullivan sagte in Intervall Script Schaltung - Pool Schaltung:
Schließlich ändert sich die Beschattung der Absorber kontinuierlich über die Pool Betriebszeit im Jahresverlauf.
Nicht unbedingt.
Der Azimut bleibt gleich (sogar bei Sommer- , wie Winterzeit). Allerdings wirft das Nachbarhaus wohl je nach Elevation einen unterschiedlich langen Schatten.Um solche (durchaus möglichen) Berechnungen nicht durchführen zu müssen arbeite ich mit der Differenztemperatur zwischen Vor- und Rücklauf zum Absorber.
-
Hier mal meine Pumpensteuerung. Die große Heizpumpe ist deaktiviert, da ich komplett auf Edelstahlwellrohr umgestellt habe ist das System jetzt komplett dicht und eine Umwälzpumpe reicht.
Oben der Trigger, unten die Funktion. Nicht wundern, es werden mit jedem Trigger noch ein paar Variablen neu gerechnet und geschrieben.Das ganze arbeitet mit einer einstellbaren Differenz aus Wassertemperatur im Whirlpool und der Temperatur in einem der Solarmodule
-
@lalam sagte:
Oben der Trigger, unten die Funktion.
Weshalb aktualisierst Du "DifferenzTempEA" zweimal ?
-
Das ist Dummheit. Da haste Recht! Das rührt wohl noch aus den Zeiten her als die Trigger noch nicht rausgezogen waren Habs schon gelöscht. Danke!
-
Für alle die es interessiert - ich bin gerade dabei den Beta-Tester für dieses Projekt zu spielen.
Läuft super, ist völlig Autak und kann auf allen Sonoff Modellen die sich flashen lassen eingespielt werden Außerdem gibt die Poolsteuerungs Firmware MQTT Datenpunkte an ioBroker raus (Mqtt-Adapter). Wie gesagt ist noch Beta was ich gerade teste, aber dort im Forum gibt es bereits die Version 1.06 zum Download.
Ich bin NICHT der Entwickler, ich unterstütze nur ein bisschen als Beta Tester - aber ich bin schon sehr zufrieden damit.
Auch steht mein selbst gebauter Ventil Antrieb gemäß diesem YouTube Video kurz vor der Vollendung und wird dann mit in die Steuerung durch diese "Poolsteuerungs" Firmware mit eingebunden.
https://www.youtube.com/watch?v=d2WYe2pKprc&t=520s
-
Ich habe meine "Solar-Steuerung" folgendermaßen aufgebaut :
1-Wire Temperatursensor im Pool für Pooltemperatur, 1x Sensor am Vorlauf, einen am Rücklauf und einen in den Solarmatten.
Ich messe einfach die Temperatur in der Solarmatte. Wenn diese z.B. > 50°C wird die Pumpe eingeschaltet. (Wenn die Solltemperatur im Pool noch nicht erreicht ist.)
Bei 42°C in der Solarmatte wird die Pumpe wieder ausgeschaltet.Regensensor, Sonnensensor, Sonnenstand usw. benötige ich somit alles nicht. Den ich lasse die Pumpe ja nur laufen, wenn die Solarmatte eine über VIS einstellbare Temperatur hat. Und bei einer Ausschalttemperatur geht die Pumpe wieder aus.
Das funktioniert schon sehr gut und ist relativ einfach umsetzbar.
Bei Bewölk,ung oder vormittags erreicht die Matte nicht die Solltemperatur.
-
Das ist aber Kontraproduktiv sich auf die Außentemperatur der Solarmatten festzulegen.
Vielmehr solltest du eine Differenztemperatur (zwischen 4-6°C) zwischen Pooltemperatur und Solarmatten definieren - also keine Fixwerte. (Pumpe einschalten wenn Solarmatten 4°C höher als Pool Temperatur)
Bei den hohen Werten die Du definiert hast, verschenkst gerade bei wechselhaftem Wetter viel Sonnenenergie.
Wenn z.B. die Solarmattentemperatur 27°C ist und der Pool hat 22°C - und du ein Delta-T von 4°C eingestellt hast, würde er so lange warmes Wasser von den Solarplatten in den Pool eintragen, bis deine Hysterese (Abschaltwert z.B. 2°C oder genauer 2K) greifen würde.
Somit hättest du auch an bedeckten Tage eine leichte Temperatur Erhöhung im Pool. Diese ist zwar sehr moderat, und nicht so brutal wie deine Vorgehensweise, hat aber den Vorteil, das der Pool immer auf einem gleichmäßigen Temperatur Nivau gehalten wird.
Gerade bei den aktuell kalten Nächten braucht es 2-3 Tage "voll Power" bis du den Pool wieder von 18°C auf 25-26°C hochgeholt hast. Ich habe nach der oben beschriebenen Methode durchgängig 22-23°C im Pool und da reicht schon ein Sonnentag um auf 25°C + X zu kommen.
-
Hm.. ok. ich werde meine werte mal anpassen und es dann beobachten.