NEWS
Regelung eines Hoymiles Solarinverters (Nulleinspeisung)
-
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 -
@carsaab
Ich habe dein Blockly mal nachgebaut.
Der Stromverbrauch (Shelly 3EM) und das Limit von WR geht andauernd hoch und runter.
Ist das bei dir auch so?@ alle
Ich würde das Blockly vom Anfang des Threads gerne mal probieren.
Kann jemand ein einfaches Blockly für nur einen WR mal posten? -
@gonzokalle
Ja das ist bei mir auch so.
Der Trigger ist immer die Änderung im Stromverbrauch. Dann setzt das Script ein neues Limit sofern die Solaranlage mehr als die 30% liefert. Bei mir dann 450W.
Wenn der Stromverbrauch hochgeht, dann geht das Limit hoch und auch wieder runter, wenn der Verbrauch sinkt.
Sollte dann die Solaranlage bei gleichem Verbrauch mehr liefern, dann sinkt der Stromverbrauch aber das Limit bleibt gleich, weil sich die Summe aus Solarenergie und Stromverbrauch nicht ändert.
Ich habe auch nur einen WR.
Weil aber mein Hichi nur alle 10sek einen neuen Wert schickt, ist das ganze natürlich nicht genau, aber für unsere Zwecke reicht es.
Vom Shelly 3EM müsste ja der Gesamtverbrauch gemessen werden. Wenn der Shelly im Sekundentakt einen Wert liefert, dann schreibt das Script auch jede Sekunde.Aber das Prinzip ist das gleiche. Ich nehme an, Du hast einen 600W WR im Einsatz.
-
@Carsaab
Ja, der Shelly liefert im Sekundentakt.
So schnell kann ich die Werte aber nicht in den WR schreiben.
Deswegen habe ich den Trigger auf alle 10 Sekunden gesetzt.
Ja, habe 600 W WR. -
So - ich habe zu experimentellen Zwecken mir noch einen HM300 von einem Kumpel geliehen.
Steuern tue ich alles über den MQTT Adapter. Der erkennt die openDTU und die dort eingebunden Wechselrichter. Damit die Steuerung funktioniert muß der MQTT Adapter ohne "retain" flag senden! Sonst geht es nicht.
Dann muß für jeden Hoymiles noch manuell der channel "cmd" und der state "limit_nonpersistent_relative" angelegt werden.
Die Befehle findet Ihr hier: https://www.opendtu.solar/firmware/mqtt_topics/#inverter-limit-specific-topics
Unter Alias könnt Ihr Euch dann die wichtigen Objekte erstellen oder Ihr verweist im Script direkt auf die Objekte.Eine Sequenz von 10Sekunden reichen mir - das regel ich über den Hichi Lesekopf, der den Stromverbrauch nur alle 10 Sekunden verschickt. Der Versuch in Echtzeit zu reagieren ist meistens ohnehin zum Scheitern verurteilt. Zum einen kann unsere "billige" Hardware das sowieso nicht, und dann gibt es ja noch die Physik https://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem. Ich beabsichtige nicht daran was zu ändern.
Für 2 Wechselrichter und ohne Benutzung von Scriptvarialblen funktioniert mein Script wie folgt:
Das lässt sich zur Not auch für eine 30KW-peak Anlage mit 70 Panelen und 35 MicroWR und 9 DTUen ausbauen. Dem Iobroker ist das egal. Nur die Stromerzeugung über alle DTUen müsste man adieren.
Um Fragen vorzubeugen:
- das Teilen durch 18 ist oben erklärt.
- ich habe keinen Speicher und will eine Nulleinspeisung - auch oben erklärt
- Ja - es geht bestimmt eleganter - ich berechne für jeden WR das Limit separat obwohl sie dasselbe Limit bekommen.
Ein Script mir einer berechnete Variablen wie hier funktioniert auch.
- Es läuft wie geschmiert - bei mir. Es wird bei Euch ohne etwas Frickelei nicht direkt aus der Box laufen vermute ich.
-
-
@carsaab
Hi,
kannst du vielleicht das komplette Blockly mal einstellen ? Ich habe da etwas Schwierigkeiten, beim nachbauen. -
Zum Thema Nulleinspeisung (oder 'Panelbeheizung', wie ich es nenne):
-
@tosca76 Null-Einspeiseregelung_0.xml
Das ist das File.
Ansonsten ist das Bild auch das Script.
Die Objekte mußt Du leider selber finden, ich nutze gerade 2 Wechselrichter die hier gesteuert werden.
BTW: Das Video ist mir bekannt und er hat auch Recht. Es ist aber kein Widerspruch zu meiner Regelung, weil ich die Null garnicht unbedingt erreichen will. Der grobe Daumen reicht, ist aber auch oben schon erklärt. -
@carsaab
Super dank dir -
@kymchy
Vielen Dank für deine WR Steuerung.
Funktioniert!
Habe das Blockly noch etwas verändert. Bin da aber leider kein Fachmann.
Interessant währe noch die Steuerung für einen zweiten WR. -
Hallo Zusammen,
Ich möchte dieses Thema Nocheinmal aufgereifen. Ich habe das Blockly von Carsaab nachgebaut. eigenlich das was ich die ganzezeit gesucht habe.
das Blockly rechnet die Prozente aus die ich in eine DummyVariable schreibe. Getriggert von der Wert anderung des Stromzählers ca alle 10 Sekunden. Möchte ich nun den Wert in den Open -DTU Adapter schreiben (Limit_nonpersistent_relativ) schreiben, scheind sich die Komunikation zwischen Adapter und DTU aufzuhängen.
das heist es werden keine Aktualdaten von der DTU an den Adapter zurück übermittelt. wenn nur Sporadisch und nicht wie gewohnt alle 10 Sekunden.
ich habe auch schon gedacht das zuviel daten gesendet werden und habe es über einen Cronjob alle 5 min versucht.
Sobald ich einmal auf die variable schreibe ist Feierabend. stoppe ich das Blockly normalisiert sich wieder alles .
Schreibe ich aber mehrfach in die Variable hängen sich die DTU auf. Auch die Webseite auf dem ESP bleibt bei der Daten übertragung hängen.Mein Setup
HM 1500
Open DTU auf ESP 32 Neuste Firmware
Open DTU Adapter auf Raspi4 8 GBJemand eine Idee Woran es liegen könnte.
Im Sonnenuntergang ist mit Absicht noch der Dummy drin
Gruß Thomas