Naja...Ich habe kurz Deinen Code überflogen und würde Dir nicht empfehlen mit absolut Werten zu arbeiten. Wenn Du nicht gerade einen blauen Himmel hast (was oft genug vorkommt) wirst bei jeder Wolke regeln. Bist also quasi ständig am Regeln. Das gleiche gilt natürlich für Dein Hausverbrauch.
Daher bilde ich mit "smoothed" (englich geglättet) einen Mittelwert der letzten x Minuten. Daher wird einmal der Mittelwert der letzten x Minten vom Haus berechnet und die produzierte Leistung (auch mit MIttelwert der letzten x Minuten).
Die Differenz davon ist ja Deine verfügbare Energie. Also Dein Überschuss mit dem Du laden willst.
Überschussleistung Laden
-
- Beiträge: 181
- Registriert: 1. Sep 2018 18:24
Re: Überschussleistung Laden
Jemand eine Idee wie ich das lösen könnte?shuo hat geschrieben: ↑21. Jun 2021 18:23 Naja, ich finde Udo hat eine vorbilldliche Erklärung hier eingestellt, die mich auch nochmal dazu bewegt hat meinen Code anzupassen und "hübscher" zu machen:)
Udo, ich hätte da mal eine Frage. Ich habe Teil 3 (Logging) benutzt um zu die Glättung zu sehen. Jetzt würde ich gerne das Regeln beginnen.
Grundsätzlich kann ich die Leistung mit dem Strom einstellen. Ich habe "respekt" vor einer do-while Schleife.
Hast eine Idee, wie ich das "elegant" lösen kann?
Also sowas wie (pseudo code):Code: Alles auswählen
do (erhöhe / reduziere den Strom) while (Verfügbare Leistung == Ladeleistung )
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Überschussleistung Laden
Ich dachte eigentlich, ich hätte darauf geantwortet...
Egal... Meine Empfehlung: Nimm einen Timer. Damit kannst Du wunderbar eine zeitliche Verzögerung einbauen.
Egal... Meine Empfehlung: Nimm einen Timer. Damit kannst Du wunderbar eine zeitliche Verzögerung einbauen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 163
- Registriert: 13. Dez 2018 17:42
Re: Überschussleistung Laden
Ich habe es nun geschafft eine Rule zu erstellen, welche es entsprechend regelt.
Folgendes Problem allerdings....
Wenn das Fahrzeug voll geladen ist schaltet dies die Ladung ab Item Status wechselt von 2 (Fahrzeug lädt) auf 4 (Fahrzeug verbunden lädt nicht).
Nach ein paar Minuten starten die Ladung dann erneut um wenig später wieder beendet zu werden....dieses verhalten geht dann über Stunden.
Für das Fahrzeug ist dies auf Dauer sicher nicht gut.
Wie könnte ich das Problem lösen um dieses ständige umschalten zu erkennen und gegebenenfalls zu unterbinden?
Code: Alles auswählen
var Timer tCharge = null
rule "PV laden"
when
Item verbrauch_12ktl changed //Auslösen bei Änderung der Einspeiseleistung
then
//Lademodus: 1 = PV geführtes Laden und Charger bereit oder Charger lädt gerade
if(goecharger_lademodus.state == 1 && goecharger_state.state == 4 || goecharger_state.state == 2)
{
//Prüfen ob PV Überschuss zur Verfügung steht
// positiver Wert = Netzeinspeisung
// negativer Wert = Netzbezug
var Number nDiff
nDiff = (verbrauch_12ktl.state as Number).floatValue
//Bestimme Mittelwert Hausverbrauch
var Number nDiff_smoothed = 0
if(verbrauch_12ktl.averageSince(now.minusMinutes(5), "jdbc") instanceof Number)
{
nDiff_smoothed = (verbrauch_12ktl.averageSince(now.minusMinutes(5), "jdbc") as Number).floatValue
}
logInfo("Verfügbare Energie", "nDiff_smoothed: {}", nDiff_smoothed )
//Wenn nicht geladen wird
if(nDiff_smoothed > 1500) // Falls Strommenge ausreichend für 6A Ladung (1380W)
{
tCharge?.cancel // brich einen laufenden Timer ab
tCharge = null // und lösche ihn
var Number load = nDiff / 230
//prüfen ob mögliche Leistung größer der Kabelcodierung, falls ja Leistung auf Kabelcodierung reduzieren
if(load > (goecharger_cable_current.state as Number))
{
goecharger_ampere.sendCommand((goecharger_cable_current.state as Number))
return
}
else
{
goecharger_ampere.sendCommand(nDiff / 230)
}
if(goecharger_allow.state == 0)
{
goecharger_allow.sendCommand(1)
}
}
else if(nDiff_smoothed < 300 && goecharger_state.state == 2)
{
logInfo("Achtung. Keine Sonnenenergie. 100% Netzbezug beim Laden. Schalte Ladevorgang ab", "nDiff_smoothed: {}", nDiff_smoothed)
goecharger_allow.sendCommand(0)
}
}
end
Wenn das Fahrzeug voll geladen ist schaltet dies die Ladung ab Item Status wechselt von 2 (Fahrzeug lädt) auf 4 (Fahrzeug verbunden lädt nicht).
Nach ein paar Minuten starten die Ladung dann erneut um wenig später wieder beendet zu werden....dieses verhalten geht dann über Stunden.
Für das Fahrzeug ist dies auf Dauer sicher nicht gut.
Wie könnte ich das Problem lösen um dieses ständige umschalten zu erkennen und gegebenenfalls zu unterbinden?
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Überschussleistung Laden
Du musst halt eine Erkennung einbauen, dass der Ladestand die Vollladung erreicht hat. Diese darf erst wieder zurückgenommen werden, wenn die Ladung eine bestimmte Schwelle unterschritten hat. Diese Schwelle darf nicht zu nah an der Abschaltschwelle liegen, um ständiges Umschalten zwischen Laden und nicht Laden zu vermeiden.
Dazu brauchst Du ein Item, welches den Ladestand signalisiert.
Dazu brauchst Du ein Item, welches den Ladestand signalisiert.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet