AC/DC Speicherlösung mit Victron MPPT, Pylontech, Hoymiles, Huawei und openDTU-OnBattery

@energy-geek freut mich, dass das geholf hat bzw. auch, dass es immer mehr Nutzer mit Problemen ab den August Versionen gibt. So wird die Wahrscheinlichkeit, dass das gefixt wird, deutlich erhöht :-).

Nutze auch den wroom mit USB c und hatte jeweils deutliche Verbesserung in der Stabilität, nachdem ich 220yf Kondensatoren hinzugefügt hatte (einfach einen Zehnerpack bestellt, dann hab ich immer einen auf Lager ;-)). Hab sie dann bei 4-5 ESP32 installiert und jeweils deutliche Verbesserungen gehabt.

Nutze die Leistungssteuerung von on battery nicht (sondern über ein Skript aufm iobroker), daher kann ich zum zweiten nichts beitragen...

Im Grunde sind das keine Verbindungsabbrüche.

Das Problem ist das das Netzteil alle Werte einzeln schickt und man muss sie schnell abholen sonst werden die Nachrichten durch die nächste Nachricht überschrieben. Die Anzeige wird aber nur zurückgesetzt wenn eine bestimmter Wert empfangen wird.

Nachdem im Moment alles an Funktionen in einer großen Schleife läuft kommt die Routine die diese Werte abholt zu selten zum Zug. Das heißt es gehen Werte vom Netzteile verloren

Werte setzen geht davon unabhängig immer.

Ich habe hier die Kommunikation mit dem Netzteile als eigenen Thread implementiert. Das scheint zu laufen ich versuchte aber noch zu verstehen warum ich gelegentlich mal einen Neustart sehe. Da wollte ich noch etwas weiter untersuchen bevor ich das als Pull request bereitstelle

https://github.com/MalteSchm/OpenDTU-OnBattery/tree/huawei_interval_fix

1 „Gefällt mir“

Wenn ich die Maximal Spannung und Maximalstrom vom Netzteil manuell einstelle im Webinterface, dann geht das Netzteil immer zuerst aus und erst nach 30 Sekunden oder so geht es wieder an und gibt die eingestellte Leistung aus. Das ist extrem hinderlich, geht dass auch ohne zwischendrin Pause machen, kann das Netzteil auch einfach im laufenden Betrieb die Ausgangsleistung anpassen bis das neue Ziel erreicht wird.

Wie kann man per HTTP POST die Ausgangsleitung des Netzteil während dem Betrieb ändern, um die Nulleinspeisung zu realisieren?

Hi @energy-geek, ja, das geht.
Ich mache das aktuell schon über MQTT. Da sind die korrekten Topics

/huawei/cmd/limit_online_current

und

/huawei/cmd/limit_online_voltage

Es geht aber auch über REST, die REST API Dokumentation ist an der Stelle nciht ganz aktuell - dieser Request fehlt z.B. in der Doku komplett (es ist nur der GET aufgeführt). Aber aus dem Code kann man das ganz gut "reverse engineeren". Habe ich gerade eh' gemacht, da ich meine eigene Ladelogik in in ESPHome und nur mit REST (ohne MQTT) baue.:
Um die Leistung (bzw. Spannung und Stromstärke) des Huwei zu ändern, muss man den folgenden HTTP Request schicken:

POST    http://<FQDN / IP von OpenDTU>/api/huawei/limit/config

Headers:

Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(<user>:<password>)

Body (in x-www-form-urlencoded, also <key>=<value> Format):

data="{"online":true,"voltage_valid":true,"voltage":52,"current_valid":true,"current":1}"

Die Attribute natürlich entsprechend belegen. Analog Dialog in der UI:

Die API Dok auf https://github.com/helgeerbe/OpenDTU-OnBattery/blob/development/docs/Web-API.md zeigt ganz gut, wie man das mit CURL umsetzt.
Die Werte musst Du aus dem PV Überschuss berechnen aus P = U * I -> bei U fix auf z.B. 52 V ergibt sich also I = PV-Überschuss / 52. Dann wird der PV-Überschuss genau verbraucht. Genau so funktioniert meine eigene Ladelogik.

1 „Gefällt mir“

@cacu15 Vielen Dank für deine Ausführliche Antwort, das werde ich mir auf jede Fall mal genauer ansehen und etwas rum experimentieren. Ich denke ich werde die Ladelogik irgendwie mit einem Python Script als Daemon oder Systemd Service umsetzen auf meinem kleinen Linux Homeserver, dort läuft auch iobroker + influx + grafana für die Statistiken.

Ich weiß es sehr zu schätzen, dass hier im Forum so viel und schnell geantwortet wird, denn trotz meiner zahlreichen Erfahrungen mit solchen Elektro Bastel Projekten würde ich ohne Hilfe ewig brauchen um das alles vernünftig zum Laufen zu kriegen.

VLG

Ich frage mich, warum macht der das Netzteil eigentlich nie aus per Slot Detect, wenn es nicht gebraucht wird, dafür ist SD doch da oder nicht?

Wenn ich Netzteil Ausgangsstrom auf 0A runter Stelle und längere Zeit gar kein Strom mehr fließt, dreht der Lüfter immer laut und munter weiter. Das Netzteil wird nie richtig in Ruhe versetzt, obwohl es nicht gebraucht wird. Es gibt auch keine Möglichkeit es irgendwie manuell abzuschalten im Webinterface. Selbst wenn ich AC Ladegerät in OpenDTU wieder ganz abschalte, läuft das Ding immer weiter und schaltet nicht aus, so wie es sein sollte.

Muss man das auch per MQTT oder HTTP REST selber machen oder geht das gar nicht?

@MalteS Ich dachte du hättest mal gesagt, dass standardmäßig sich die Slot Detect Steuerung einfach nach der Ausgangsleistung richten würde, tut sie bei mir aber nicht.

Es wird einmal nachdem verbinden vom ESP mit Strom das Relais eingeschaltet und dann nie wieder aus, nur zeitweise wenn man im Webinterface neu Ströme/Spannungen einstellt. Das ergibt irgendwie keinen Sinn.

@energy-geek have schon mal gehört das bei anderen auch der Lüfter weiter läuft. Bei mir tut er das nicht.

Trenne doch mal slot detect manuell und schau was dann passiert

Ja, das ist bei mir auch so, dass der Lüfter immer an ist. Ich habe die Slot Detect PINs versuchsweise auch direkt fest verbunden und getrennt. Das hat mein Netzteil gar nicht interessiert, der Lüfter war immer an, sobald AC verbunden war. Deshalb (und wegen des Idle-Stromverbrauchs) nutze ich Slot Detect aktuell gar nicht, sondern schalte das Netzteil AC seitig über ein Shelly Pro 2 PM an und aus.

Da ich das Laden eh separat außerhalb von OpenDTU implementiert habe, ist das bei mir kein Problem. Wenn man die neue dynamische Leistungssteuerung für das Huawei nutzen will, dann wird es schwieriger. Die AC seitige Schaltung ist auch zu träge, um sie wie Slot Detect ständig an und aus zu schalten.

Bei mir ist es ein ticken anders. Natürlich kann ich das Relais einfach von dem ESP trennen dann ist slot detect zwangsläufig aus und das Netzteil geht dann samt Lüfter aus so wie es sein sollte. Also bei dir ist es nochmal komischer als bei mir @CaCu15

Was mich wundert ist, dass die Software sich seltsam verhält. Die Verkabelung ist korrekt denn wenn ich neue Leistungswerte eingebe manuell, zeigt sich das schalten von Slot Detect in Aktion, das Relais wird ausgemacht, es dauert eine Minute und es geht wieder an, ohne das ich das selber von Hand an/aus knipse. Aber das was SD eigentlich tuen sollte, nämlich abschalten im Idle wenn es nichts zu Laden gibt, das tut es nicht, obwohl ich ja gesehen habe das es prinzipiell in der Lage ist das zu tun.

Es handelt sich hierbei meiner Meinung nach um einen Anwendungslogikfehler oder Problem. Das Netzteil an sich verhält sich richtig und das Schalten des Relais funktioniert, es macht halt nur wenig Sinn wann der ESP es bei mir schaltet und wann nicht.

Meine Erwartungshaltung war wie gesagt, dass OpenDTU Slot Detect abschaltet sobald das Netzteil für eine Weile nichts zu tun hat - tut es nicht. Stattdessen schaltet es erstmal ab wenn ich einfach nur ein neues Leistungsziel definiere im Webinterface. Natürlich werde ich zur Not halt versuchen SD iwi manuell per MQTT oder HTTP zu steuern aber ist keine befriedigend Lösung, vor allem zu wissen das OpenDTU jeder Zeit ein aus schalten kann und ich nicht nachvollziehen kann warum es gemacht wird.

@energy-geek

Dann musst du genauer beschreiben was du für Werte einstellst und was das Netzteil an Messwerten gibt

Am besten mit dem Mitschnitt der Konsole

Ganz allgemein schaltet das Relais ja an und aus nur scheint das bei dir eine negierte Logik zu sein. Vertausch mal NO / NC am Relais

Ausgeschaltet wird wenn der Strom eine Minute unter einem Ampere liegt

@maltes Werd ich mal versuchen.

Meine Erstatz CAN Transceiver sind angekommen. Daran lag es aber nicht. Ich habe die serielle Konsole während Reboot verfolgt und es kamen die erwarteten Nachrichten mit Twai driver installed and Twai driver started und das wars. Es tauchen keine Fehler Meldungen auf aber es werden auch keine Nachrichten empfangen. Ich habe stark das Gefühl mein Pylontech US2000C sendet einfach ums verrecken keine CAN Messages über den Port raus und ich weiß nicht warum.

Das Ding ist im Prinzip Nagelneu und sollte eigentlich funktionieren. Habe schon ein Reset der Batterie versucht (4 Sekunden start button drücken) hat aber nichts geändert. Im Internet habe ich noch nichts besseres zum Thema gefunden. Ich bin echt ratlos, weil ich kann auch schlecht dem Händler sagen, das Produkt wäre Defekt nur weil OpenDTU damit nicht funktioniert.

Ich habe übrigens den identischen ESP32 zweimal und habe mit Breadboard Aufbau und frisch geflashter Firmware auf dem zweiten versucht das zum Laufen zu bringen. Kein Erfolg.

Eine direkte Messung der Spannungen auf den CAN H & L zeigt ergibt c.a. 2,6V konstant, habe leider keinen Oszi zur Verfügung, dann könnte ich wenigstens feststellen ob da überhaupt ein Signal auf der Leitung kommt.

@energy-geek
Habe gerade auch keine Idee mehr, was da falsch ist. Was man noch versuchen kann (bedeutet aber auch etwas "Bastelei"): Die Pylontech mal über das Console-Interface auslesen, siehe z.B. hier: https://github.com/irekzielinski/Pylontech-Battery-Monitoring.
Über die Konsole kann man viele verschiedene Detailinfos aus dem Akku lesen. Ich habe das inbes. gebaut, damit ich mal den Ladezustand/Spannung der einzelnen Zellen sehen und damit die Balancierung des Akkus beurteilen kann. Näheres zu der Konsole z.B. hier: https://www.photovoltaikforum.com/thread/118958-pylontech-us2000b-daten-%C3%BCber-konsole-rs232-auslesen/?pageNo=1 Damit kann man evtl. feststellen, ob etwas mit dem Akku nicht stimmt. Das ist dann auch der Zugang, den der Pylontech Kundendienst selbst nutzt. Aber Achtung: Über die Konsole kann man auch viel kaputt machen!
Statt Eigenbau des seriellen Anschlusses kann man auch fertige Kabel kaufen, z.B.: https://solar-assistant.io/shop/products/pylontech_usc
Ich nutze das ganze aktuell aus ESPHome und Node-Red mit Hilfe des Stream-Servers für ESPHome: https://github.com/mletenay/esphome-stream-server. Den Streamserver spreche ich aus Node Red an, wo ich dann einige der Befehle implementiert habe und das Ergebnis aus dem Stream parse.

@maltes Danke für den Hinweis mit den Relais Anschlüssen, hab das mal gewechselt, jetzt funktioniert der automatische Standby und wake up. Ich werde dann auch den automatischen Modus für die Regelung noch mal ausprobieren wenn die Sonne wieder mehr scheint.

Das Relais arbeitet also tatsächlich jetzt active low, das heißt aber auch sobald OpenDTU mal vom Strom getrennt ist wird Netzteil sofort per Slot Detect angeschaltet, hatte ich intuitiv anders hermum angenommen deshalb die Verwirrung bei mir.

Kann mir jemand die Bedeutung der zwei Spannungseinstellungen für das automatische Laden mit Netzteil erläutern, ich verstehe noch nicht so ganz was ich da Einstellen muss, so dass das Automatische Laden den Tag über aktiv bleibt, bis es entweder deaktiviert wird (manuell oder per API) oder eben die Batterie voll ist.

Ich würde gern erstmal 52,5V als Ladeschlussspannung verwenden. Die Default Werte mit 42V irritieren mich da etwas.

Ich deute die Logik so, der eine Wert ist zum einstellen bis zu welcher Grenze geladen werden soll und der andere wahrscheinlich für eine automatische reaktivierung wenn die Batterie nach Entladen wieder unter eine festgelegte Grenze fällt. Korrigiert mich bitte wenn ich das falsch verstehe.

Ich vermute ich müsste jetzt das Stop Limit auf die 52,5V setzten und den anderen Wert auf irgendwas darunter oder?

Ist so korrekt.

Nimm doch erst mal den Wert für die nominale Zellspannung mal #Zellen als Trigger für das Wiedereinschalten

Ok Danke,

Frage zum Überschuss Laden mit dem Huawei Netzteil. Die automatische Regelung kann erst ab 100W mindestleistung Laden, kleinere Werte werden nicht zugelassen. Wenn ich manuell kleinere Leistungen einstelle dann schaltet trotzdem nach kurzer Zeit Slot Detect ab, so als wären es 0W Lade Leistung.

Kann das Netzteil tatsächlich elektrisch gesehen nicht im unteren Leistungsbereich Laden (nur 0-99W Überschuss) oder verhindert es die Software aus Gründen wie schlechterer Wirkungsgrad in dem Bereich, oder um zu vermeiden dass es ständig an aus schaltet wenn der Überschuss diesen Leistungsbereich ständig betritt und wieder verlässt?

Mein Szenario bei mir zu Hause, ist aktuell nämlich noch mit nur zwei PV Modulen, heißt 600VA max AC Leistung, sprich gerade jetzt wo der Sommer langsam zu Ende geht und die Sonne nicht mehr so hoch steht, ist mein Überschuss sehr häufig in diesem Bereich unter 100W und wird somit weiterhin ins Netz verschenkt.

Mir ist natürlich bewusst, dass man den Sinn von 600W PV Leistung mit Speicher generell in Frage stellen kann und ich Plane auch auf 4 PV Module zu erweitern, trotzdem würde ich gerne begreifen warum das aktuell so ist und ob es nicht Sinn machen würde schon ab z.B. 20W Überschuss zu Laden, wenn es technisch möglich ist

@energy-geek
Bei unter 100W macht das Laden mit den Ladegerät kaum noch Sinn, denke ich. Bei mir zieht das Netzteil (laut eigener Messung) schon im Leerlauf ca. 10W, die bei so niedrigen Ladeleistungen einen großen Anteil des Überschusses "auffressen". Da dann noch der Überschuss durch ständige Änderungen des Hausverbrauchs und der Sonneneinstrahlung variiert, kommst Du da vermutlich sehr häufig dahin, dass Du den Akku mit Netzbezug statt PV-Überschuss lädst. So schnell kann man das Netzteil ja gar nicht nachregeln. Und wenn Du mit Netzbezug lädst , dann macht es keinen Sinn mehr - außer evtl. Du hast Tibber o.ä. und lädst in Zeiten mit niedrigem Preis. Aber selbst dann lohnt sich das wegen Wandlerverlusten nur bei sehr großen Preisunterschieden.
Daher dann lieber etwas eingespeister Überschuss als Akku mit Netzbezug laden. Bei 40 ct/kWh Kosten für Netzbezug tun die Wandlungsverluste noch mehr weh.

Wenn Du nur 2 Module hast (aber vermutlich auch bei 4 Modulen) wäre es doch viel effizienter, den Akku DC seitig zu koppeln, statt AC seitig über das Ladegerät. Also die Module an ein VICTRON SmartSolar hängen, statt an einen WR. Dann sparst Du Dir die 2-fachen Wandler-Verluste DC-AC und zurück.

Sehr ich genauso

Bei diesen ganzen Sachen gibt es irgendwo eine Grenze wo das weiter optimieren irgendwo sinnlos wird. Bzw. Wo ich nicht mehr die Zeit einstecken will

1 „Gefällt mir“

Also ich kenne natürlich die Nachteile von AC-Kopplung an sich und habe mich hauptsächlich dafür entschieden, weil die PV Module auf einem Garagendach sind, welches auch nicht direkt neben unserem Haus steht (dazwischen sind andere Häuser) und ich den Speicher + Elektronik nicht in der Garage installieren wollte (Platz, Temperatur, Einbruchsicherheit, etc.). Alles was die Garage mit unserem Haus verbindet, ist der dortige Stromanschluss.

@CaCu15 Was deine Argumentation angeht, warum Laden mit Netzbezug keinen Sinn macht, habe ich eine etwas andere Auffassung. Wir haben übrigens kein Tibber aktuell darum gehts mir nicht.

Wenn ich mit einer Roundtrip Effizienz von 70% rechne für das AC gekoppelte System [ Überschuss (AC) --> Akku (DC) --> Nulleinspeisung (AC) ] und man jetzt sagt man will keine AC Ladeleistung unter 100W, würde es trotzdem rein rechnerisch immer noch lohnen, wenn man z.B. mit nur 40W echtem PV Überschuss + 60W Netzbezug lädt um auf die Mindest Ladeleistung von 100W zu kommen.

Später Nutzbare Leistung des PV Überschuss: 0.7 * 40W = 30W

Verlustleistung durch Laden mit Netzbezug: (1-0,7) * 60W = 18W

Effektiver Gewinn durch Laden mit Netzbezug Anteil: 30W - 18W = 12W ( --> Schwellenpunkt abhängig von systembedingter Roundtrip Effizienz)

Nennt mich ein Erbsenzähler, die Beispiel Werte sind natürlich drastisch gewählt und mir ist auch bewusst, dass es für alle die mehr als zwei Module haben schon deutlich weniger relevant ist und für alle die DC-Kopplung verwenden können ist es sowieso irrelevant. Dennoch würde die Maßnahme den Eigennutzen erhöhen ohne die Wirtschaftlichkeit zu verschlechtern. Wie viel Unterschied es einem System letztendlich bringt, hängt dann nochmal maßgeblich davon ab in welchen Bereichen die PV-Überschuss Leistung am häufigsten liegt über die Zeit.

In meinem speziellen Fall gehe ich davon aus, dass mindestens 15% meiner gesamten Überschuss Energie im Herbst/Winter für Umme ins Netzt flöten gehen, wenn alles <100W Überschuss verschenkt wird.

Amortisationsdauer hängt ja auch wieder direkt ab vom Eigennutzenanteil.