Überschussleistung Laden

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Überschussleistung Laden

Beitrag von shuo »

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.

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Überschussleistung Laden

Beitrag von shuo »

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 )
Jemand eine Idee wie ich das lösen könnte?

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Überschussleistung Laden

Beitrag von udo1toni »

Ich dachte eigentlich, ich hätte darauf geantwortet...

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

mcdandrew
Beiträge: 163
Registriert: 13. Dez 2018 17:42

Re: Überschussleistung Laden

Beitrag von mcdandrew »

Ich habe es nun geschafft eine Rule zu erstellen, welche es entsprechend regelt.

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


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?

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Überschussleistung Laden

Beitrag von udo1toni »

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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten