GoE Charger

Aus FHEMWiki

Der GoE-Charger ist eine WallBox des österreichischen Herstellers go-e (geründet 2015). Derzeit (2024) sind verschiedene Modelle im Angebot:

  • go-e Charger Gemini - WallBox mit 11 oder 22 kW Ladeleistung
  • go-e Charger Gemini Flex - mobile Version des obigen Gerätes zum Anschluss an eine vorhandene Kraftstromsteckdose
  • go-e Charger Gemini 2.0 - Variante des obigen Gerätes mit integrierter SIM-Karte für mobilen Datenzugriff
  • go-e Charger Gemini Flex 2.0 - mobile Version des obigen Gerätes zum Anschluss an eine vorhandene Kraftstromsteckdose

Einbindung via HTTPMOD

Die Abfrage und Steuerung erfolgen über das HTTPMOD-Modul, welches im Regelfall einmal pro Minute auf die wichtigsten Daten der Wallbox zugreift, auch manuell abrufbar als

get Wally status

Weitere Informationen lassen sich mit

get Wally energy_details
get Wally led_details
get Wally goe_details 

abrufen.

Basisdefinition

Benötigt wird dazu die IP-Adresse der Wallbox im lokalen Netzwerk, die in den nachfolgenden Code einzusetzen ist. Das Device heißt im Beispiel einfach Wally

Code:

End-of-day Reporting

Etwas ungünstig ist, dass sich die Wallbox nicht merkt, wieviel Energie an einem bestimmten Tag in das Fahrzeug geladen wurde. Sie kennt stattdessen nur die ausgegebene Gesamtenergie und die Energie seit der letzten Ankopplung. Um das zu umgehen, wurde in das HTTPMOD-Device bereits ein userreading energy_today eingebaut. Das muss natürlich am Ende eines jeden Tages befüllt werden, außerdem kann man beim Fahrzeug speichern, wieviel es "heute" bekommen hat. Entweder durch eine Automatisierungslösung (wie z.B. YAAHM) oder ein at-device sollte deshalb kurz vor Mitternacht der folgende Perl-Code aufgerufen werden.

sub GoEC_EOD(){
  my $e=ReadingsVal("Wally","energy",0);
  my $f=ReadingsVal("Wally","energy_today",0);
  my $g=ReadingsVal(<Device des Fahrzeugs>,"odometer",0);
  fhem("setreading Wally energy_yesterday $e");
  fhem("setreading <Device des Fahrzeugs> charge_athome ".sprintf("%.3f total %.3f odo %d",$f,$e,$g));
  fhem("setreading Wally energy_today 0.0");
}

Alternativ kann man das Modul Statistics verwenden. Dazu ist es nötig, um kompatibel mit anderen FHEM_Devices zu sein, dass die insgesamt von der Wallbox verbrauchte Energie im monoton anwachsenden Reading energy abgebildet wird. Das Modul Statistics wird nur einmal pro FHEM-Installation benötigt und kann für beliebig viele Devices mit einem Reading energy dann zusätzliche Readings

statEnergyDay
statEnergyMonth
statEnergyYear

erzeugen. Anleitung dazu bitte beim Statistics-Modul nachschlagen.

Status als Nachricht

Für den Fall, dass man zwischendurch den Status der Wallbox abfragen möchte (z.B. via Modul Babble), empfiehlt es sich, ein ständig aktuelles Reading message bereitzuhalten. Im nachfolgenden Code bitte <Fahrzeug> durch die Bezeichnung des eigenen Fahrzeugs ersetzen, und ggf. für die Restladezeit auf das Device für das Fahrzeug verweisen.

Code:

Solares Überschussladen

Beim solaren Überschussladen benötigt die Wallbox spätestens alle sieben Sekunden neue Daten über die solare Leistung, die aus dem Stromnetz (Grid) bezogene Leistung und die aus dem Speicher bezogene Leistung, jeweils in Watt. Die Wallbox steuert dann recht zuverlässig den Ladevorgang so, dass möglichst wenig Leistung ins Netz eingespeist wird. Das geht natürlich nicht stufenlos, weil die Ladeströme in der Regel nicht stufenlos eingestellt werden können. Die minimale Ladeleistung sind deshalb ca. 1,4 kW, erreicht mit einem Ladestrom von 6 Ampere einphasig. Für die maximale Ladeleistung beim solaren Überschussladen sollte man natürlich wissen, was PV-Anlage und Speicher zusammen liefern können.

Zur Versorgung der Wallbox mit Daten wird ein at-device eingerichtet, das alle 5 Sekunden ein Perl-Programm aufruft, welches diese Daten sammelt und per HTTP an die Wallbox übermittelt

defmod WallyFiller at +*00:00:05 {GoEC_setPvSPData()}

Das Perl-Programm kann man z.B. in einer Datei 99_EnergyUtils unterbringen. Im Beispiel holt es die Daten aus einem Device PowerFlow, welches die Leistungswerte in kW enhält. Bitte daraum achten, dass die Wallbox einen negativen Datenwert für pAkku verlangt, wenn der Speicher gerade geladen wird.

 sub GoEC_setPvSPData() {
  my $uri             = sprintf("http://<IP-Adresse>/api/set?ids={%%22pGrid%%22:%.0f,%%22pPv%%22:%.0f,%%22pAkku%%22:%.0f}",
	ReadingsVal("PowerFlow","power_grid",0.0)*1000,ReadingsVal("PowerFlow","power_PV2",0.0)*1000,ReadingsVal("PowerFlow","power_battery",0.0)*(-1000,));
	
  HttpUtils_NonblockingGet(
        {
            url         => $uri,
            timeout     => 5,
            method      => 'GET',
        }
    );
 }

Zur Entlastung des FHEM-Systems sollte man das natürlich "schaltbar" machen. Auch dafür gibt es ein Device

defmod WallyPvSurplus dummy
attr WallyPvSurplus cmdIcon on:general_an off:general_aus
attr WallyPvSurplus devStateIcon on:general_on off:general_off
attr WallyPvSurplus setList state:on,off
attr WallyPvSurplus webCmd on:off

und natürlich ein notify- oder DOIF-Device, das auf dieses reagiert und die entsprechende Perl-Routine aufruft. Mit DOIF:

defmod Wally.N DOIF\
([WallyPvSurplus] eq "on")\
{GoEC_setPvSP("on")}\
DOELSEIF\
([WallyPvSurplus] eq "off")\
{GoEC_setPvSP("off")}

Diese Perl-Routine führt die verschiedenen Umschaltvorgänge aus.

sub GoEC_setPvSP($) {
  my ($cmd) = @_;
  if( $cmd eq "on" ){
     speak("Tab1.EG","Solares Überschussladen an der WallBox eingeschaltet");
     fhem("set Wally charge_mode eco");
     fhem("set Wally current_requested 6");
     fhem("set Wally charge_pvSurplus yes");
     fhem("set Wally interval 10");
     fhem("set WallyFiller active");
  }else{
    fhem("set WallyFiller inactive");
    fhem("set Wally interval 60");
    fhem("set Wally charge_pvSurplus no");
    fhem("set Wally current_requested 16");
    fhem("set Wally charge_mode default");
    speak("Tab1.EG","Solares Überschussladen an der WallBox ausgeschaltet")
      if($cmd ne "quietoff");
  }
}