Wallbox Lademanagement über OH 3

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

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

Re: Wallbox Lademanagement über OH 3

Beitrag von mcdandrew »

KLingt auch interessant. Evtl. magst Du das Projekt mal mit uns teilen?
Ja klar....gerade davon lebt ein Forum
Eventuell kann man es noch optimieren....bin für Vorschläge offen :D

Code: Alles auswählen

rule "goecharger_load"
when
	Item verbrauch_12ktl received update
then
	if(goecharger_lademodus.state == 2)				//PV geführtes Laden
	{
		logInfo("GOE", "Lademodus == PV MOODUS ")
		// Aktueller Hausverbrauch
		// positiver Wert = Überschuss - negativer Wert = Netzbezug
		var power = (verbrauch_12ktl.state as Number).floatValue  	
		var schwelle = 1500;       // 1500W	
		var prozent = 0.9		//nur mit 90 Prozent der möglichen Stromstärke laden
		
		//Ladestatus 3 = Warte auf Fahrzeug
		//Ladestatus: 4 = Charger bereit
		//Fahrzeug lädt aktuell noch nicht. Mögliche Ladestärke berechnen und starten
		if(goecharger_state.state == 3 || goecharger_state.state == 4)
		{
			//logInfo("GOE", "Ladestatus: 3 oder 4")
			//logInfo("GOE", "Überschuss: " + power)
			if(power >= schwelle) 
			{
				var Number ampere = power / 230 * prozent;
				logInfo("Verfügbare Stromstärke", "ampere: {}", ampere.intValue )
				if(ampere < 6)
				{
					goecharger_ampere.sendCommand(6)
				}
				else if(ampere > 16)
				{
					goecharger_ampere.sendCommand(16)
				}
				else
				{
					goecharger_ampere.sendCommand(ampere.intValue)
				}
				if(goecharger_allow_charge.state != ON) 
				{
					goecharger_allow_charge.sendCommand(ON)
				}
			} 
		}
		if(goecharger_state.state == 2)		//Ladestatus: 2 = Charger lädt bereits...Ladestärke anpassen falls notwendig
		{
			//logInfo("GOE", "Ladestatus: 2 - Charger lädt bereits")
			//logInfo("GOE", "Überschuss: " + power)
			var Number ampere_ueberschuss = power / 230 * prozent;
			//logInfo("Verfügbare Stromstärke", "ampere: {}", goecharger_ampere.state as Number + "#" + ampere_ueberschuss.intValue)
			
			var Number ampere = 0
			ampere = goecharger_ampere.state as Number	+ ampere_ueberschuss.intValue
			logInfo("Ladestärke", "ampere: {}", ampere.intValue)
			
			if(ampere.intValue < 6)		//Wenn verfügbare Ladestärke kleiner Min - Timer starten
			{
				if(tCharge === null)
				{
					logInfo("GOE-Charger", "NETZBEZUG Timer gestartet!!!")
					tCharge = createTimer(now.plusMinutes(5), [ |               // Erzeuge Abschlattimer
						goecharger_allow_charge.sendCommand(OFF)
						logInfo("GOE-Charger", "NETZBEZUG - LADEN BEENDET!!!")
						tCharge = null
					])
				}
				goecharger_ampere.sendCommand(6)
			}
			else if(ampere.intValue > 16)
			{
				goecharger_ampere.sendCommand(16)
				tCharge?.cancel         // laufenden Timer abbrechen
				tCharge = null          
			}
			else
			{
				goecharger_ampere.sendCommand(ampere.intValue)
				tCharge?.cancel         // laufenden Timer abbrechen
				tCharge = null         
			}
		}
	}
end

paradeismarvin
Beiträge: 3
Registriert: 12. Jul 2021 13:29

Re: Wallbox Lademanagement über OH 3

Beitrag von paradeismarvin »

Servus Zusammen.
Der Beitrag ist zwar schon 2 Monate alt, aber für die Nachwelt dokumentiere ich mal, was ich so gemacht hab
Ich habe vor ca. 2 Jahren mit Openhab angefangen und hab immer nur still mitgelesen. Nun will ich mal einen Beitrag leisten.

Ich habe die letzten Wochen meine Wallbox go-eCharger eingebunden und lade einen e-Golf mit PV-Strom.
Die Wallbox ist super, weil sie auch eine Umschaltung von 1phasig/3phasig hat und über eine API gut erreichbar ist.
Generell nutz ich dafür das Binding, hab aber noch ein paar HTTPGetReqeusts einbauen müssen, dass alle Funktionen abgedeckt werden.

Als Datensenke habe ich noch den 5-Minuten-Durchschnittsertrag der PV-Anlage.
Was mach ich damit?
Ich habe einen manuellen Modus, bei dem ich die Phasen, mit denen ich Laden kann, den Ladestrom sowie eine Begrenzung der Ladeenergie angeben kann:
manuell.png
Interessanter ist jedoch die Ladeautomatik, die je nachdem was die PV-Anlage liefert und ins Netz einspeisen würde den Ladestrom nachzieht, sodass der Golf nur mit selbst angebauter Energie geladen wird. Wenns nicht mehr reicht, schaltet er ab, wenn wieder genug Sonne da ist, wieder ein.
Wenn er voll ist gibts noch ne Push-Nachricht und die Sache passt.
Ich Track noch die Summen für Tag/Woche/Monat/Jahr, aber die Ausführung davon ist nicht so ideal.

Thing:

Code: Alles auswählen

Thing goecharger:goe:garage [ip="192.168.177.27",refreshInterval=30]
//In der App muss unter Internet -> Erweiterte Einstellungen "Aktiviere lokale HTTP APIv1" aktiviert werden
//In der App muss unter Internet -> Erweiterte Einstellungen "Aktiviere lokale HTTP APIv2" aktiviert werden
//In der App muss unter Lastmanagement "Lastmanagement aktivieren" deaktiviert werden
Items:

Code: Alles auswählen

Group       gWallbox                              "Wallbox"                                         <mWallbox>       (gOU_garage)

Number      GoEChargerMaxCurrent                  "Erlaubter Ladestrom [%.0fA]"                     <mlimitgreen>    (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:maxCurrent"}
String      GoEChargerPwmSignal                   "Status"                                          <status>         (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:pwmSignal"}
String      GoEChargerError                       "Fehler Code"                                                      (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:error"}
Number      GoEChargerVoltageL1                   "Spannung L1 [%.0fV]"                                              (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:voltageL1"}
Number      GoEChargerVoltageL2                   "Spannung L2 [%.0fV]"                                              (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:voltageL2"}
Number      GoEChargerVoltageL3                   "Spannung L3 [%.0fV]"                                              (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:voltageL3"}
Number      GoEChargerCurrentL1                   "Strom L1 [%.1fA]"                                <menergy>        (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:currentL1"}
Number      GoEChargerCurrentL2                   "Strom L2 [%.1fA]"                                <menergy>        (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:currentL2"}
Number      GoEChargerCurrentL3                   "Strom L3 [%.1fA]"                                <menergy>        (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:currentL3"}
Number      GoEChargerPowerL1                     "Leistung L1 [%.0fW]"                             <menergy>        (gWallbox, gRRD4J)    	//  {channel="goecharger:goe:garage:powerL1"}
Number      GoEChargerPowerL2                     "Leistung L2 [%.0fW]"                             <menergy>        (gWallbox, gRRD4J)    	// {channel="goecharger:goe:garage:powerL2"}
Number      GoEChargerPowerL3                     "Leistung L3 [%.0fW]"                             <menergy>        (gWallbox, gRRD4J)    	// {channel="goecharger:goe:garage:powerL3"}
Number      GoEChargerPower                       "Wallbox Leistung [%.0fW]"                        <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerPhases                      "Verwendete Phasen [%.0f]"                        <mphasen>        (gWallbox, gRRD4J)    	// calculatet, because 2ph {channel="goecharger:goe:garage:phases"}
Number      GoEChargerSessionChargeEnergyLimit    "Ladebegrenzung [%.0fkWh]"                        <mlimit>         (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:sessionChargeEnergyLimit"}
Number      GoEChargerSessionChargedEnergy        "Energie geladen [%.1fkWh]"                       <menergy>        (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:sessionChargedEnergy"}
Number      GoEChargerTotalChargedEnergy          "Energie gesamt [%.0fkWh]"                        <menergy>        (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:totalChargedEnergy"}
Switch      GoEChargerAllowCharging               "Laden erlaubt"                                                    (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:allowCharging"}
Number      GoEChargerCableCurrent                "Max Ladestrom Kabel"                                              (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:cableCurrent"}
String      GoEChargerFirmware                    "Firmware"                                                         (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:firmware"}
String      GoEChargerAccessConfiguration         "Zugriffsverwaltung"                                               (gWallbox, gRRD4J)    {channel="goecharger:goe:garage:accessConfiguration"}
DateTime    GoEChargerStartTime                   "Start [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]"    <time>           (gWallbox, gRRD4J)
DateTime    GoEChargerLastStartTime               "Start [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]"    <time>           (gWallbox, gRRD4J)
DateTime    GoEChargerLastStopTime                "Ende [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]"     <time>           (gWallbox, gRRD4J)
Number      GoEChargerLastChargedEnergy           "Energie [%.1fkWh]"                               <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerManuellerCommand            "Modus"                                           <settings>       (gWallbox, gRRD4J)
Number      GoEChargerPowerSum                    "Wallbox Leistung [%.0fW]"                        <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerChargedToday                "Energie Heute [%.1fkWh]"                         <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerChargedYesterday            "Energie gestern [%.1fkWh]"                       <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerChargedCurrentWeek          "Energie diese Woche [%.1fkWh]"                   <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerChargedLastWeek             "Energie letzte Woche [%.1fkWh]"                  <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerChargedCurrentMonth         "Energie dieser Monat [%.1fkWh]"                  <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerChargedLastMonth            "Energie letzter Monat [%.1fkWh]"                 <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerChargedCurrentYear          "Energie dieses Jahr [%.1fkWh]"                   <menergy>        (gWallbox, gRRD4J)
Number      GoEChargerChargedLastYear             "Energie letztes Jahr [%.1fkWh]"                  <menergy>        (gWallbox, gRRD4J)
Rule:

Code: Alles auswählen

var  IP_Wallbox = "192.168.177.27"
var Number nSumPowerAvailable = 0
var Number nSumPowerUse = 0
var Number newCurrent = 0
var Number nShutdownCount = 0
var Number nStartChargingEnergy = 0
var Number temp = 0

/* briefing
    pwmSignal = "READY_NO_CAR", "CHARGING", "WAITING_FOR_CAR", "CHARGING_DONE_CAR_CONNECTED"
    manuelle Befehle der API2, die nicht im Binding enthalten sind:
    sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?psm=2") // load with one phase
    sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?psm=1") // load with three phases   
    sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?frc=2") // start charging 
    sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?frc=1") // stop charging 
*/

rule "Wallbox start charging"
/* briefing
    Aktionen, wenn das Laden begonnen wird
*/
when
    Item GoEChargerPwmSignal changed to "CHARGING"
then
    GoEChargerStartTime.postUpdate(new DateTimeType())
    nStartChargingEnergy = GoEChargerTotalChargedEnergy.state as Number
    sendBroadcastNotification("laden gestartet", "mwallbox", "none")  //Pushnachricht 
end


rule "Wallbox stop charging"
/* briefing
    Aktionen, wenn das laden beendet oder abgebrochen wird
*/
when
    Item GoEChargerPwmSignal changed from "CHARGING"
then
    GoEChargerLastStartTime.postUpdate(GoEChargerStartTime.state)
    GoEChargerLastStopTime.postUpdate(new DateTimeType())
    GoEChargerLastChargedEnergy.sendCommand(GoEChargerTotalChargedEnergy.state as Number - nStartChargingEnergy)
    sendBroadcastNotification("laden unterbrochen. Es wurden " + GoEChargerLastChargedEnergy.state.toString +"kWh geladen", "mwallbox", "none")  //Pushnachricht 
end


rule "Wallbox start automatic"
/* briefing
    Startet das automatische Laden, wenn genung Überschuss vorhanden ist
*/
when 
    Item outside_ou_PV_PowerGrid_FeedIn5Min received update
then
    if (GoEChargerManuellerCommand.state == 3){
        if ( GoEChargerPwmSignal.state != "CHARGING"){
    
            if ((outside_ou_PV_PowerGrid_FeedIn5Min.state as Number / GoEChargerVoltageL1.state as Number) > 6)
            {
                if((outside_ou_PV_PowerGrid_FeedIn5Min.state as Number / GoEChargerVoltageL1.state as Number) >16){
                    GoEChargerMaxCurrent.sendCommand(16)
                } else {
                    GoEChargerMaxCurrent.sendCommand(outside_ou_PV_PowerGrid_FeedIn5Min.state as Number / GoEChargerVoltageL1.state as Number)
                }
                sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?psm=1") // load with one phase
                GoEChargerAllowCharging.sendCommand(ON)
                sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?frc=2") // start charging
            } else {
                GoEChargerMaxCurrent.sendCommand(6)
                GoEChargerAllowCharging.sendCommand(OFF)
            }
        }

        if (GoEChargerPwmSignal.state == "CHARCHARGING_DONE_CAR_CONNECTEDGING") {   
            //auto is so voll wie ich gern wäre
        }
    }
    GoEChargerPowerSum.sendCommand(GoEChargerPowerL1.state as Number + GoEChargerPowerL2.state as Number + GoEChargerPowerL3.state as Number)
    if (GoEChargerCurrentL3.state > 0){
        GoEChargerPhases.sendCommand(3)
    }
    else if (GoEChargerCurrentL2.state > 0){
        GoEChargerPhases.sendCommand(2)
    }
    else if (GoEChargerCurrentL1.state > 0){
        GoEChargerPhases.sendCommand(1)
    } else {
    }
end


rule "Wallbox charging automatic"
/* briefing
    Automatikmodus
*/
when
    Time cron "0 0/5 * * * ? *" 
then
    if (GoEChargerManuellerCommand.state == 3){
        if (GoEChargerPwmSignal.state == "CHARGING") {   
            newCurrent = GoEChargerCurrentL1.state as Number + (outside_ou_PV_PowerGrid_FeedIn5Min.state as Number / GoEChargerVoltageL1.state as Number / GoEChargerPhases.state as Number)
            if( newCurrent > 16 ){
                GoEChargerMaxCurrent.sendCommand(16)
                nShutdownCount = 0
            }
            else if( newCurrent < 6 )
            {
                GoEChargerMaxCurrent.sendCommand(6)
                nShutdownCount = nShutdownCount + 1
            } else {
                GoEChargerMaxCurrent.sendCommand(newCurrent)
                nShutdownCount = 0
            }  
            if( nShutdownCount > 2 ){
                GoEChargerAllowCharging.sendCommand(OFF)
            }
            GoEChargerSessionChargeEnergyLimit.sendCommand(0)
        }
    }
end


rule "Wallbox charging manuell"
/* briefing
    manueller Modus:
    Es muss zuerst der manuelle Modus aktiviert werden, bevor das Ladeschema gewählt wird.
*/
when
    Item GoEChargerManuellerCommand changed
then
    if (GoEChargerManuellerCommand.state == 0)
    {
        GoEChargerAllowCharging.sendCommand(OFF)
        sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?frc=1") // stop charging 
        logInfo("Wallbox", "manuelles Laden beendet")
    }
    if (GoEChargerManuellerCommand.state == 1)
    {
        sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?psm=1") // load with one phase
        GoEChargerAllowCharging.sendCommand(ON)
        sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?frc=2") // start charging
        logInfo("Wallbox", "manuelles Laden mit 1ph begonnen")
    }
    if (GoEChargerManuellerCommand.state == 2)
    {
        sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?psm=2") // load with three phases 
        GoEChargerAllowCharging.sendCommand(ON)
        sendHttpGetRequest("http://" + IP_Wallbox + "/api/set?frc=2") // start charging
        logInfo("Wallbox", "manuelles Laden mit 3ph begonnen")
    }
end 


/* ################################################################   DatenTracker   ################################################################*/
rule "Wallbox energytracker"
/* briefing
    Trackt den Energyverbrauch
*/
when
    Time cron "0 0/5 * * * ? *" 
then
	val  ZonedDateTime 	zdt = ZonedDateTime.now()
    var  ZonedDateTime 	StartOfDay = zdt.toLocalDate().atStartOfDay(zdt.getZone()) 

	val  ZonedDateTime 	zdw = ZonedDateTime.now.minusHours((now.getDayOfWeek.getValue-1)*24)
    var  ZonedDateTime 	StartOfWeek = zdw.toLocalDate().atStartOfDay(zdw.getZone())    

	val  ZonedDateTime 	zdm = ZonedDateTime.now.minusHours((now.getDayOfMonth-1)*24)
    var  ZonedDateTime 	StartOfMonth = zdm.toLocalDate().atStartOfDay(zdm.getZone())  

	val  ZonedDateTime 	zdj = ZonedDateTime.now.minusHours((now.getDayOfYear-1)*24)
    var  ZonedDateTime 	StartOfYear = zdj.toLocalDate().atStartOfDay(zdj.getZone())  
    
    GoEChargerChargedToday.sendCommand(GoEChargerTotalChargedEnergy.deltaSince(StartOfDay) as Number)
    GoEChargerChargedCurrentWeek.sendCommand(GoEChargerTotalChargedEnergy.deltaSince(StartOfWeek) as Number)
    GoEChargerChargedCurrentMonth.sendCommand(GoEChargerTotalChargedEnergy.deltaSince(StartOfMonth) as Number)
    if (now.getYear == 2022) {
        GoEChargerChargedCurrentYear.sendCommand(GoEChargerTotalChargedEnergy.state as Number)
    } else {
        GoEChargerChargedCurrentYear.sendCommand(GoEChargerTotalChargedEnergy.state as Number - GoEChargerTotalChargedEnergy.minimumSince(StartOfYear) as Number)
    }

end


rule "Wallbox Day Tracker"
/* Briefing
  Setzt den täglichen Ladewert
*/
when
    Time cron "10 0 0 * * ? *"
then
    var Monthhours = now.minusHours(1).getDayOfMonth *24
    GoEChargerChargedYesterday.sendCommand(GoEChargerTotalChargedEnergy.deltaSince(now.minusHours(24)) as Number)
    if (now.getDayOfWeek.getValue == 1) {
            GoEChargerChargedLastWeek.sendCommand(GoEChargerTotalChargedEnergy.deltaSince(now.minusHours(24*7)) as Number)
    }
    if (now.getDayOfMonth == 1) {   
            GoEChargerChargedLastMonth.sendCommand(GoEChargerTotalChargedEnergy.deltaSince(now.minusHours(Monthhours)) as Number)    
    } 
    if (now.getDayOfYear == 1) {   
            GoEChargerChargedLastYear.sendCommand(GoEChargerTotalChargedEnergy.state as Number - GoEChargerTotalChargedEnergy.minimumSince(now.minusHours(365*24)).state as Number)    
    } 
end 
Auszug Sitemap

Code: Alles auswählen

Group item=gWallbox icon="mwallbox" 
        {
            Frame label="manuelles Laden" icon=heating {
                Switch item=GoEChargerManuellerOverride  icon=energy mappings=[0="automatik", 1="manuell"]
                Switch item=GoEChargerManuellerCommand icon=energy mappings=[0="Aus", 1="1-phase", 2="3-phasig"]
                Setpoint item=GoEChargerMaxCurrent  step=1 minValue=6 maxValue=16
                Setpoint item=GoEChargerSessionChargeEnergyLimit step=1 minValue=1 maxValue=35
                
            }
            Frame label="aktueller Ladevorgang" icon=calender {
                Image url="http://marvin:8080/static/Wallbox/car.png"
                Text item=GoEChargerStartTime
                Text item=GoEChargerPwmSignal
                Text item=GoEChargerMaxCurrent 
                Text item=GoEChargerPhases
                Text item=GoEChargerCurrentL1
                Text item=GoEChargerPowerL1
                Text item=GoEChargerCurrentL2
                Text item=GoEChargerPowerL2
                Text item=GoEChargerCurrentL3
                Text item=GoEChargerPowerL3
                Text item=GoEChargerSessionChargedEnergy
                Text item=outside_ou_PV_PowerGrid_cor valuecolor=[>0="green", <0="red"] 
 
            }
            Frame label="letzter Ladevorgang" icon=calender {
                Text item=GoEChargerLastStartTime
                Text item=GoEChargerLastStopTime
                Text item=GoEChargerLastChargedEnergy
                Chart item=GoEChargerPowerL1 icon=energy refresh=10000 period=D
            }
               
            Frame label="Historie" icon=calender {
                Image url="http://marvin:8080/static/Wallbox/History.png"
                Text item=GoEChargerChargedToday
                Text item=GoEChargerChargedYesterday
                Text item=GoEChargerChargedCurrentWeek
                Text item=GoEChargerChargedLastWeek
                Text item=GoEChargerChargedCurrentMonth
                Text item=GoEChargerChargedLastMonth
                Text item=GoEChargerChargedCurrentYear
                Text item=GoEChargerChargedLastYear
                Text item=GoEChargerTotalChargedEnergy
                Chart item=GoEChargerTotalChargedEnergy icon=energy refresh=300000 period=M
            }
        }      
        Group item=gPV icon="mpv" 
        {
            Frame label="Bezug" icon=mpv {
                Text item=outside_ou_PV_PowerSolar
                Text item=outside_ou_PV_PowerGrid_FeedOut valuecolor=[<0="red"] 
                Text item= outside_ou_PV_EnergyString1 label="Leistung SüdWest" icon= mgardenview
                Text item= outside_ou_PV_EnergyString2 label="Leistung NordOst" icon= mstreetview
                Text item= outside_ou_PV_EnergyString1Modul label="Leistung SüdWest (Modul)" icon= mgardenview
                Text item= outside_ou_PV_EnergyString2Modul label="Leistung NordOst (Modul)" icon= mstreetview
            }
            Frame label="Verbrauch" icon=calender {
                Text item=GoEChargerPowerSum icon=mwallbox
                Text item=house_kg_boiler_HeatPumpPower icon=radiator
                Text item=WasherPower
                Text item=DryerPower
                Text item=DishwasherPower icon=mdish
                Text item=CoffeePower label="Kaffeemaschine Leistung" icon=mcoffee
                Text item=outside_ou_PV_PowerUse label="Summe"
            }
            Frame label="Einspeisung" icon=calender {
                Text item=outside_ou_PV_PowerGrid_FeedIn valuecolor=[>0="green"] 
            }
            Frame label="Tag" {
                Chart item=gPVGrid refresh=300000 period=d
            }
            Frame label="Stromkosten" icon=calender {
                Chart item=Cost_Energy_Yesterday icon=energy refresh=300000 period=M
                Setpoint item=Cost_Energy_BasicFees step=0.1 minValue=1 maxValue=300
                Setpoint item=Cost_Energy_SelfConsumption step=0.0001 minValue=0.01 maxValue=1
                Setpoint item=Cost_Energy_ElectricityPrice step=0.0001 minValue=0.01 maxValue=1
                Setpoint item=Cost_Energy_Sell step=0.0001 minValue=0.01 maxValue=0.2  
            }
        }      
    }
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Wallbox Lademanagement über OH 3

Beitrag von udo1toni »

Super, danke für den Beitrag!

Da ich nächstes Jahr meinen ID.3 geliefert bekomme, bin ich etwas neugierig... Ist es nicht problematisch, den Ladestrom ständig zu ändern? Ich denke da vor allem an Tage mit wechselnder Bewölkung. Wie sind da Deine Erfahrungen?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

paradeismarvin
Beiträge: 3
Registriert: 12. Jul 2021 13:29

Re: Wallbox Lademanagement über OH 3

Beitrag von paradeismarvin »

Erfahrung kann ich nicht vorweisen, da der Golf gebraucht gekauft wurde und erst 1 Monat von mir geladen wird
Aber:
Der Batterie darf es nichts machen. Jedes mal Bremsen ist ein Ladezyklus mit variablen Strom.

Was eher ein Problem sein könnte wäre ständiges An- und Abschalten, bzw. Umschalten von einphasig auf Mehrphasig. Darum lade ich im Automatikbetrieb nur Einphasig (was für mich völlig reicht) und mittle den Strom über 5 Minuten, dass nicht ein Wölkchen am Himmel oder das Einschalten der Waschmaschine den Ladezyklus abbricht.

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Wallbox Lademanagement über OH 3

Beitrag von int5749 »

udo1toni hat geschrieben: 27. Apr 2022 20:25 Da ich nächstes Jahr meinen ID.3 geliefert bekomme, bin ich etwas neugierig... Ist es nicht problematisch, den Ladestrom ständig zu ändern? Ich denke da vor allem an Tage mit wechselnder Bewölkung. Wie sind da Deine Erfahrungen?
Wir haben seit Juli 2021 einen Fiat 500 Elektro für meine Frau und aufgrund der bisher guten Erfahrungen wurde der EV6 als Familienauto im März bestellt. Das "Problem" was ich bei openHAB hatte/habe ist es, den SoC des Autos zu erhalten. hier hat sich das bereits erwähnte EVCC bewährt => Breite Unterstützung von Wallboxen und EV's.

Auch dort wird die Wallbox in Abhängigkeit der Sonne gesteuert => Ladestrom und ggfs 1p/3p Umschaltung (wo unterstützt) und vor Allem Zielladung bei EV's welche dies nicht von Hause aus unterstützen, wie z.B. unser Fiat 500
Ein Problem gab es mit der Anpassung des Ladestrom noch nicht, weder am Auto noch bei der Wallbox

Was ich mit openHAB steuere ist das laden in der Nacht (ab Herbst) wenn der PV Ertrag nicht mehr ausreicht um kurz vor Abfahrt fertig geladen zu haben und somit eine Grundtemperierung des Akkus zu erreichen.

VG
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

George86
Beiträge: 10
Registriert: 1. Aug 2022 22:40

Re: Wallbox Lademanagement über OH 3

Beitrag von George86 »

Wir haben seit 3 Wochen einen Opel Corsa-e. Den lade ich über eine Keba P30 Wallbox (die mit der Förderung). Ich habe bei mir eine Überschussladung über die PV-Anlage realisiert. Unsere PV hat 9,99kWp.

Also folgendes Setup: Kostal Wechselrichter -> Kostal Binding an OpenHab3 ->Rule in Openhab -> KebaBinding -> Keba Wallbox

Die Daten des Wechselrichters fahre ich zusätzlich in eine InfluxDB und visualisiere über Grafana. Die Werte der PV nehme ich für die Rule auch aus der Influx. So lassen sich die Werte über z.B. 5 oder 10 Minuten glätten, damit die Rule nicht bei jeder Wolke den Ladevorgang abbricht.

Bisher lade ich das Fahrzeug dreiphasig, d.h. ich benötige min. 4150 W (6A an 3 Phasen) von der PV, dass die Ladung beginnt. Bei dem aktuellen Sommerwetter ist das absolut kein Problem, aber im Herbst und Winter würde ich gerne auch einphasig laden. Problem: die Keba kann zwar einphasig laden und das Auto auch, allerdings kann die Wallbox nicht umschalten. Das möchte ich nun mit einem externen Schütz realisieren, das ich über KNX schalte. Manuell hab ich das schon getestet, das einphasige Laden funktioniert.

Aktuelles Problem: Die Wallbox liefert mir den "Power" Wert nicht. Laut Thing sollte die Wallbox die aktuell eingespeiste Leistung anzeigen. Das entsprechende Item steht aber immer auf 0W. Die Leistung wäre gut für die Überschussberechnung zu gebrauchen. Aktuell berechne ich die aktuelle Ladeleistung über den zuletzt benutzten Ladestrom. Funktioniert soweit ganz gut, nur ab etwa 90% reduziert das Fahrzeug die Ladeleistung und ich habe ab dem Zeitpunkt einen Rechenfehler, da ich über den vorgegebenen Wert mehr Leistung annehme, als tatsächlich ins Auto fließt.

Bei der Anbindung der Keba-Wallbox muss man unbedingt darauf achten, dass die DIP-Schalter an der Wallbox richtig konfiguriert sind, sonst hat man nur eine einseitige Kommunikation. Heißt: man kann nur lesen, aber nicht schreiben.

Ansonsten bin ich zufrieden, wie das läuft.

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

Re: Wallbox Lademanagement über OH 3

Beitrag von udo1toni »

Da ich es oben ja erwähnt hatte... Ich habe meinen ID. 3 völlig unerwartet schon Anfang Juni geliefert bekommen (wie auch immer das passieren konnte... avisiert war er für Ende erstes Quartal 2023, aber ich will mich um Himmels Willen nicht beschweren... ;) ) und lade seitdem bisher ausschließlich über das mitgelieferte 2,3 kW Ladegerät einphasig.
Auf lange Sicht werde ich wohl auch in eine Wallbox investieren, aber nicht wegen des möglichen höheren Ladestroms, sondern einzig aus Bequemlichkeit (Ladekabel fest an der Wand und muss nicht weggeräumt werden, das Auto steht im geschlossenen Hof). Tatsächlich komme ich mit etwa 16 % der Ladekapazität zur Arbeit und wieder zurück. Im Winter wird es natürlich nicht so wenig sein, andererseits zieht die Klimaanlage ja auch nicht zu knapp Strom zum kühlen und am Arbeitsplatz kann ich das Fahrzeug gewöhnlich ins Parkhaus stellen, wo es dann nicht ganz so kalt sein dürfte.
Jedenfalls reichen mir momentan fünf Stunden locker, um die 10 kWh für knapp 70 km nachzuladen.

Ich bin restlos begeistert und für mich passt es hervorragend als einziges Auto, lediglich der Großeinkauf wird etwas knifflig, weil ich vorher vom Touran Gepäckraum verwöhnt war, aber hey, ich bin auch mal Golf Cabrio gefahren und habe damit zuletzt auch den Kinderwagen transportiert...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

BOP
Beiträge: 197
Registriert: 23. Sep 2018 19:43
Answers: 1

Re: Wallbox Lademanagement über OH 3

Beitrag von BOP »

Ich lade meinen Fiat 500e seit Dezember mit einem go-eCharger. Im Prinzip aber auch nur aus Bequemlichkeit (und weil mir auf Dauer die SchuKo zu unsicher ist). Das bei Fiat beiliegende 230V Ladegerät kann sogar 13A. Und mehr lade ich mit dem go-eCharger auch nicht. Ich habe sowieso nur eine Phase zur Verfügung.

Da Fiat sich anscheinend nicht in der Lage sieht eine Ladebegrenzung umzusetzen und ich ihn nicht immer auf 100% laden möchte, rufe ich mit ioBroker während des Ladens regelmäßig den Ladezustand ab und schalte bei Erreichen meiner gewünschten Grenze die Ladung über den go-e ab.
Über die Google-Kalender Anbindung kann ich sogar über einen Kalendereintrag das Starten der Ladung aktivieren.

Leider läuft auch nur für den Fiat-Adapter ioBroker, der die Werte an openHAB liefert. Leider gibt es für OH kein Fiat Bindig. :cry:

Ach ja, und einmal pro Monat lasse ich mir die geladene Energiemenge (Zähler im go-e), den km Stand und die Daten des Trip-A per Telegram aufs Handy schicken. Das trage ich dann in eine Exceltabelle ein. Somit habe ich dann einen schönen Überblick über die Verbräuche und Ladeverluste.

Ich benötige übrigens so 7% bis 14% für die Fahrt ins Büro (14 km einfache Strecke).

oschwabe
Beiträge: 2
Registriert: 18. Aug 2022 08:08

Re: Wallbox Lademanagement über OH 3

Beitrag von oschwabe »

@Udo1Toni,
du bist hier sehr aktiv in dem Forum und es kommen von dir auch tolle Codeschnippsel die ich immer wieder gerne aufgreifen und einbaue. Mich würde nun gerade interessieren wie du deinen ID3 gerade lädst und ob du auch Openhab zur Ladesteuerung benutzt?
Wie sehen deine Rules gerade aus? :?:

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

Re: Wallbox Lademanagement über OH 3

Beitrag von udo1toni »

Ich lade den ID. 3 bisher ausschließlich über die normale Haushaltsstrom Steckdose.
Ich brauche meist nicht mehr als 10 kWh für die Strecke Zuhasue-Arbeit-Zuhause. Über 90 % meiner Fahrten sind Fahrten zum Arbeitsplatz, da ich im 20/7 Schichtbetrieb arbeite (und die fehlenden 4 Stunden werden ab und zu für Nachtwartungen verwendet, das trifft dann meist ebenfalls mich.
Andere Fahrten sind dann gewöhnlich Einkauf (da komme ich mit dem ID. 3 allerdings schnell an die Ladegrenzen, ich bin vom Touran mit einem großen Kofferraum verwöhnt ;) ) oder auch mal mit den Kindern ans andere Ende der Stadt oder zum Arzt, aber alles eben eher Kurzstrecke.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten