Benachrichtigungen
Alles löschen

[Oben angepinnt] flexible high-end cheap-tech Nulleinspeisung mit Soyosource und Volkszähler

360 Beiträge
38 Benutzer
26 Likes
68.1 K Ansichten
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Wieder ein kleine feature eingebaut:

zero_shift​, damit kann man den Wert des Stromzählers ins Plus und Minus verschieben.

Bei zero_shift = 50 werden immer 50 W mehr eingespeist, als zur Nullung nötig wäre.

Bei zero_shift = -50 werden immer 50 W vom Netz bezogen, also zu wenig eingespeist.

Damit kann man die Regelung besser an Verbraucher wie z.B. Waschmaschinen anpassen,

sehr nützlich, wenn der Tages-Ertrag ohnehin nicht ausreicht.

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
dingsbums reacted
AntwortZitat
(@dreamboxer2)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 9
 

Hallo E-t0m, hallo Forumleser,

ich bin so froh, diesen Thread gefunden zu haben. Endlich mal ein konkretes Projekt, das ich auch so umsetzten möchte. Danke Dir schonmal im Voraus ;)).

Einen Volkszähler mit Lesekopf am ISKRA MT681 über ttyAMA0 auf Raspi2 mit InfluxDB und Grafana läuft bei mir schon seit etwa einem Jahr mit 300W-Balkonkraftwerk und Fritz!DECT 200.

 (sorry manchal gibt es Fehlmessungen im Grafana).

Jetzt möchte ich mit DIY-48V-Akku und 6 MBwhite390W-Solarmodulen erweitern und in die Victron-Welt einsteigen.

Dafür soll ein Victron MultPlus-II 48/5000/70-50 und ein SmartSolar MPPT 150/35 her.

 

Meine beiden Fragen:

1. Mit welchen Anpassungen könnte ich Dein Skript auch mit den obigen Victrongeräten auf dem Raspi2 verwenden?

2. Könnte man Deine geniale 0-Einspeise-Regelung auch auf Raspi4 mit Venus OS zum Laufen bringen und die Werte auf die Venus Web-Oberfläche zaubern?

 

Ich bin leider noch nicht sehr weit im Python im Verstehen, versuche mich im Dazulernen.

Solarische Grüße, dreamboxer2

 

   
AntwortZitat
 mola
(@mola)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 78
 

Veröffentlicht von: @e-t0m

Daher also nochmal das Angebot an alle Tatkräftigen: Meldet Euch und wir sehen, was man machen kann.

Moin, das greife ich doch gerne auf: Hier liegt ein neuer EPEver Tracer 6415 AN und wartet noch locker zwei Monate auf den Einbau bei meiner Schwester. Wenn Du magst, leihe ich ihn Dir (Versand hin/rück geht auf mich) und Du ersetzt damit zeitweise Deinen ESmart. Nur, wenn das interessant ist. Falls nicht, kann ich später evtl. auch Daten liefern, allerdings wird das Teil wie gesagt nicht bei mir laufen - und vermutlich kommt auf die WR-Seite auch erstmal ein Hoymiles, der per OpenDTU geregelt wird (mache ich schon bei Zweitanlage, läuft gut und das Teil ist wegen Anmeldung bei meiner Schwester eh vorgesehen). Aber Dein Projekt interessiert mich und vielleicht kommt später ja mal ein Soyo oder Sun dran, wer weiß.

Ich bin hier mit Old-School SMA SI versorgt - teure Lösung aber vor 10 Jahren machte man Nulleinspeisung so...

Sag einfach Bescheid, würde mich freuen!

3,5kWp Solarwatt - SMA SB-3000TL (04/11)
48V 280Ah LFP Seplos Mason 280, Neey v4 (12/22) - SMA SI 6.0H-11, SMA EM (02/13)
Smart ForTwo Cabrio ED 451 (11/12)
Tern Verge - Gboost Gold - 48V 14Ah LiIon DIY (03/21)


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Veröffentlicht von: @dreamboxer2

Solarische Grüße, dreamboxer2

Hallo! Freut mich wenn es dir gefällt und hilft.

Zuerst mal solltest du nachsehen, ob dein ISKRA-Zähler überhaupt die "16.7.0" ausgibt! Sonst wirds schwierig.

In der Victron-Welt macht man Nulleinspeisung normalerweise mit dem "Cerbo" und EM. Damit bin ich aber wenig vertraut.

Hier ist ein schönes Projekt, zum Steuern eines MP2: https://github.com/martiby/ess Da könnte man sicher so einiges davon wiederverwenden.

Grundsätzlich müsste man nur den MP2 in der Einspeisung regeln wie einen Soyosource.

Der Vorteil meiner Regelung ist aber die Einbeziehung des aktuellen PV-Ertrags, den bekommt man nur vom Laderegler.

Zufälligerweise überlege ich derzeit, das Victron-eigene VE.direct zugänglich zu machen, denn:

Mein esmart3 ist (durch Erweiterung der Anlage) inzwischen an seiner Leistungsgrenze und soll Unterstützung bekommen.

Präferieren würde ich da auch Victron.

Mit Venus habe ich mich nie befasst!

Dieses Projekt ist eigentlich als Low-Tech+High-End gestartet, mit so wenig möglichst billiger Hardware wie möglich...

 

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Veröffentlicht von: @mola

Wenn Du magst, leihe ich ihn Dir (Versand hin/rück geht auf mich) und Du ersetzt damit zeitweise Deinen ESmart.

Vielen Dank für das Angebot, ich werde ganz sicher drüber nachdenken, denn ich brauche einen zweiten Regler, zusätzlich zum Esmart. (Leihweise, hab ich verstanden)

Wie oben schon geschrieben, würde ich da zwar den Victron eher noch bevorzugen, aber abgeneigt bin ich dem Epever auch nicht.

Zumal der wohl auch schon RS485 hätte (Victron ist nur seriell) und günstig ist.

Über den Hoymiles denke ich auch schon länger nach, aber es gibt noch wenig substanzielles dazu zu lesen.

Etwas mehr WR-Leistung würde mir auch gut gefallen - wenn auch momentan einer der Soyos im Winterschlaf ist...

Durch die ganzen Erwägungen zur Erweiterung der Anlage, habe ich für mich festgestellt: es sollen Kabel dran, kein Funk...

Wobei ich da vielleicht eher den Lesekopf an die lange Leine legen muss, als die ganzen anderen Geräte: Fazit der Raspi zieht vom wohl Zählerschrank in den PV-Schrank um.

Also nochmals vielen Dank für das Angebot, ich melde mich dann!

 

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
mola reacted
AntwortZitat
(@lupenrainer)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 62
 

Moin @e-T0m,

 

ich baue das Script gerad auf ei 24V System um und schaue deswegen gerade etwas genauer in das Skript rein um es zu verstehen. 

Folgende Fragen sind mir dabei bisher gekommen:

 

1. Du definierst ein max_bat_discharge. Das wird am Ende zu dem https://github.com/E-t0m/zeroinput/find-definition?q=d&blob_path=zeroinput.py&ref=76a8f453c7f5ed6a2b068d545aa5dcae915f69c2&language=Python&row=210&col=40&code_nav_context=BLOB_VIEW","user_id":null} }" data-hydro-click-hmac="44ce45c6fc1fef0a082d1ab739f59a87f96ef45758e1ed35a55211f67fbc5db7">d['chg_power'] vom eSmart addiert. Kann man hier nicht direkt die max discharge Power die im eSmart hinterlegt ist nehmen oder übersehe ich funktional vielleicht etwas dass du es so löst?

 

2. Du schränkst die Batterieleistung ja zwischen 48V und 50V ein. Wofür ist der zusätzliche PV_red_factor? Du berechnest ja schon eine niedrigere Batterieleistung mit der Powercurve. Aus dem Faktor werde ich leider nicht ganz schlau. 

 

3. Sobald die PV-Leistung 0 ist sendest du den max_night_input. Das heisst also wenn über Tag gerade mal gar nichts rein kommt wird auch nur max_night_input aus der Batterie gezogen auch wenn die Batterie voll ist und gerade mehr angefordert wird? ALso bzw. eigentlich immer wenn keine PV Leistung da ist wird auch nur 200W raus gesendet? Was ist der Hintergrund hier von? Smile /p>

 

4. Nur zur Kontrolle dass ich das Script richtig verstanden habe:

Wenn die Batteriespannung >50V und kleiner 53V ist und PV_Leistung > 0, sendest du immer genau den Wert der zur Nullung des Zählers erforderlich ist. Also dass was vom Zähler über den Lesekopf kommt, korrekt? Smile /p>

 

Ich entschuldige mich schonmal wenn ich ein paar Sachen komplett falsch verstanden habe Grin

 

Freue mich wenn du mir hier helfen kannst. 

Danke Smile /p>

 

Schöne Grüße
Rainer


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Hallo Rainer, ja das Einstellen der Systemspannung wollte ich längst mal einbauen... mal sehen...

 

1. max_bat_discharge, ist dafür gedacht, den Entladestrom der Batterie zu begrenzen, deshalb wird die PV-Leistung dazu addiert. Die Energie aus der PV soll nicht beschränkt werden.

Erreicht der esmart seine discharge power, schaltet er die Last ab!

Ein 25 Ah Akku soll nur mit 1C entladen werden, also 25A, das würde aber nicht reichen um die 40A von 2 Soyo zu liefern.

Wenn also genug PV da ist, kann man damit trotzdem 2 Soyo fahren. Übrigens ist das je nach Spannung eine sehr knappe Angelegenheit 😉

 

2. pv_red_factor = 0.87 # PV reduction on low battery in % / 100, also eine Reduktion der PV-Leistung bei niedriger Spannung in % / 100

Du kannst es als Wirkungsgrad des PV-Anteils sehen.

Der zweite Teil ist dann die Leistung, die der Akku liefert, je nach (geglätteter) Spannung.

Der dritte Teil ist der statische "Verlustfaktor".

Das Gesamtsystem aus Laderegler, Soyo(s) und Akku haben verschiedene Verluste.

Die Regelung ist immer nur eine Annäherung daran, damit nichts schwingt, oder ins Takten (an-aus-an-aus) kommt.

Es ist Open-Source, spiel damit! 😉

 

3. max_night_input, die maximale Einspeisung in der Nacht

Sobald pv_cont (kontinuierliche PV-Leistung der letzten 24 Sekunden) gleich 0 ist, springt der Nacht-Modus an.

WENN zusätzlich die angeforderte Leistung größer ist als max_night_input, wird darauf begrenzt.

 

4. Ja zwischen 50 und 53V wird das unveränderte Ziel angefordert, denn sämtliche Verluste sind in der Messung schon enthalten.

Ausnahme: Schwingungsunterdrückung!

 

Wenn ich helfen kann, tu ich das gerne! Viel Spaß beim Basteln!

 

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
(@lupenrainer)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 62
 

Veröffentlicht von: @e-t0m

Hallo Rainer, ja das Einstellen der Systemspannung wollte ich längst mal einbauen... mal sehen...

 

1. max_bat_discharge, ist dafür gedacht, den Entladestrom der Batterie zu begrenzen, deshalb wird die PV-Leistung dazu addiert. Die Energie aus der PV soll nicht beschränkt werden.

Erreicht der esmart seine discharge power, schaltet er die Last ab!

Ein 25 Ah Akku soll nur mit 1C entladen werden, also 25A, das würde aber nicht reichen um die 40A von 2 Soyo zu liefern.

Wenn also genug PV da ist, kann man damit trotzdem 2 Soyo fahren. Übrigens ist das je nach Spannung eine sehr knappe Angelegenheit 😉

 

-> Okay. Dann hatte ich es eigentlich richtig verstanden. Was mich aber wundert sind die 300W. Wieso nur 300W ? Bei einer 48V Batterie kannst du ja bei 25A deutlich mehr W aus der Batterie ziehen!? Da stehe ich etwas auf dem Schlauch. 

 

2. pv_red_factor = 0.87 # PV reduction on low battery in % / 100, also eine Reduktion der PV-Leistung bei niedriger Spannung in % / 100

Du kannst es als Wirkungsgrad des PV-Anteils sehen.

Der zweite Teil ist dann die Leistung, die der Akku liefert, je nach (geglätteter) Spannung.

Der dritte Teil ist der statische "Verlustfaktor".

Das Gesamtsystem aus Laderegler, Soyo(s) und Akku haben verschiedene Verluste.

Die Regelung ist immer nur eine Annäherung daran, damit nichts schwingt, oder ins Takten (an-aus-an-aus) kommt.

Es ist Open-Source, spiel damit! 😉

 

3. max_night_input, die maximale Einspeisung in der Nacht

Sobald pv_cont (kontinuierliche PV-Leistung der letzten 24 Sekunden) gleich 0 ist, springt der Nacht-Modus an.

WENN zusätzlich die angeforderte Leistung größer ist als max_night_input, wird darauf begrenzt.

 

4. Ja zwischen 50 und 53V wird das unveränderte Ziel angefordert, denn sämtliche Verluste sind in der Messung schon enthalten.

Ausnahme: Schwingungsunterdrückung!

 

Wenn ich helfen kann, tu ich das gerne! Viel Spaß beim Basteln!

 

 

Ansonsten ist soweit alles verstanden denke ich bis auf eine zusätzliche Frage bzgl. des eSmart:

 

Wie verhält sich der eSmart wenn er über die "Saturation Charging Voltage" kommt?

Kann man irgendwo sehen oder einstellen wie der Ladestrom dann runter gefahren wird?

 

Generell auch noch die Frage: Versucht der Soyosource immer mit der Nominalspannung zu laden?

 

Ein Nachtrag noch:

https://github.com/E-t0m/zeroinput/find-definition?q=bat_p_percent&blob_path=zeroinput.py&ref=main&language=Python&row=178&col=4&code_nav_context=BLOB_VIEW","user_id":null} }" data-hydro-click-hmac="24dd042d2ff7b1cf35015e0c5baa1971f99e9d6e2f26d736baa18157003cf446">bat_p_percent = (https://github.com/E-t0m/zeroinput/find-definition?q=bat_cont&blob_path=zeroinput.py&ref=main&language=Python&row=178&col=21&code_nav_context=BLOB_VIEW","user_id":null} }" data-hydro-click-hmac="bd01bb391a147aed10a29705d8f86f611b7066c4d6246575fb939aa0e7040d46">bat_cont - 47.1 ) **4.326 -> Wäre noch interessant zu verstehen wo die Formel her kommt. Generell entsprechen die 4.326 ja dem geteilt durch Wurzel 2. (Was sich schonmal nach irgendwas mit Sinn und Verstand anhört :D). Wenn ich mir den Arbeitsbereich anschaue begrenzt du die Batterieleistung der Formel bei 48V - 50V somit auf ~63% -100%. 

Hast du das aus dem Datenblatt von der Batterie?

 

Danke!

 


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Moin Rainer.

300 W maximaler Batterie Entladestrom deshalb: jetzt im Winter reicht die Menge an PV-Energie längst nicht aus.

Viele Geräte takten und durch den Überhang bei deren Abschalten wird viel Energie verschenkt, aber auf kleinere Sprünge reagiert der Soyo schneller. (ramp speed)

Auch das neulich eingebaute "zero shift" hilft gegen diesen Effekt.

Es geht also dabei darum, den wenigen Strom möglichst effektiv zu verwerten. Der aktuelle PV-Strom kommt sowieso unbegrenzt dazu.

 

Der Esmart3 regelt wie alle MPPT-Regler: er zieht die PV-Spannung hoch, wenn der Strom reduziert werden soll.

Das funktioniert sehr zuverlässig. Was willst du denn da einstellen?

Schau dir mal "pv_u" im Volkszähler an, wenn der Akku in ferner Zukunft mal wieder voll wird.

 

Der Soyo liegt immer leicht über der Netzspannung, sonst könnte er nicht einspeisen.

 

Die Formel ahmt den Spannungsverlauf von LiFePo4 Zellen nach.

Die exakten Nachkommastellen und das Minus sind angepasst an die Rahmenbedingungen.

 

PS: deine github-links stören die Forensoftware

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
(@lupenrainer)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 62
 

Veröffentlicht von: @e-t0m

Moin Rainer.

300 W maximaler Batterie Entladestrom deshalb: jetzt im Winter reicht die Menge an PV-Energie längst nicht aus.

Viele Geräte takten und durch den Überhang bei deren Abschalten wird viel Energie verschenkt, aber auf kleinere Sprünge reagiert der Soyo schneller. (ramp speed)

Auch das neulich eingebaute "zero shift" hilft gegen diesen Effekt.

Es geht also dabei darum, den wenigen Strom möglichst effektiv zu verwerten. Der aktuelle PV-Strom kommt sowieso unbegrenzt dazu.

 

Der Esmart3 regelt wie alle MPPT-Regler: er zieht die PV-Spannung hoch, wenn der Strom reduziert werden soll.

Das funktioniert sehr zuverlässig. Was willst du denn da einstellen?

 

-> Einstellen möchte ich da nichts. Mich hätte nur interessiert mit welchem Verlauf der eSmart die LadeLeistung zwischen Saturation Charging Voltage und Ladeschlussspannung runter zieht. 

 

Schau dir mal "pv_u" im Volkszähler an, wenn der Akku in ferner Zukunft mal wieder voll wird.

 

Der Soyo liegt immer leicht über der Netzspannung, sonst könnte er nicht einspeisen. 

 

-> Sorry. Ich meinte hier nicht den Soyo sondern den eSmart Smile Mit welcher Spannung wird geladen?

 

Die Formel ahmt den Spannungsverlauf von LiFePo4 Zellen nach.

Die exakten Nachkommastellen und das Minus sind angepasst an die Rahmenbedingungen.

 

Okay. Da weiss ich dann nicht genau wie ich es für die 24V Batterie einstellen soll wenn ich den genauen Hintergrund nicht kenne. 

Erstmal einfach mit (Batteriespannung - 23.1)^4.326 versuchen? Wäre dass dann die korrekte Anpassung für ein 24V Batterie?

 

PS: deine github-links stören die Forensoftware

 


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Die Spannung liegt laut Esmart immer 3V über dem Akku.

 

Bei A bin ich mir gerade auch nicht ganz sicher 😉

Du kannst erstmal die B-Variante nehmen, statt 480 nimmst du 240:

bat_p_percent = powercurve[int(bat_cont*10-240)]

 

 

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Veröffentlicht von: @lupenrainer

Mich hätte nur interessiert mit welchem Verlauf der eSmart die LadeLeistung zwischen Saturation Charging Voltage und Ladeschlussspannung runter zieht. 

 

Der Verlauf ergibt sich aus der Kennlinie deiner PV-Module, aber den zeitlichen Ablauf kennt nur der Esmart.

 

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
(@lupenrainer)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 62
 

Super! Dann noch eine letzte Frage bevor ich für mich weiter machen kann.

 

Da ich die Daten von einem Shelly3Em bekomme (wird im vzlogger per curl abgerufen) ist der identifier "total_power".

Es sollte ja reichen wenn ich im Script die Stelle  if "1-0:16.7.0" in if "total_power" in l: ersetze oder? 

Der Teil der danach kommt und wo er sich den Wert aus der Log holt sollte ja immer an der gleichen Stelle sein egal welcher identifier gesetzt ist oder?

Oder müsste man da eventuell noch ein paar Zahlen anpassen dass er an die richtige Stelle in der Zeile springt?


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Veröffentlicht von: @e-t0m

Du kannst erstmal die B-Variante nehmen, statt 480 nimmst du 240:

bat_p_percent = powercurve[int(bat_cont*10-240)]

Das ist nicht ganz richtig, denn es kommen dann nur die ersten 10 Werte aus der Variable powercurve zum Einsatz.

Weil der Bereich von 24,0V bis 25,0V bei einer Kommastelle eben nur 10 Werte hat...

 

Veröffentlicht von: @lupenrainer

Der Teil der danach kommt und wo er sich den Wert aus der Log holt sollte ja immer an der gleichen Stelle sein egal welcher identifier gesetzt ist oder?

Oder müsste man da eventuell noch ein paar Zahlen anpassen dass er an die richtige Stelle in der Zeile springt?

Mit ein wenig Glück, klappt das! 😉 

Wenn du es nicht hinbekommst, kannst du mal die entsprechende Zeile vom vzlogger.log zeigen.

 

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 778
Themenstarter  

Achtung veraltet! Inzwischen wird zwischen 48 und 51 V geregelt!

Wenn es nochmal gebraucht wird, bitte fragen.

 

Ich wollte es jetzt auch wissen. Die Formel für 24V (8S) Akkus ist:

bat_p_percent = (bat_cont - 23.55 ) **4.333 *20

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
Seite 14 / 24
Teilen: