Hallo Leute
Heute möchte ich euch mal mein Projekt vorstellen, welches ich schon ne Weile im Testbetrieb habe.
Gleich zum Anfang auch mal der Hinweis, das ich dies alles auch in Videoform bereit gestellt habe. Ich darf es leider nicht verlinken - oder vielleicht doch? Für das Showcase? @Mods?
Worum gehts?
Ich habe ein 960Wp Balkonkraftwerk, bestehend aus 2 x 430Wp Modulen von Longhi und einem Hoymiles HM-800 - und wie es vielen ergeht - ärgert mich, das ich tagsüber, wenn ich arbeiten bin, die erzeuge Solarenergie sinnlos im Netz landet. Viele machen eine Nulleinspeisung, regeln also ihre Wechselrichterleistung auf den Hausverbrauch. Das ist eher nicht sinnvoll, weil die überschüssige Solarenergie einfach "verpufft".
Also Zwischenspeichern mit Akku - auch wenn dies verlustbehaftet ist, holt man noch Einiges raus. Hier bitte die Amortisierung nicht vergessen, für mich ist das eine Anlage zum Basteln (bin Elektroniker) - Geld verdient man, bei den Investitionen die zu machen sind, eher erst nach Jahren ^^
Mein Akku war dafür nicht geplant, denn ich habe noch eine 2. Anlage, welche als Inselsystem fungieren sollte, zum Handys und Modellbau Akkus laden usw. Von dieser werden wir den Akku nutzen - und gleich eine Nachteinspeisung realisieren, welche ca 200W / 10h bringen soll.
Also zusammengefasst mal mein Setup:
Anlage 1:
- 2 x 430Wp Longhi Solarmodule
- Hoymiles HM-800 Wechselrichter
- OpenDTU als Kommunikationsschnittstelle und zur Datenauswertung
Anlage 2:
- 150Wp Offgridtec Panel
- Victron 75/15 Solarladeregler
- 2 x 12V 100Ah LiTime LiFePo4 Akkus in Reihe (Autobatterie Style - also keine Datenschnittstelle)
- PLC-10 Batterie Equalizer (Damit mir die Akkuspannungen nicht auseinanderlaufen)
- Victron Smartshunt 500A (Um die Akkus "schlau" zu bekommen)
- OpenDTU-onBattery (Um Daten vom Akku usw auf den MQTT Broker zu bekommen)
- Meanwell HLG 480H-30-AB LED Treiber (Das fungiert als Batterieladegerät)
- Shelly Plus 0-10V Dimmer (Steuert den LED Treiber)
Server:
- Proxmoxserver mit Docker (Iobroker, Grafana, InfluxDB, Portainer) - es ginge auch ein Raspberry PI
Ich habe eine kleine Handzeichnung gemacht, wie das Setup aussieht.
Das mag erstmal verwirrend sein, ist es aber nicht. Die beiden Anlagen sind getrennt - die einzige Verbindung ist IOBROKER.
DISCLAIMER
Wenn ihr nicht, so wie ich, eine Elektrofachkraft seid, dann bittet bitte einen Freund, der es ist, euch zu unterstützen. Hier wird an 230V gearbeitet, was ihr als Laien unter keinen Umständen dürft. Es geht dabei um Leib und Leben! Auch die Brandgefahr bei nicht fachgerecht gemachten Crimpungen oder Anschlüssen, kann euch schnell mal euer Haus kosten. Das ist kein Spaß!
Ich mache hier keine "Anleitung", sondern nur ein Showcase. Verantwortlich seid immer noch ihr!
Dazu gehört vor allem:
- Absicherung - Ihr legt eure Sicherungen nach dem Leitungsquerschnitt aus, NICHT nach dem Strom den ihr "ziehen" wollt ^^
- Physikalische Gegebenheiten beachten - Dazu zählen vor allem gleiche Leitungslängen und Querschnitte
- ORDENTLICHES Werkzeug benutzen. Crimpungen im Schraubstock sind unzulässig und können zu Bränden führen
Lektion 1 - Wie funktioniert es?
Am Tage, wenn niemand da ist, speise ich fast 600W ein - das will ich vermeiden. Also messe ich per Shelly 3EM meinen Hausverbrauch. Ist dieser negativ, dann wird ein Steuersignal generiert (und nur dann), welches den Shelly Dimmer ansteuert. Dieser wiederum, steuert das 0-10V Signal des Meanwell Netzteils.
Aufgrund der Regelung von Iobroker, wird nach jedem gültigen Wert des Shelly 3EM erneut gerechnet und das Steuersignal generiert - und dann an den Dimmer gesendet. Damit haben wir im 2. Messvorgang, die veränderte AC Leistung des Hauses wieder mit drin. Logisch, wenn das Netzteil unsere Batterie lädt, benötigt es ja AC Leistung, welche wir dem HM-800 "klauen". Das geschieht so lange, bis der Hausverbrauch Nahe Null ist. Also die "negativen -600W" des HM-800 werden über das Meanwell Netzteil in den Akku geschoben.
Lektion 2: Fallstricke
- 2.1 Meanwell Netzteil
Beim Meanwell Netzteil bitte aufpassen. Selbst in den eigenen PDF Dateien, zeigt Meanwell die falschen Netzteile. Was wir brauchen, ist ein HLG mit der gewünschten Leistung. Die Meisten nehmen das 600er - ich habe das 480er. Bitte dabei beachten, dass das 600er Netzteil ca 20A Strom liefert, das 480er etwa 16A.
Leitungsquerschnitte / Absicherung beachten!
Wichtig dabei ist dann zum Einen die Ausgangsspannung, welche zu eurem Akku passen muss - und die Kennung "AB", die aussagt, das wir eine einstellbare Ausgangsspannung haben und den 0-10V Steuereingang, um den Strom zu regeln.
Aufgrund der Tatsache, das "P=U*I" ist, also Leistung = Spannung * Strom, können wir mit dem einstellbaren Strom, die AC Leistung des Netzteils steuern - da unsere Ausgangsspannung nahezu stabil ist.
Wir benötigen auch eine einstellbare Ausgangsspannung, da nahezu alle Netzteile zu keinem unserer Akkus passen, was die Ausgangsspannung angeht. Da bitte drauf achten, das richtige zu kaufen. Da ich eine Ladeschlussspannung von ca 28,8V haben möchte, geht nur das Netzteil mit der 30 in der Typenbezeichnung.
Bitte hier auch beachten, das zb das HLG-240H-30-AB - obwohl es AB im Namen trägt, keine einstellbare Ausgangsspannung hat. Da bitte genau im Datenblatt gucken!
- 2.1.1 Schottly Dioden
Ich habe noch 2 x 20A Schottky Dioden parallel geschaltet und zwischen Netzteil und Akku geschaltet. Somit verhindere ich, dass das Netzteil rückwärts Spannung vom Akku bekommt. Auch ist diese Leitung abzusichern. Schottky Dioden sind Dioden mit einem kleineren Spannungsabfall in Durchflussrichtung. Wenn ihr sie verwendet, bitte auch beachten, das eure einzustellende Spannung am Netzteil, dann um genau den Spannungsabfall an den Dioden erhöht werden muss. Beispiel: Eure gewünschte Ausgangsspannung ist 28,8V. Multimeter dran, einstellen. Dann Dioden rein. Den Spannungsabfall bei Maximalstrom messen, also direkt an beiden Beinchen der Dioden - diesen Wert dazu addieren zu der einzustellenden Ausgangsspannung am Meanwell.
Auch 2 x 20A Schottky Dioden in parallel, können bei 16A sehr warm werden, weshalb meine auf einem Kühlkörper untergebracht sind.
- 2.2 Shelly Dimmer
Hier bitte aufpassen, der Shelly Dimmer ist ja dafür vorgesehen, in einer Schalterdose zu verschwinden - und damit wird er mit 240V versorgt. Das bitte zusätzlich absichern und am Besten in ein Kunststoffcase packen, das man sich nicht daran verletzen kann - aber noch WLAN Empfang gegeben ist.
- 2.3 Die Regelung
Bitte löst euch vom Gedanken, das man mit so einer Lösung komplett auf NULL kommt - das ist alleine der Übertragungsgeschwindigkeit und dem geschuldet, welche Komponenten wir haben. So einen Hoymiles Wechselrichter kann man so alle 5 Sekunden mal was sagen, was er machen soll, oder fragen, ob er neue Daten hat. Dies verzögert natürlich etwas. Auch die Übertragung unserer Messwerte vom Shelly 3EM sind per MQTT verzögert - weshalb ich diesen direkt anspreche. Dazu später mehr im Code.
Lektion 3: Der Code
Ich nutze natürlich Iobroker in der letzten Version. Auf einem Proxmox-Server in Docker. Installiert sind folgende Adapter:
- Shelly
- MQTT
- Javascript
- InfluxDB (optional für eine schöne Grafana Oberfläche)
- Node-Red
Da ich leider nicht coden kann, habe ich alles per Node-Red und Blockly gemacht. Wenn wir den einen Teil noch in ein Blockly bekommen, wäre Node-Red überflüssig.
Ich nutze mehrere Scripte. Ein Überschuss-Steuerscript (PI von Paul) und Hilfsscripte, wie zb eine 30% SoC Notabschaltung. Dazu später mehr.
Ich habe sie extra in verschiedene Scripte gepackt, damit ich sie auch mal abschalten kann, per Weboberfläche.
Ich habe mir mit Node-Red eine kleine Übersicht gemacht, damit ich auf einen Blick sehe, was los ist. Es ist nicht schön, aber praktisch.
Wie man hier sieht, sind 98% des Node-Red Flows für diese Anzeigen. Die Daten stammen vom OpenDTU-OnBattery, welches ja meinen Smartshunt von Victron per VE.Direct anspricht. Kommen per MQTT rein.
Wichtig ist eigentlich nur der Teil rechts unten. Um aus dem Shelly 3EM schnell die Total Power meines Hauses zu bekommen. Per MQTT schickt der Shelly leider sehr unregelmäßig Daten - und da der PI sich auf diese Daten stützt, ist dies natürlich unschön, also hole ich mir dies per Polling, aktiv, alle 2 Sekunden. Dies kommt noch ins Blockly - dank Paul habe ich dafür ja jetzt eine Lösung. Dann wäre Node-Red tatsächlich nur als Oberfläche für die Anzeigen nötig. Links oben im Flow seht ihr den Teil, den ich nutze, um per OpenHASP ein SPI Display anzusteuern, welches mir aufm Tisch diese beiden Werte anzeigt.
Der PI von Paul ist ja sicherlich bekannt.
Hier mein 30% Notabschaltungsscript. Dieses soll verhindern, das, wenn ich den HM400 mal vergesse auszumachen, oder sonst irgendwas schief läuft, das nicht die BMS der Akkus wegen Unterspannung abschalten Der State of Charge kommt hier ebenfalls von OpenDTU-OnBattery. Dieses so zu modifizieren, das es mit dem Laderegler und dem Smartshunt spricht, war einfach. Ich werde dazu in ein paar Tagen ein Tutorial Video machen.
Nun möchte ich gern noch beide Akkuspannungen wissen. Der Smartshunt misst die Gesamtspannung und die Mittelpunktspannung. Daraus können wir die Spannung des anderen Akkus ausrechnen:
Um den HM400 Wechselrichter, welcher mir meine Nachteinspeisung macht, auch mal per Hand zu oder abschalten zu können, musste ich mir auch ein Script machen. Da ich das aber als eine Art RS Flipflop wollte, musste ich es etwas anders lösen. Schickt man nämlich an OpenDTU permanent eine 1 auf das "on" Command, geht der WR nie aus, bzw wird gleich wieder eingeschaltet. Ich habe das so gelöst:
Einfach eine Variable erstellt, die ich setze. Dazu ein Script:
Die Automatisierte Nachteinspeisung habe ich noch nicht geschrieben, da ich sie noch nicht brauche. Kommt aber die Tage noch, weil ich es testen will, ob es so funktioniert, wie ich mir das vorstelle.
Das Alles geht sicher schöner, aber das ist meine Lösung Ich bin Pragmat, es muss funktionieren, nicht schön sein
Wenn ihr Fragen, oder Verbesserungsvorschläge habt, bin ich ganz Ohr.
Wenn ihr das lesen könnt, habt ihr bis zum Schluss durchgehalten - Danke
Liebe Grüße
Chris