Ich hab in die myutils eine Funktion eingebaut:
PV: 4,45kwPeak, 9,6kw Akku, Twingo ZE 22kW, GoECharger
Ist aber noch nicht ganz rund :-), klappt aber mit 1Phase super
##Beladung des ZE Renault mit myGoECharger
sub beladen($$$){
my ($ZE, $GoE, $myAkku) = @_;
my $curr_amp_calc = 10;
#state: "finished" "ready_no_car" „charging“ "waiting_for_car"
###################
##1.Beladung Fz im Normalbeladungsfall bei 90% ?
##oder
##2.Beladung soll min 60% im Auto haben
## UND SoC_Akku soll nicht unter 50% sein
##################################################
if ( (ReadingsVal("$GoE", "state", 0 ) eq "charging") &&
( (ReadingsVal("$ZE", "batteryLevel", 0) >= 90) || ##1.
((ReadingsVal("$ZE", "batteryLevel", 0 ) >= 60) && ##2.
(ReadingsVal("$myAkku", "SData_SoC", 0) <= 50)))
)
##dann stoppen
{
fhem("set $GoE off")
}
##b1. bei über 80% SoC kompletten Überschuss ins Auto
##################################################
elsif ( (ReadingsVal("$GoE", "state", 0 ) eq "charging") &&
(ReadingsVal("$myAkku", "SData_SoC", 0 ) >= 80)
)
{
$curr_amp_calc = 2 + (ReadingsVal("$GoE", "amp_current", 0 )) + ((ReadingsVal("$myAkku", "U_PPV", 0 ) - ReadingsVal("$myAkku", "U_HOUSE", 0 ))/230);
if ($curr_amp_calc >= 16) {
fhem("set $GoE amp_current 16")}
elsif ($curr_amp_calc < 8){
fhem("set $GoE amp_current 8")}
else {
fhem("set $GoE amp_current $curr_amp_calc")}
}
##b2. Zwischen 50% und 80% SoC nur teilweise ins Auto
##################################################
elsif ( (ReadingsVal("$GoE", "state", 0 ) eq "charging") &&
(ReadingsVal("$myAkku", "SData_SoC", 0 ) < 80) &&
(ReadingsVal("$myAkku", "SData_SoC", 0 ) >= 50))
{
##345 entspricht 2/3 der Leistung (oder 1,5 mal 230 ;-)
$curr_amp_calc = 1 + (ReadingsVal("$GoE", "amp_current", 0 )) +
((ReadingsVal("$myAkku", "U_PPV", 0 ) - ReadingsVal("$myAkku", "U_HOUSE", 0 ))/345);
if ($curr_amp_calc < 8)
{fhem("set $GoE amp_current 8")}
elsif ($curr_amp_calc >= 16)
{fhem("set $GoE amp_current 16")}
else
{fhem("set $GoE amp_current $curr_amp_calc")}
}
##wenn eh keine Sonne und kein Akku, dann Max-Ladestrom einstellen
##################################################
elsif (ReadingsVal("$GoE", "state", 0 ) eq "charging")
{
fhem("set $GoE amp_current 16")
##TODO: hier noch 3-phasig + Vorauswahl manuell am GoE implementieren
## ggf eigenen elsif Zweig
}
##Auto dran,Autoakku unter 60%, aber startet noch nicht
##################################################
if (((ReadingsVal("$GoE", "state", 0 ) eq "waiting_for_car") || (ReadingsVal("$GoE", "state", 0 ) eq "finished")) &&
(ReadingsVal("$ZE", "batteryLevel", 0 ) < 60)) ##todo elsif machen
{
fhem("set $GoE on")
}
##Standard-Ladewert einstellen, wenn kein Auto dran
##################################################
if ((ReadingsVal("$GoE", "state", 0 ) eq "ready_no_car") && ((ReadingsVal("$GoE", "amp_current", 0 ) ne 10) || (ReadingsVal("vorAuswahl", "state", 0 ) ne 1_10)))
{
fhem("set $GoE amp_current 10");
fhem("set vorAuswahl 1_10") ##kann weg, wenn single_force_phase implementiert ist
}
###dummy log###
fhem("set curr_amp $curr_amp_calc");
}##sub