Überschussleistung Laden
-
- Beiträge: 181
- Registriert: 1. Sep 2018 18:24
Überschussleistung Laden
Hallo zusammen,
ich würde gerne eine rule erstellen, die die Überschussleistung der PV-Anlage ins Auto speißt.
Den aktuell produzierten Leistungwert der PV Anlage habe in einem Item zur Verfügung. Genauso kann ich den Strom den die Wallbox liefern soll über ein Item regeln.
Da die produzierte Leistung sehr schwanken kann, soll der Ladestrom "geglättet" regelen. Das heißt es kann auch mal kurzfristig Strom aus dem Netz bezogen werden.
Ein weiteres Problem ist das, dass die Ladeleistung auch abhängig vom aktuellen Verbrauch geregelt werden muss. Dieser Wert steht auch in einem item zur Verfügung.
Hat jemand eine Idee wie ich das umsetzen könnte, bzw sowas ähnliche schonmal gemacht? ich habe leider nichts im Forum gefunden.
Vielen Dank und Grüße
ich würde gerne eine rule erstellen, die die Überschussleistung der PV-Anlage ins Auto speißt.
Den aktuell produzierten Leistungwert der PV Anlage habe in einem Item zur Verfügung. Genauso kann ich den Strom den die Wallbox liefern soll über ein Item regeln.
Da die produzierte Leistung sehr schwanken kann, soll der Ladestrom "geglättet" regelen. Das heißt es kann auch mal kurzfristig Strom aus dem Netz bezogen werden.
Ein weiteres Problem ist das, dass die Ladeleistung auch abhängig vom aktuellen Verbrauch geregelt werden muss. Dieser Wert steht auch in einem item zur Verfügung.
Hat jemand eine Idee wie ich das umsetzen könnte, bzw sowas ähnliche schonmal gemacht? ich habe leider nichts im Forum gefunden.
Vielen Dank und Grüße
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Überschussleistung Laden
Also, Du hast zwei Messwerte und ein Regelelement.Grob sieht die passende Rule dann so aus:
Die Rule triggert, sobald einer der beiden Messwerte sich ändert. Es wird die Differenz gebildet.
Danach wird abhängig vom ermittelten Überschuss die Ladestufe gewählt und an die Ladeschaltung gesendet.
Die Stufen sind beliebig, wichtig ist nur, dass die Werte sortiert vorliegen. Die einzelnen if-else-Verkettungen suchen also die pasende Stufe zum Überschuss heraus.
Der erste Teil der Rule dient der Sicherheit. Wenn eines der beiden Items keine gültige Zahl liefert, wird ein Default Wert verwendet. Dabe igilt ein ungültiger Wert von der PV-Messung als 0, ein ungültiger Verbrauch als 2000 (auch dieser Wert ist natürlich beliebig).
Sollten die Werte in unterschiedlichen Einheiten rein kommen, muss natürlich umgerechnet werden.
Stufe 0 als niedrigste Ladestufe bedeutet nicht zwangläufig, dass gar nicht geladen wird, vermutlich ist es sinnvoller, zumindest in der kleinsten Stufe zu laden, damit das Auto im Zweifel trotzdem irgendwann voll ist.
Die Rule hat jetzt noch keine "Glättung" eingebaut, darüber müsste man noch mal nachdenken, vor allem, wie sich das alles genau verhalten soll. Gibt es bestimmte Vorgaben des Herstellers, was bei der Laderegelung vermieden werden soll? Dabei geht es ja schon potentiell um hohe Ströme.
Code: Alles auswählen
rule "Ladestrom einstellen"
when
Item PVLeistung changed or
Item StromBedarf changed
then
val Number nPV = if(PVLeistung.state instanceof Number) (PVLeistung.state as Number).floatValue else 0
val Number nHaus = if(StromBedarf.state instanceof Number) (StromBedarf.state as Number).floatValue else 2000 // zu erwartender Spitzenbedarf als Default Wert
val Number nDiff = nPV - nHaus
var Number nStufe = 0
if(nDiff < 0) nStufe = 0
else if(nDiff < 1000) nStufe = 1
else if(nDiff < 2000) nStufe = 2
else if(nDiff < 3000) nStufe = 3
else if(nDiff < 4000) nStufe = 4
else if(nDiff < 5000) nStufe = 5
else nStufe = 6
Ladeleistung.sendCommand(nStufe)
end
Danach wird abhängig vom ermittelten Überschuss die Ladestufe gewählt und an die Ladeschaltung gesendet.
Die Stufen sind beliebig, wichtig ist nur, dass die Werte sortiert vorliegen. Die einzelnen if-else-Verkettungen suchen also die pasende Stufe zum Überschuss heraus.
Der erste Teil der Rule dient der Sicherheit. Wenn eines der beiden Items keine gültige Zahl liefert, wird ein Default Wert verwendet. Dabe igilt ein ungültiger Wert von der PV-Messung als 0, ein ungültiger Verbrauch als 2000 (auch dieser Wert ist natürlich beliebig).
Sollten die Werte in unterschiedlichen Einheiten rein kommen, muss natürlich umgerechnet werden.
Stufe 0 als niedrigste Ladestufe bedeutet nicht zwangläufig, dass gar nicht geladen wird, vermutlich ist es sinnvoller, zumindest in der kleinsten Stufe zu laden, damit das Auto im Zweifel trotzdem irgendwann voll ist.
Die Rule hat jetzt noch keine "Glättung" eingebaut, darüber müsste man noch mal nachdenken, vor allem, wie sich das alles genau verhalten soll. Gibt es bestimmte Vorgaben des Herstellers, was bei der Laderegelung vermieden werden soll? Dabei geht es ja schon potentiell um hohe Ströme.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 181
- Registriert: 1. Sep 2018 18:24
Re: Überschussleistung Laden
Hi Udo,
vielen Dank für dein Vorschlag. An sowas in der Art hatte ich auch gedacht wollte aber nicht die Ladewerte ständig ändern. Wenn es sonnig ist, ist das auch kein Problem, aber sobald ne Wolke rein kommt, dann sieht das chaotisch aus.
Grundsätzlich gibt es von der Wallbox keinerlei Einschränkungen. Ich würde nur gerne grundsätzlich "ständiges regeln" vermeiden wollen. Die PV Anlage kann nie die volle Leistung liefern, mit der die Wallbox theoretisch laden könnte.
Ggf. macht es Sinn einen Trend anhand der letzten 10 Werte zu erkennen und daran nachzuregeln? Oder ggf. einen Durchschnittswert der letzten x gelieferten Leistung von der PV Anlage.
Mal ein paar Tage wie sowas aussehen könnte. Den grünen Teil würde ich gerne so viel wie möglich ausnutzen: Kann aber auch mal so aussehen: oder so
vielen Dank für dein Vorschlag. An sowas in der Art hatte ich auch gedacht wollte aber nicht die Ladewerte ständig ändern. Wenn es sonnig ist, ist das auch kein Problem, aber sobald ne Wolke rein kommt, dann sieht das chaotisch aus.
Grundsätzlich gibt es von der Wallbox keinerlei Einschränkungen. Ich würde nur gerne grundsätzlich "ständiges regeln" vermeiden wollen. Die PV Anlage kann nie die volle Leistung liefern, mit der die Wallbox theoretisch laden könnte.
Ggf. macht es Sinn einen Trend anhand der letzten 10 Werte zu erkennen und daran nachzuregeln? Oder ggf. einen Durchschnittswert der letzten x gelieferten Leistung von der PV Anlage.
Mal ein paar Tage wie sowas aussehen könnte. Den grünen Teil würde ich gerne so viel wie möglich ausnutzen: Kann aber auch mal so aussehen: oder so
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 31
- Registriert: 17. Mai 2020 22:09
Re: Überschussleistung Laden
Hi,
verwendest du einen SmartMeter?
wenn nicht, einfach installieren und mit dem neuem Item die Wallbox Ein- oder Ausschalten.
Danke,
Nojo
verwendest du einen SmartMeter?
wenn nicht, einfach installieren und mit dem neuem Item die Wallbox Ein- oder Ausschalten.
Danke,
Nojo
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Überschussleistung Laden
Wie man schön an Deinen Graphen sehen kann, ist eine vorausschauende Regelung hier so gut wie unmöglich, da auch kleine Wolken schnell zu erheblichen Leistungseinbrüchen führen können. Eine Regelung über den Durschnitt der letzten Minuten ist leicht möglich, dazu muss eine geeignete Persistence eingerichtet sein. Allerdings darf man das Zeitfenster nicht zu klein wählen, da sonst evtl. kein Durchschnittswert berechnet wird. (Ich meine, gerade letztens dazu im englischen Forum was überflogen zu haben).
Wie man so eine Regelung durchführt, ist vermutlich eine Wissenschaft für sich, und ich bin kein Regelungstechniker. Vielleicht hat da jemand anderes Expertise?
Wie man so eine Regelung durchführt, ist vermutlich eine Wissenschaft für sich, und ich bin kein Regelungstechniker. Vielleicht hat da jemand anderes Expertise?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 181
- Registriert: 1. Sep 2018 18:24
Re: Überschussleistung Laden
Scheint sich wohl niemand mit dem Thema beschäftigt zu haben. Ich starte mal einen Thread im Englischen Forum und teile hier die Erkenntnisse später.
-
- Beiträge: 181
- Registriert: 1. Sep 2018 18:24
Re: Überschussleistung Laden
Ich habe inzwischen Rückmeldung erhalten. Vorschlag ist die Funktion averageSince() zu benutzen:
@grizzle hat das auch bereits simuliert. Das sieht dann folgendermaßen aus:
Jetzt müsste ich nur noch einen Bereich definieren wo es geladen werden soll (Z.b. ab 3000 Watt). Außerdem eine Abschalteinrichtung. Das heißt wenn es länger als 5 Minuten aus dem Netz bezieht, dann schalte ab.
Wäre hier eine Do-while schleife sinnvoll oder habt ihr noch effizientere Vorschläge?
Code: Alles auswählen
val Number nPV = if(PVLeistung.state instanceof Number) (PVLeistung.averageSince(now.minusMinutes(1)) as Number).floatValue else 0
val Number nHaus = if(StromBedarf.state instanceof Number) (StromBedarf.averageSince(now.minusMinutes(1)) as Number).floatValue else 2000
Wäre hier eine Do-while schleife sinnvoll oder habt ihr noch effizientere Vorschläge?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Überschussleistung Laden
Bitte niemals while verwenden. openHAB ist ein eventbasiertes System.
Die korrekte Herangehensweise wäre also, bei Änderung des Überschusses nachzuschauen, ob gemeinsam mit dem Ladegerät Netzbezug stattfindet.
Ist das der Fall, startest Du einen Timer (mit 5 Minuten), natürlich nur, falls der Timer nicht schon läuft.
Wird hingegen mehr als ausreichend Strom produziert, wird ein eventuell laufender Timer gecancelt und genullt.
Läuft der Timer ab, wurde der Abschaltzeitpunkt erreicht und der Code des Timers leitet die Abschaltung ein. Der Timer löscht noch den Verweis auf sich selbst, damit die Rule weiterhin funktioniert.
also grob so:
load wäre der aktuelle Verbrauch, prod wäre die aktuelle Produktion, tCharge ist der Timer zum Abschalten, Charge ist das Item, welches auf ON steht, wenn geladen wird und auf OFF steht, wenn nicht geladen wird.
Die korrekte Herangehensweise wäre also, bei Änderung des Überschusses nachzuschauen, ob gemeinsam mit dem Ladegerät Netzbezug stattfindet.
Ist das der Fall, startest Du einen Timer (mit 5 Minuten), natürlich nur, falls der Timer nicht schon läuft.
Wird hingegen mehr als ausreichend Strom produziert, wird ein eventuell laufender Timer gecancelt und genullt.
Läuft der Timer ab, wurde der Abschaltzeitpunkt erreicht und der Code des Timers leitet die Abschaltung ein. Der Timer löscht noch den Verweis auf sich selbst, damit die Rule weiterhin funktioniert.
also grob so:
Code: Alles auswählen
var Timer tCharge = null
rule ...
...
then
...
if(load > prod && tCharge === null && Charge.state == ON)
tCharge = createTimer(now.plusMinutes(5)[|
Charge.sendCommand(OFF)
tCharge = null
])
else if (load < prod) {
tCharge?.cancel
tCharge = null
}
...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 181
- Registriert: 1. Sep 2018 18:24
Re: Überschussleistung Laden
Code: Alles auswählen
val Number nPV = if(PVLeistung.state instanceof Number) (PVLeistung.averageSince(now.minusMinutes(1)) as Number).floatValue else 0
val Number nHaus = if(StromBedarf.state instanceof Number) (StromBedarf.averageSince(now.minusMinutes(1)) as Number).floatValue else 2000
Code: Alles auswählen
Rule 'Ladestrom einstellen': cannot invoke method public abstract float java.lang.Number.floatValue() on null
-
- Beiträge: 181
- Registriert: 1. Sep 2018 18:24
Re: Überschussleistung Laden
gefunden, es muss heißen:
Code: Alles auswählen
val Number nPV = if(PVLeistung.state instanceof Number) (PVLeistung.averageSince(now.minusMinutes(1), "rrd4j") as Number).floatValue else 0