reserve85 / HoymilesZeroExport

Zero Export Script for Hoymiles Inverters using AhoyDTU / OpenDTU and Tasmota Smart Meter inferface / Shelly 3EM / SHRDZM / Emlog / ioBroker
GNU General Public License v3.0
135 stars 31 forks source link

Batteriebetrieb #45

Closed reserve85 closed 1 year ago

reserve85 commented 1 year ago

Hallo,

Ich habe das Script jetzt seit gestern mit mit ahoydtu und einem HM-1500 auf 48V Batterie am laufen. Die Funktion ist wirklich sehr ordentlich. Alles andere, das Ich vorher probiert habe war nicht so gut, oder hat überhaupt nicht funktioniert. Als absoluter Neuling auf diesem Gebiet, eine Frage an die Profis, wäre es möglich den vom Inverter für die Strings gemessen Spannungswert für ein Änderung des Limit bzw. die Abschaltung des Inverters zu verwenden? Zum Beispiel möchte Ich ab 48V am String das Powerlimit auf 300W setzen und dann vielleicht ab 47V den Inverter ausschalten. Könnte man so etwas integrieren? Und wenn ja, wie in etwa müsste Ich da vorgehen?

mfg Dirk

Originally posted by @feeti1 in https://github.com/reserve85/HoymilesZeroExport/issues/28#issuecomment-1511724697 edit reserve85: ich lagere das mal aus.

feeti1 commented 1 year ago

DeepinBildschirmfoto_pcmanfm_20230427205444 @reserve85 Hier nochmal die aktuelle Regelung. Und meine Einstellungen in der config. DeepinBildschirmfoto_pcmanfm_20230427205643

feeti1 commented 1 year ago

Vor allen Dingen bei großen Sprüngen nach unten, dauert es mir gefühlt zu lange, bis es sich eingeregelt hat. Allerdings bin Ich mir mit der Wirkung von "slow_approx" auch nicht ganz klar, wie die Auswirkung ist. Wenn du dort für meinen Fall andere Einstellungen vorschlägst, werde Ich gerne probieren.

peff74 commented 1 year ago

@Ich110 Bei 24v Systemen regelt der Hoymiles nicht so sauber. Habe ich schon häufiger gelesen. Also besser in Richtung 36 oder 48 Volt

Ich110 commented 1 year ago

IMG_2551 Zur Zeit Sieht mein Verbrauch über Nacht so aus. Wollte eigentlich nicht über die Batterie-Voltage gehen. Mir würde die Begrenzung des HM300 auf 150 Watt reichen. So das nur die Spitzen in der Nacht noch etwas abgesenkt werden. Ich setz mich Morgen ran. Das Script läuft bei mir noch auf 1.14. Ich danke Euch und werde berichten.

reserve85 commented 1 year ago

Vor allen Dingen bei großen Sprüngen nach unten, dauert es mir gefühlt zu lange, bis es sich eingeregelt hat. Allerdings bin Ich mir mit der Wirkung von "slow_approx" auch nicht ganz klar, wie die Auswirkung ist.

mach mal Slow Approx auf 0, dann springt er immer direkt zum Zielwert. Für Akkubetrieb brauchst du das nicht. Und JUMP_TO_MAX_LIMIT ist im batteriebetrieb auch nicht notwendig, würde sagen sogar unerwünscht.

reserve85 commented 1 year ago

DeepinBildschirmfoto_pcmanfm_20230427205140 Hier ist mein HM-1500 begrenzt. Sofern du die Spannungen und Watt nach deinen Wünschen anpasst, sollte es problemlos mit der von reserve85 geleisteten Arbeit umzusetzen sein.

Dazu noch ein Nachtrag/Ergänzung: Die Reduzierung auf 750W funktioniert so nur bei AHOY, da hier die Watts an die DTU geschickt werden. OpenDTU benötigt in der WebAPI jedoch einen Prozentwert, daher muss bei OpenDTU immer die Inverter-Leistung bei HOY_MAX_WATTS angegeben werden. Zur Begrenzung habe ich deshalb in der neuen Version die Option HOY_BATTERY_NORMAL_WATT hinzugefügt, da kannst du dann auf 750W begrenzen.

also richtiger wäre:

HOY_MAX_WATTS = 1500
HOY_BATTERY_NORMAL_WATT = 750
HOY_BATTERY_REDUCE_WATT = 300
feeti1 commented 1 year ago

Danke für diese Erweiterung und Erklärung. Werde Ich heute am Abend mit einpflegen. Mein HM-1500 mag die Einstellung auf 300W nicht, er regelt dann maximal bis 218W DC. Und das auch nur nach Lust und Laune. Ich habe den Wert jetzt auf 400W gesetzt, damit regelt er jetzt bis 318W DC. Dieses Verhalten war mir allerdings schon bei openDTU mit niedrigen Watt Werten aufgefallen.

