NEWS
Regelung eines Hoymiles Solarinverters (Nulleinspeisung)
-
@andi_grafa
Nochmal zu Klarstellung:
Ich begrenze den WR auf 600W als persistent limit. Mit diesem Limit startet der WR jeden Morgen neu. Zwischen Sonnenaufgang und Untergang folgt er mit einem non-persistent Limit dem Verbrauch zwischen 30% (von mir willkürlich gesetzt, da geht auch jeder andere Wert) und 100% (die setze ich um Fehlermeldungen zu vermeiden, wenn der WR mit über 100% angesteuert wird) seiner Leistung. Ziel ist dabei die minimale Einspeisung. Sollte irgendwann einmal ein Akku dazukommen, muss ich das Script natürlich anpassen.
Wenn der IOBroker mal ausfällt dann läuft er auf 600W, bzw. startet am nächsten Morgen damit und bleibt da, bis das Script wieder regelt. -
@andi_grafa
Ich denke nicht dass nur klassische Begrenzung auf 600W das einzige Thema ist. Wenn ein offizielles 600W BKW angemeldet ist, aber ein HM-1500 dran hängt, dann macht Nulleinspeisung sogar viel Sinn, wenn man nicht auffallen will. -
@samson71
und der Meßstellenbetreiber ist nicht in der Lage, die maximale Einspeiseleistung auszulesen?? Denn die Regelung der Nulleinspeisung ist nicht so schnell, dass der Zähler nicht auch mal -1.400 W sieht!?? -
@andi_grafa
Im Normalfall wird nur die insgesamt eingespeiste Menge erfasst. Nicht mal separat pro Phase. Für das Erkennen solcher Spitzen sind Standardzähler nicht geeignet. -
@andi_grafa
Das hier ist der Typ meines Stromzählers.
https://emh-metering.com/produkte/haushaltszaehler-smart-meter/ehzm/Hier ist die Bedienungsanleitung zu meinem Stromzähler.
Ich konnte da zur phasengenauen Messung nichts finden.
https://emh-metering.com/wp-content/uploads/2022/11/eHZM-BIA-D-1.11.pdf
Siehe Seite 12.Damit reicht die saldierende Datenerfassung des Zählers völlig aus. Der Hichi Lesekopf ist die billigste Möglichkeit, die Daten zur Steuerung zu nutzen.
-
@carsaab
Ich meine z.B. das hier. Du willst den WR mit 30% laufen lassen? Habe "schreibe Object ID" noch nie genommen.
Ich hätte aus dem Bauch heraus "steuere" dafür genommen.
-
@gonzokalle
Ich hatte denselben "Bauch" und nahm zunächst
Ergebnis: "Error: String value received, number value expected"
Dann hat sich die OpenDTU auf gehängt und habe sie vom Strom getrennt und neu gestartet. Es lief einfach nicht - keine Ahnung warum - und irgendwann auch keine Lust mehr zu suchen - also griff ich zu alternativen Ansteuerungen.
Mit dem Script wie ich es geteilt habe läuft alles wie geölt. Als Value wird eine Zahl übergeben - super.
Nach weiteren Verbesserungen habe ich dann nicht mehr gesucht, gut genug ist gut genug oder auch "Stumpf ist Trumpf".
Ich habe mir vorher selber in Blogs einen Wolf gesucht und viele Posts gesehen, die überhaupt nicht zielführend waren.
Als alles lief, dachte ich, das hilft dem einen oder anderen vielleicht, wenn er oder sie ein Script bekommt, das zumindest bei einem erfolgreich läuft.Und mit den 30% läuft der WR ja nur solange, wie er weniger als 300W liefert. Ab da wird in den Grenzen zwischen 30 und 100% geregelt. Da kann man auch andere Zahlen reinschreiben.
Das ist unterhalb der Anmeldung und ich schreibe nicht ständig in die DTU. Die 30% entsprechen 450W, also habe ich noch einen Puffer, für den Fall das der WR in der Annäherung zu gesetzten Grenze unpräzise regelt und ich dann die nötige Grenze nicht erreiche - z.B. 450W (30%) Grenze gesetzt und er liefert nur bis 448W wegen einer Ungenauigkeit im WR. Dann passiert halt nichts. Also ein Puffer um auf der sicheren Seite zu sein. In allen IT Themen gehen wir alle oft davon aus, das alles präzise läuft. Die Annahme ist aber leider oft falsch und wenn Mess- und Regelungenauigkeiten reinspielen, dann ist die Verzweiflung oft nicht weit weg. Also habe ich mich hier mit der groben Kelle zufrieden gegeben.
Ich rede mir ein, daß es gut sein sollte, wenn ich so wenig wie möglich regel und soviel nötig, aber nicht mehr.
Deshalb habe ich die Regelung gesetzt. -
Alles richtig was du sagst.
Ich habe nur nachgefragt, weil ich es nachbauen will.
Beim importieren des Blocklys bekomme ich einen Fehler.Noch zwei Fragen.
Warum schaltest du den WR über die Steckdose?
Steuerst du über openDTU-Adapter oder Mqtt-Adapter? -
Habe es mal mit "steuere" nachgebaut.
"WR Erzeugung" ist bestimmt Watt in DC? -
AC Leistung. ist korrekt, es geht um die Wechselstromeinspeisung - der Stromzähler misst ja auch nur den Wechselstrom AC.
Den WR schalte ich nicht über die Steckdose. Nur die DTU hängt an einer Steckdose, weil sie im Wohnzimmer ist und mich die LED stört. Der WR ist ohne Solarenergie ohnehin aus.
Die ";15" sind 1500W/100 also das WR Limit /100. Wenn der WR 800W hat, dann müsste da :8 stehen.
Die OpenDTU hängt am mqtt adapter
-
@carsaab
Deswegen habe ich mich gewundert, warum du den WR ausschalten willst.
Wie bist du auf die "durch 15" gekommen? -
Die beiden Formeln sind identisch - Ich habe nur die WR Leistung / 100 gerechnet.
Mein eigener Zuschlag sind +30W also Ziel ist 30W Einspeisung. Bei -30W wäre das Ziel 30W Verbrauch.
300W/100=3
600W/100=6
800W/100=8
1500W/100=15
1600W/100=16
2200W/100=22
30KW/100=30000W/100=300
usw. usw. usw.
Damit berechne ich das Limit in Prozent der WR Leistung und schreibe das über OpenDTU in den WR in den Limits von 30% (meine willkürliche Untergrenze) und 100% (um Fehlermeldungen zu vermeiden, falls der WR mit >100% angesteuert wird). -
Man kann dafür auch den PID-Adapter nutzen. Min und Max der Wechselrichter einstellen, Parameter für die Regelung einstellen und den Setpoint 0 und aktual Value auf den aktuellen Verbrauch am Zähler. Der Adapter hat den Vorteil, dass man auch mehrere (unterschiedliche) Wechselrichter entsprechend auf den Hausverbrauch regeln kann.
-
@carsaab
Sehr interessant.
Wären bei einem 800 W WR also eine /8. -
@mic1981
Pid-Adapter kann ich nicht finden. Ist der noch in der Entwicklung? -
@gonzokalle
Den gibt es im latest-Repository. -
@carsaab
Das hier funktioniert auch für mehrere WR parallel einwandfrei und ist ziemlich vielseitig konfigurierbar. -
Ich habe mir einen günstigen ASUS PN41 mit Intel Celeron 5100 (13W) und Win11 Lizenz und 1TB M2.SSD gekauft. Das Paket war deutlich billiger als ein RASPI mit Peripherie im März 2023.
Da läuft IOBroker drauf und möchte daneben nur ungern weitere Scripte laufen lassen. Ich hatte genug zu tun alles im IOBroker ans laufen zu bringen (the devel you now).
"This script does not use MQTT, it's based on webapi communication." Das schreckt mich schon etwas ab, wenn ich ehrlich bin.
In dem Script würde mich der Algoritmus interessieren, der da angewendet wird.
Das Phython Script unterstützt bis zu 16 Inverter, soweit ich das sehe, und kann auch auf IOBroker und andere Plattformen zugreifen.
Das ginge hier auch, allerdings würden alle dasselbe %limit bekommen was aber auch ginge. Ich weiß zwar noch nicht wie IOBroker für 16 WR das limit schreiben kann. Geht bestimmt über Listen oder Variablen definieren. Mal sehen of Blockly auch in eine Liste schreiben kann.
Für meine Zwecke läuft das Script super. Daher geniesse ich das erst einmal. Danke für den Hinweis. Der PID Adapter interessiert mich auch, ich finde ihn aber nicht. -
@carsaab
Ich habe mal etwas gespielt.
Mit dem openDTU-Adapter klappt es wunderbar. Alle Werte wurden nach 5-10 Sekunden im WR eingestellt.
Verstehe ich gerade nicht. Meinst du AC vom Zähler?
-
@gonzokalle
Zur Formel hast Du recht ist AC habe es oben korrigiert.
Deine Lösung mit der Liste sieht gut aus.
Die Formel für mehrere WR sähe dann so aus. Das ist halt keine Batterieladung inkludiert. Nulleinspeisung ohne berücksichtigten Akku.
habe noch die Worddatei mit der Formel hochgeladen.
Der Formeleditor ist besser - ich nutze aber Textmaker privat.
formel nulleinspeisung.docx