NEWS
Regelung eines Hoymiles Solarinverters (Nulleinspeisung)
Regelung eines Hoymiles Solarinverters (Nulleinspeisung)
-
@ralla66 er hatte den DP mittlerweile nach meinem Hinweis korrekt angelegt. Nun kann er ihn mit "steuere" im Blockly ändern und den WR ein/ausschalten. So steuere ich in meinem Blockly ja auch das Limit.
@kymchy
Habe das jetzt mehrfach getestet. Funktioniert auch mit "sendTo". Habe den Befehl reinkopiert. Irgend einen Syntaxfehler hatte ich sicher vorher drin. Kann ich nicht mehr exakt nachvollziehen, weil gelöscht.
Ob das jetzt immer geht, oder ob es darauf ankommt, daß der Hoymiles gerade mit der openDTU verbunden ist, muß ich noch ausgiebig testen.
Aber Danke nochmal für die Unterstützung! -
@kymchy
Habe das jetzt mehrfach getestet. Funktioniert auch mit "sendTo". Habe den Befehl reinkopiert. Irgend einen Syntaxfehler hatte ich sicher vorher drin. Kann ich nicht mehr exakt nachvollziehen, weil gelöscht.
Ob das jetzt immer geht, oder ob es darauf ankommt, daß der Hoymiles gerade mit der openDTU verbunden ist, muß ich noch ausgiebig testen.
Aber Danke nochmal für die Unterstützung!@Kymchy
Ich habe den ganzen Nachmittag getestet. Das Eigenartige ist, mal funktioniert der sendTo- Befehl, z.B zum Ein/Ausschalten, mal nicht. Bis zum Schluß nicht mal die Steuerung über die OpenDTU- Oberfläche ging. Mußte die Inverter + openDTU stromlos machen und wieder einschalten.
bei "message" trage ich mal 0 und mal 1 ein- zum Testen// Vorlage: //sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/11418xxxxxxx/cmd/power', message: '1'}); sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/112183227304/cmd/power', message: '1'}); // sendTo('mqtt.0',"sendMessage2Client",{topic: 'solar/112183225956/cmd/power', message: '1'}); // sendTo('mqtt.0',"sendMessage2Client",{topic: 'solar/112183818346/cmd/power', message: '1'});und:
//sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/112183227304/cmd/limit_nonpersistent_absolute', message: '300'}); sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/112183225956/cmd/limit_nonpersistent_absolute', message: '300'}); //sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/112183818346/cmd/limit_nonpersistent_absolute', message: '400'});hat evtl. die openDTU eine Macke? Die Befehle kommen nicht beim Inverter an?
Über den MQTT Editor gesendet (published) wirken die Befehle -
@Kymchy
Ich habe den ganzen Nachmittag getestet. Das Eigenartige ist, mal funktioniert der sendTo- Befehl, z.B zum Ein/Ausschalten, mal nicht. Bis zum Schluß nicht mal die Steuerung über die OpenDTU- Oberfläche ging. Mußte die Inverter + openDTU stromlos machen und wieder einschalten.
bei "message" trage ich mal 0 und mal 1 ein- zum Testen// Vorlage: //sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/11418xxxxxxx/cmd/power', message: '1'}); sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/112183227304/cmd/power', message: '1'}); // sendTo('mqtt.0',"sendMessage2Client",{topic: 'solar/112183225956/cmd/power', message: '1'}); // sendTo('mqtt.0',"sendMessage2Client",{topic: 'solar/112183818346/cmd/power', message: '1'});und:
//sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/112183227304/cmd/limit_nonpersistent_absolute', message: '300'}); sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/112183225956/cmd/limit_nonpersistent_absolute', message: '300'}); //sendTo('mqtt.0', 'sendMessage2Client', {topic: 'solar/112183818346/cmd/limit_nonpersistent_absolute', message: '400'});hat evtl. die openDTU eine Macke? Die Befehle kommen nicht beim Inverter an?
Über den MQTT Editor gesendet (published) wirken die Befehle -
@kymchy OK, dann verabschiede ich mich vom sendTo- Befehl. Unterschied Steuern und Aktualisieren im Script muß ich mir noch ansehen.
Den SendTo Befehl habe ich verbannt. Aber das Schreiben auf die Datenpunkte mit
Zielwert = 400; setState("mqtt.1.solar.112183227304.cmd.limit_nonpersistent_absolute", Zielwert); setState("mqtt.1.solar.112183225956.cmd.limit_nonpersistent_absolute", Zielwert);funktioniert mal, mal nicht. Irgendetwas passt noch nicht. Mal reagiert der Hoymiles, mal nicht.
Auch mit Blockly nicht. -
Den SendTo Befehl habe ich verbannt. Aber das Schreiben auf die Datenpunkte mit
Zielwert = 400; setState("mqtt.1.solar.112183227304.cmd.limit_nonpersistent_absolute", Zielwert); setState("mqtt.1.solar.112183225956.cmd.limit_nonpersistent_absolute", Zielwert);funktioniert mal, mal nicht. Irgendetwas passt noch nicht. Mal reagiert der Hoymiles, mal nicht.
Auch mit Blockly nicht. -
@kymchy Das Verrückte ist, mal geht es mal nicht! Habe jetzt 50% relativ gesetzt: 200 Watt. 10% : 40 Watt.
Ein/Aus geht auch, aber morgen früh ist der Inverter, den ich heute ausgeschaltet habe, wieder eingeschaltet. Einige Male bleib er aber aus. Ein System kann ich nicht erkennen.
Sind meine Befehle so richtig? "aktualisiere, ohne Bestätigung" -
@kymchy Das Verrückte ist, mal geht es mal nicht! Habe jetzt 50% relativ gesetzt: 200 Watt. 10% : 40 Watt.
Ein/Aus geht auch, aber morgen früh ist der Inverter, den ich heute ausgeschaltet habe, wieder eingeschaltet. Einige Male bleib er aber aus. Ein System kann ich nicht erkennen.
Sind meine Befehle so richtig? "aktualisiere, ohne Bestätigung"@laser sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):
aktualisiere, ohne Bestätigung
aktualisiere ist mit Bestätigung und nur für eigene Datenpunkte gedacht.
zum steuern von Geräten über deren Adapter musst du steuere nehmenwie schon gesagt wurde
@kymchy sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):
@laser ja, aber nicht mit aktualisiere, sondern mit steuere. Funktioniert bei mir tadellos.
-
@laser sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):
aktualisiere, ohne Bestätigung
aktualisiere ist mit Bestätigung und nur für eigene Datenpunkte gedacht.
zum steuern von Geräten über deren Adapter musst du steuere nehmenwie schon gesagt wurde
@kymchy sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):
@laser ja, aber nicht mit aktualisiere, sondern mit steuere. Funktioniert bei mir tadellos.
-
Hallo
@Kymchy und natürlich an die ganzen anderen fleißigen Leute
Bisher war ich nur ein stummer Mitlesen und habe soweit alles hinbekommen. Dafür schonmal ein großes Dankeschön an alle.
Aktuell hänge ich aber fest und komme wirklich nicht weiter. Habe dein Blockly genommen und ein wenig verändert. Da ich einen LifePo4-Akku verwende, steuere ich meine Einspeisung bis auf eine bestimmte Voltzahl, danach geht es in eine einfache konstante Nachteinspeisung (unterhalb von 26V geht es in die Konstanteinspeisung, unterhalb von 24V schaltet ein Relais die Stromzufuhr zum Wechselrichter ab -> Batterieschutz)
Zuerst werde ich nicht ganz schlau aus dem Wert: "StoredNeededPower". Aktuell habe ich da einen Datenpunkt angelegt, den das Script füllt und ändert (evtl. ist da schon der Fehler?!) diesen gebe ich insgt. drei mal im Script an:
- "Setze StoredNeededPower auf Wert von Objekt ID XY (Datenpunkt)
- Dann benutze ich diese Objekt ID erneut bei den beiden "...aktualisiere..."
Als letztes kommt noch der Befehl mit entsprechendem Datenpunkt "Steuere...limit_nonpersistent_relative mit SolarLimit" im Ordner "cmd" in dem Ordner der Seriennummer.
Bis dahin scheint alles zu funktionieren, denn beide erzeugten Datenpunkte ändern sich entsprechend des Scriptes, sofern eine Änderung ansteht. Was sich allerdings nicht ändert: Der Wert in OpenDTU. Der relative Wert bleibt immer konstant der Wert, der zuletzt z.B. über den Browser ausgewählt wurde.
Ändere ich allerdings IRGENDETWAS in den MQTT Einstellungen in der OpenDTU, z.B.: Veröffentlichungsintervall (von 5 auf 6Sek), übernimmt OpenDTU das Relative Limit, welches im IO-Broker im Datenpunkt liegt. Also irgendwie ist die Verbindung vorhanden, nur eben nicht dann, wenn ich das will :D!OpenDTU läuft über einen ESP32 und habe ich heute noch geupdatet auf 7e28336.
Ich hoffe ich habe mich da verständlich ausgedrückt und freue mich auf ein paar Tips von euch.
Wünsche euch einen entspannten Restsonntag.
Liebe Grüße,
Ollie
-
Hallo
@Kymchy und natürlich an die ganzen anderen fleißigen Leute
Bisher war ich nur ein stummer Mitlesen und habe soweit alles hinbekommen. Dafür schonmal ein großes Dankeschön an alle.
Aktuell hänge ich aber fest und komme wirklich nicht weiter. Habe dein Blockly genommen und ein wenig verändert. Da ich einen LifePo4-Akku verwende, steuere ich meine Einspeisung bis auf eine bestimmte Voltzahl, danach geht es in eine einfache konstante Nachteinspeisung (unterhalb von 26V geht es in die Konstanteinspeisung, unterhalb von 24V schaltet ein Relais die Stromzufuhr zum Wechselrichter ab -> Batterieschutz)
Zuerst werde ich nicht ganz schlau aus dem Wert: "StoredNeededPower". Aktuell habe ich da einen Datenpunkt angelegt, den das Script füllt und ändert (evtl. ist da schon der Fehler?!) diesen gebe ich insgt. drei mal im Script an:
- "Setze StoredNeededPower auf Wert von Objekt ID XY (Datenpunkt)
- Dann benutze ich diese Objekt ID erneut bei den beiden "...aktualisiere..."
Als letztes kommt noch der Befehl mit entsprechendem Datenpunkt "Steuere...limit_nonpersistent_relative mit SolarLimit" im Ordner "cmd" in dem Ordner der Seriennummer.
Bis dahin scheint alles zu funktionieren, denn beide erzeugten Datenpunkte ändern sich entsprechend des Scriptes, sofern eine Änderung ansteht. Was sich allerdings nicht ändert: Der Wert in OpenDTU. Der relative Wert bleibt immer konstant der Wert, der zuletzt z.B. über den Browser ausgewählt wurde.
Ändere ich allerdings IRGENDETWAS in den MQTT Einstellungen in der OpenDTU, z.B.: Veröffentlichungsintervall (von 5 auf 6Sek), übernimmt OpenDTU das Relative Limit, welches im IO-Broker im Datenpunkt liegt. Also irgendwie ist die Verbindung vorhanden, nur eben nicht dann, wenn ich das will :D!OpenDTU läuft über einen ESP32 und habe ich heute noch geupdatet auf 7e28336.
Ich hoffe ich habe mich da verständlich ausgedrückt und freue mich auf ein paar Tips von euch.
Wünsche euch einen entspannten Restsonntag.
Liebe Grüße,
Ollie
-
Hallo,
ich habe mich mal daran versucht, ein Blockly zu erstellen, welches dazu dient, einen Hoymiles Wechselrichter für ein Balkonkraftwerk zu regeln.
Dazu gibt es im Netz schon einige, aber die, die ich gefunden hatte, gingen immer von dem Ansatz aus, das reagiert wird, wenn die Anlage in die Einspeisung geht, also mehr Strom erzeugt wird, als benötigt wird.
Mein Ansatz verfolgt einen anderen Weg. Und zwar den, dass die Anlage immer maximal soviel Strom liefert, wie von den Verbrauchern verlangt wird. Meinen Stromzähler lese ich mit einem Hichi aus, der negative Werte anzeigt, wenn eingespeist wird. Die benötigte Strommenge ergibt sich aus der Summe dessen, was der Hichi ausliest und der momentanen Leistung der PV-Anlage.
Meine Regelung erfolgt alle 30 Sekunden und nur zwischen Sonnenauf- und Sonnenuntergang. Um zu häufige Regelungen zu vermeiden, habe ich eine Hysterese eingebaut, wobei die Regelung nur dann erfolgt, wenn der gemessene Strombedarf mehr als 10% vom vorher eingestellten abweicht. Den eingestellten Wert speichere ich dazu in einem Datenpunkt. Die Regelung erfolgt über MQTT non-persistent und in Prozent, also relativ.
Ich hoffe, das Skript ist einigermaßen lesbar und würde mich mich über Hinweise zu Fehlern oder Verbesserungsvorschläge freuen.
Hier nun das Blockly;
viele Grüße
KymchyJetzt war ein bischen Sonne, das Script läuft, aber die Regelung wird nicht an den WR weitergegeben. Irgenwas stimmt nicht. MQTT Datenpunkte ?
-
Jetzt war ein bischen Sonne, das Script läuft, aber die Regelung wird nicht an den WR weitergegeben. Irgenwas stimmt nicht. MQTT Datenpunkte ?
@trudeludes
Welchen Nutzen bringt das Ganze eigentlich? Ich drossele den Wechselrichter und verschenke teuer erzeugte (theoretisch) Elektroenergie anstatt sie einzuspeisen. Wenn ich diese Energie in einen Akku laden würde, könnte ich noch einen Sinn darin erkennen.