peff74 hat ja schonmal nach weiteren Möglichkeiten der Leistungsdrosselung gefragt. Nachdem jetzt alles so super läuft, wäre für mich auch die Frage, ob man über einer Spannung X zu Beispiel 52V die komplette Leistung freigeben könnte? Wenn ich das einfach in der config eingebe, kann die .py damit nicht umgehen,oder?

reserve85 commented 1 year ago

Mein HM-1500 mag die Einstellung auf 300W nicht, er regelt dann maximal bis 218W DC. Und das auch nur nach Lust und Laune. Ich habe den Wert jetzt auf 400W gesetzt, damit regelt er jetzt bis 318W DC.

Klingt fast so, als wäre ein Eingang offen? ist ja immer um die 3/4 der Leistung...

Nachdem jetzt alles so super läuft, wäre für mich auch die Frage, ob man über einer Spannung X zu Beispiel 52V die komplette Leistung freigeben könnte? Wenn ich das einfach in der config eingebe, kann die .py damit nicht umgehen,oder?

Das wäre denkbar. Also im Prinzip noch eine Regelstufe dazunehmen. Komme wahrscheinlich aber erst kommende Woche dazu.

peff74 commented 1 year ago

@feeti1

Ich verwende normale Gel Autobatterien, da diese für mich "kostenlos" zur Verfügung stehen.

Da hast Du nicht zufällig noch ein "paar" übrig^^ Dann kann ich mit das Zusammenbauen der 18650 sparen ;-)

feeti1 commented 1 year ago

@peff74

Das könnte schon sein. Aber 26kg pro 100AH sind schlecht zu versenden. ; )

@reserve85

DeepinBildschirmfoto_pcmanfm_20230428192126

Wenn Ich die 1500W eintrage, werden Sie auch sofort genutzt. Und diesen HTTP Fehler habe Ich mit der 1.28 zum ersten Mal gesehen. Der kommt aber nur sporadisch. Jetzt seit 10min nicht mehr.

peff74 commented 1 year ago

@feeti1 Kommt darauf an, wo Du herkommst Bin viel unterwegs und im Kofferraum ist Platz^^

reserve85 commented 1 year ago

Wenn Ich die 1500W eintrage, werden Sie auch sofort genutzt. Und diesen HTTP Fehler habe Ich mit der 1.28 zum ersten Mal gesehen. Der kommt aber nur sporadisch. Jetzt seit 10min nicht mehr.

Tatsache, das liegt daran dass ich im Solarbetrieb beim Init hochregele. Ist nur beim Start des Scripts. Um das zu verhindern ändere den Block mal (ab Zeile 725):

try:
    logger.info("---Init---")
    newLimitSetpoint = 0
    if GetHoymilesAvailable():
        for i in range(INVERTER_COUNT):
            SetHoymilesPowerStatus(i, True)
        newLimitSetpoint = GetMaxWattFromAllInverters()
        GetHoymilesActualPower()
        SetLimit(newLimitSetpoint)
    GetPowermeterWatts()
    time.sleep(SET_LIMIT_DELAY_IN_SECONDS)

in:

try:
    logger.info("---Init---")
    newLimitSetpoint = 0
    if GetHoymilesAvailable():
        for i in range(INVERTER_COUNT):
            SetHoymilesPowerStatus(i, True)
        GetCheckBattery()
        newLimitSetpoint = GetMinWattFromAllInverters()
        GetHoymilesActualPower()
        SetLimit(newLimitSetpoint)
    GetPowermeterWatts()
    time.sleep(SET_LIMIT_DELAY_IN_SECONDS)

Wenn das so passt, dann würde ich das so übernehmen. Woher der http Fehler kommt ist eine gute Frage, ich konnte das noch nicht beobachten. Vermutlich hast du ein IntermediateMeter in der config angegeben und keine IP-Adresse in der section?

feeti1 commented 1 year ago

DeepinBildschirmfoto_pcmanfm_20230428201708 @reserve85

Du bist echt ein Profi. Das läuft!!!

reserve85 commented 1 year ago

Was war mit dem http Fehler?

feeti1 commented 1 year ago

Du hattest Recht ein Tasmota stand auf "true"

28.04.2023 20:22:09 reserve85 @.***>:

Was war mit dem http Fehler?

— Reply to this email directly, view it on GitHub[https://github.com/reserve85/HoymilesZeroExport/issues/45#issuecomment-1527932340], or unsubscribe[https://github.com/notifications/unsubscribe-auth/A67YNLIGDRNKLKAJ36XS6GTXDQDE7ANCNFSM6AAAAAAXCGEUUE]. You are receiving this because you were mentioned.[Verfolgungsbild][https://github.com/notifications/beacon/A67YNLONL3LJSWE7F5JUQZTXDQDE7A5CNFSM6AAAAAAXCGEUUGWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTS3CJS3I.gif]

reserve85 commented 1 year ago

Ich bin ein Hellseher ;-)

feeti1 commented 1 year ago

DeepinBildschirmfoto_Bereich auswählen_20230429080520

Hallo, er startet leider nicht neu nach Abschaltung. Die Spannung für Restart steht auf 49,5V.

reserve85 commented 1 year ago

Kannst du mir das komplette Log schicken (kannst du in eine Datei pipen)? Laut deinem Ausschnitt ist der bereits eingeschaltet worden, ggf. wurde das von Ahoy nicht angenommen. Wie ist in der config der Wert von SET_LIMIT_RETRY?

hab noch was entdeckt was eigentlich durch den Limit retry Counter irrelevant ist:

ziemlich am Ende steht:

if newLimitSetpoint != PreviousLimitSetpoint:
    SetLimit(newLimitSetpoint)

Da müsste die if… Zeile gelöscht werden. Ist aber nicht die Lösung deines Problems

feeti1 commented 1 year ago

Also SET_LIMIT_RETRY hatte Ich auf 5 reduziert. Sollte Ich da lieber die 10 drin lassen?

Und jetzt darf Ich mich wieder outen, wie "pipe" ich denn den Datenstrom des Log in eine Datei? Das muss ja genau zu dem Zeitpunkt passieren, wenn der Inverter gestartet werden soll und dem nicht nachkommt.

reserve85 commented 1 year ago

ja ich würde da mehr als 5 einstellen.

Die Loghistorie ist gespeichert. Mit

sudo journalctl -u HoymilesZeroExport.service -n 20000 -e > log.txt

müsstest du die letzten 20000 Einträge speichern können. Kannst du ja reduzieren. Ich würde dann mal schauen ob ich da was erkennen kann. Kannst du mir auch gerne via email senden oder hier als attachment einfügen.

feeti1 commented 1 year ago

Also,

ich habe die Retrys wieder auf 10 gesetzt. Und die If Zeile habe Ich gelöscht. Heute hat alles funktioniert. Werde das Mal weiter beobachten.

29.04.2023 13:47:16 reserve85 @.***>:

Nene das ist gespeichert

sudo journalctl -u HoymilesZeroExport.service -n 20000 -e -f > log.txt

musste die letzten 20000 Einträge speichern. Kannst du ja reduzieren.

— Reply to this email directly, view it on GitHub[https://github.com/reserve85/HoymilesZeroExport/issues/45#issuecomment-1528769936], or unsubscribe[https://github.com/notifications/unsubscribe-auth/A67YNLJ5QYXNY5OS23BERT3XDT5UHANCNFSM6AAAAAAXCGEUUE]. You are receiving this because you were mentioned.[Verfolgungsbild][https://github.com/notifications/beacon/A67YNLO5LHZ6QCJEQUBYUUTXDT5UHA5CNFSM6AAAAAAXCGEUUGWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTS3D4WZA.gif]

feeti1 commented 1 year ago

DeepinBildschirmfoto_Bereich auswählen_20230430201143

Hat eventuell dazu jemand eine Idee? Das Limit steht auf 750W und es werden werden nahezu 900Watt AC eingespeist. Die Abweichung zwischen Vorgabe durch Ahoy und Ausgabe durch den HM-1500 ist immer vorhanden. Ich habe jetzt extra nur 2 Eingänge angeschlossen, um es besser sichtbar zu machen. Muss Ich eventuell auf einen HM-800 wechseln?

reserve85 commented 1 year ago

Also ich habe den gleichen inverter und sowas ich mir noch nicht aufgefallen. Aber halt Solarbetrieb…

feeti1 commented 1 year ago

Im Solarbetrieb liegt die Eingangsspannung in der Regel deutlich niedriger. Vielleicht hängt es damit zusammen. Meine Trina Solar können maximal 49V erreichen, da liege Ich die meiste Zeit drüber. Wenn ich einen Shelly Plug für die Leistungsmessung des WR benutze, und in die Regelung einbinde. Würde das einen Unterschied machen?

reserve85 commented 1 year ago

Nee bringt nix. Aber eigentlich macht’s ja auch nix oder?

Du könntest aber was probieren: stelle mal ein 1780Watt bei HoymilesMaxWatts und 750 bei normalWatt. Damit könntest du die Differenz kompensieren.

Edit: ah ne das geht nur bei openDTU, weil da mit Prozent gerechnet wird. Bei dir hilft es dann nur die normal_Watts zu verringern bis du Max 750 erzeugst.

Edit 2: Ich könnte recht einfach einen Faktor mit einbauen um die Differenz zu kompensieren.

Edit 3: Habe den Faktor in die neue DEV eingebaut, damit solltest du die Überproduktion kompensieren können.

reserve85 commented 1 year ago

kann ich hier zumachen, läuft alles bei euch?

peff74 commented 1 year ago

Moin,

denke schon. Läuft ja problemlos :-) Bin allerdings zwischenzeitig auf Open-DTU on Batt umgestiegen. Für mich praktikabler, da alles auf einem Kontroller läuft. Allerdings haben die keine Leistungsreduzierung ab niedriger Batteriespannung... irgendwas ist immer.