Im Nachbarthema ( das hier ) bekam ich die Frage, wie ich ungefähr dasselbe mit dem IO-Broker erledige statt mit OpenDTU-onbattery. Daher stelle ich hier mal meine Anlage vor, dann bleiben die unterschiedlichen Konzepte IO-Broker versus OpenDTU-onbattery thematisch getrennt.
Anlage:
4 kWp, Nulleinspeisung mit Hoymiles, Victron, IO-Broker, Pylontech-Akku, IR-Lesekopf. Aufbau wie im Schaubild unten.
Im Winter ist nur einer der beiden HMS-500 aktiv, im Sommer beide. Das IO-Broker-Skript ist sozusagen die Wintervariante, weil nur ein HMS-500 angesteuert wird, aber man kann da ja beliebig viele Zeilen für weitere WR einfügen und die Leistungsberechnung auf die neue mögliche Nennleistung anpassen.
Der IR-Lesekopf vom Hauszähler sendet einen langen String, der im oberen Bereich des Skripts zerpflückt wird und in Variablen geschrieben wird (zur weiteren Berechnung). Die interessanten Variablen werden alle in eine influx-Datenbank geschrieben und mit Grafana visualisiert. Gerade diese Visualisierung bringt sehr viel fürs Systemverständnis, weil man genau sieht, was was wie regelt und wo Fehler sind usw.
So konnte ich kürzlich beim Betrachten der Kurven sehen, dass sich meine Freundin die Haare mit kaltem Fön fönt. Mit heissem Fön hätte das Stromdelta deutlich höher liegen müssen. Sie hat meine Vermutung bestätigt und fühlt sich ein bißchen wie bei 1984
Rund um die Uhr "näherungsweise" Nulleinspeisung mit folgenden Regelzielen:
- Balkon und Terrasse versuchen auf -100W...0W zu regeln (also leichte Einspeisung)
- Garage hat das Regelziel +20W
Diese beiden Regelzielfenster sind in der richtigen Reihenfolge, sodaß sie sich logisch ergänzen und es zu keiner gegenseitigen Beeinflussung kommt.
Beispiel 1: Balkon+Terasse sind auf -50W Hausverbrauch eingeregelt. Die Garage bleibt aus, weil Regelziel +20W.
Beispiel 2: Hausverbrauch +1000W. Balkon und Terasse geben Vollgas, und die Garage liefert den nötigen Rest.
Regelungsarten:
a) Balkon und Terrasse: wird das Zielfenster von -100W...0W verlassen, dann werden die beiden HM-600 +5% oder -5% hoch- oder runtergeregelt. Der erlaubte Absolut-Regelbereich ist auf 15%...100% eingestellt, unter 15% gab es Probleme mit Schwingen. Es ist eine langsame Regelung, aber sie funktioniert gut. Dieses langsame Herantasten war nötig, weil Balkon und Terrasse in verschiedene Himmelrichtungen zeigen, deswegen ist eine Vorabberechnung der nötigen Wechselrichter-Aussteuerung nicht möglich, wenn ich beide HM-600 gemeinsam drosseln will.
b) Garage: Mit den Eingangswerten "aktuelle Zählerleistung" und "aktueller Wechselrichterleistung" wird ein Delta errechnet, was der Wechselrichter mehr oder weniger liefern müsste, um das Regelziel von 20W zu erreichen. Die neu errechnete Wechselrichter-Aussteuerung wird dann sofort gestellt, ohne langsame Annäherung wie in a). Gute und schnelle Regelung. Absolut-Regelbereich 3%...100%. Weniger als 2 oder 3% soll man bei den Hoymiles nicht stellen.
SOC Akku:
Der Pylontech ist über das hier auslesbar und sendet über MQTT an den IO-Broker. Dort habe ich eine Variable "SOC in Ordnung". Unter 20% geht die auf "falsch" und der Garagen-Wechselrichter wird ausgeschaltet. Über 50% geht sich wieder auf "wahr" und der Garagen-Wechselrichter wird wieder freigeschalten.
Keine AC-Akkuladung mit Netzteil:
Zeitweise hatte ich noch die Möglichkeit eingebaut, Überschüsse von Balkon und Terrasse mittels regelbarem Netzteil in den Akku zu laden. Es hat funktioniert (sogar mit einem dritten Regelzielfenster), aber es hat sich gezeigt, dass das bei mir nicht notwendig ist. Bei gutem Wetter reichen die 2,4 kWp der Garage meistens schon alleine, um den Akku zu laden. Bei schlechtem Wetter haben Balkon und Terrasse keinen Überschuß. Für die wenigen Wetterlagen dazwischen wollte ich keine Regelungslogik vorhalten, das macht es nur komplizierter als nötig.
Nulleinspeisung Balkon und Terrasse, "warum?":
Der Netzbetreiber will meinen Strom ja nicht, ich habe bei der Balkonkraftwerk-Anmeldung unterschrieben "verbrauche den Strom selbst". Also mache ich das auch so.
PS: Jetzt brauche ich nur noch eine Lösung, wie man das jpg vom Skript, das 2578 Pixel hoch ist, hier in eine lesbare Form reinbekommt. 90 Grad gedreht, wieder lesbar.