Modul für Steuerung einer Go-ECharger Wallbox [= go-e oder go-echarger]

Begonnen von LR66, 16 April 2020, 19:50:12

Vorheriges Thema - Nächstes Thema

isy

Moin Jogi,
dieses Modul wird, soweit ich das sehe, nicht mehr gepflegt.
Es gibt aber eine neue Lösung per httpmod, siehe u.a. https://wiki.fhem.de/wiki/GoE_Charger
Oder auch den Beitrag hier im Forum.

VG Helmut
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Mumpitz

Zitat von: Prof. Dr. Peter Henning am 05 November 2024, 21:51:20Oh, das wird noch ne Weile dauern, weil ich im Moment ziemlich viele Baustellen habe. Alle Details zur Einbindung des go-e inklusive solarer Überschussladung per HTTPMOD sind aber hier bereits dokumentiert: https://wiki.fhem.de/wiki/GoE_Charger.

Auch das Festlegen des minimalen Speicherstandes funktioniert wunderbar - derzeit manuell vor Beginn des Ladevorgangs. Funktionalität von evcc ist also vorhanden, nur derzeit noch nicht vollautomatisch.

LG

pah

Wie hast du das genau gemacht mit dem Speicherstand? Wie löst du die einzelnen Ladearten aus?

Prof. Dr. Peter Henning

#422
1. In dem HTTPMOD_Device für die Wallbox gibt es vier set-Befehle, die jeweils mehrere Dinge auf einmal setzen
set70Name a_autoPvCharging
set70NoArg 1
set70URL   http://%goeIP%/api/set?psm=0&amp=6&lmo=4&fup=true

set71Name  a_manMaxCharging
set71NoArg 1
set71URL   http://%goeIP%/api/set?psm=2&amp=16&lmo=3&fup=false

set72Name  a_manMinCharging
set72NoArg 1
set72URL   http://%goeIP%/api/set?psm=0&amp=6&lmo=3&fup=false

set73Name  a_manMedCharging
set73NoArg 1
set73URL   http://%goeIP%/api/set?psm=0&amp=12&lmo=3&fup=false
Ferner einen set-Befehl, der ein "charge_model" auswählt, aber nichts an die Wallbox schickt
set50IMap fast:fast,pvsurplus:pvsurplus,slow:slow,stop:stop
set50Name charge_model
und natürlich
attr Wally userReadings charge_model:none {},...Letzteres wird abgefangen durch ein DOIF
DOIF([Wally:"charge_model.*((fast)|(medium)|(slow)|(pvsurplus)|(stop))"])
({GoEC_setModel("$EVENT")})
und dann weiter in einem Perl Code
###############################################################################
#
#  Lademodus
#
###############################################################################

sub GoEC_setModel($){
  my ($model) = @_;
 
  $model =~ s/charge_model\s//;
 
  #-- fast with or without battery
  if ($model =~ /fast/ ){
    speak("Tab1.EG","Schnelles Laden mit 11 kW an der WallBox eingeschaltet");
    # psm=phase_switchmode 2=force3
    # amp=current_requested 16
    # lmo=charge_mode 3=default
    # fup=charge_pvSurplus false
    # combined as http://%goeIP%/api/set?psm=2&amp=16&lmo=3&fup=false
    fhem("set Wally a_manMaxCharging");
   
    fhem("set Wally on");
    fhem("set Wally interval 10");
    fhem("setreading Wally charge_model fast");
    fhem("set PowerFlow interval 10");
    fhem("set WallyFiller inactive");
   
  }elsif( $model =~ /medium/ ){
    speak("Tab1.EG","Mittleres Laden mit 8 kW an der WallBox eingeschaltet");
    # psm=phase_switchmode 0=auto
    # amp=current_requested 6
    # lmo=charge_mode 3=default
    # fup=charge_pvSurplus false
    # combined as http://%goeIP%/api/set?psm=0&amp=6&lmo=3&fup=false
    fhem("set Wally a_manMedCharging");
    fhem("set Wally on");
    fhem("set Wally interval 10");
    fhem("setreading Wally charge_model slow");
    fhem("set PowerFlow interval 10");
    fhem("set WallyFiller inactive");
   
  }elsif( $model =~ /slow/ ){
    speak("Tab1.EG","Langsames Laden mit 4 kW an der WallBox eingeschaltet");
    # psm=phase_switchmode 0=auto
    # amp=current_requested 6
    # lmo=charge_mode 3=default
    # fup=charge_pvSurplus false
    # combined as http://%goeIP%/api/set?psm=0&amp=6&lmo=3&fup=false
    fhem("set Wally a_manMinCharging");
    fhem("set Wally on");
    fhem("set Wally interval 10");
    fhem("setreading Wally charge_model slow");
    fhem("set PowerFlow interval 10");
    fhem("set WallyFiller inactive");
   
  }elsif( $model =~ /pvsurplus/ ){
    speak("Tab1.EG","Solares Überschussladen an der WallBox eingeschaltet");
    # psm=phase_switchmode 0=auto
    # amp=current_requested 6
    # lmo=charge_mode 4=eco
    # fup=charge_pvSurplus true
    # combined as http://%goeIP%/api/set?psm=0&amp=6&lmo=4&fup=true
    fhem("set Wally a_autoPVCharging");
    fhem("set Wally on");
    fhem("set Wally interval 10");
    fhem("setreading Wally charge_model pvsurplus");
    fhem("set PowerFlow interval 10");
    fhem("set WallyFiller active");
   
  }elsif( $model =~ /stop/ ){
    ## "153_id7_wbe" => "Laden des ID7 abgeschlossen",
    speak("Tab1.EG",":153:");
    fhem("set Wally off");
    fhem("set Wally interval 60");
    fhem("setreading Wally charge_model stop");
    fhem("set PowerFlow interval 60");
    fhem("set WallyFiller inactive");
 
  }else{
    Log 1,"[GoC_setModel] invalid charge model $model selected";
  }
}

2. Der Speicher wird über die ModBus-Anbindung des Wechselrichters gesteuert.
Dafür gibt es auf der obersten Ebene einen dummy für den Speicher
defmod Battery dummy
attr Battery group energyStorage
attr Battery readingList status SOC SOC_min SOC_target
attr Battery room Energie
attr Battery setList target:keep,min50,min15,fill SOC_min
attr Battery sortby 1
attr Battery stateFormat <p align="left">&#83;;OC SOC% status ()</p>
attr Battery webCmd target
attr Battery webCmdLabel SOC target
attr Battery widgetOverride SOC_target:keep,min50,min15,fill
Wenn man darin den Befehl set Battery SOC_target <xyz> aufruft, wird das über ein DOIF abgefangen
DOIF
([Battery:".*target.*"])
({Battery_target("$EVENT")})
und wieder ein Stück Perl-Code ausgeführt
###############################################################################
#
#  Battery target
#
###############################################################################

sub Battery_target($){
  my ($event) = @_;

  my $target;
  if ($event =~ /fill/ ){
    $target=100;
  }elsif ($event =~ /min50/ ){
    $target=50;
  }elsif ($event =~ /min15/ ){
    $target=15;
  }elsif ($event =~ /keep/ ){
    $target=int(ReadingsVal("Battery_WRModBus","SOC",7));
  }
  fhem("set Battery_WRModBus SOC_min ".$target);
  fhem("setreading Battery SOC_min ".$target);
}

Na, und für meine Ehefrau: Es gibt auf der "Energie"-Seite meiner wandhängenden Tablets zwei Dropdown-Buttons, mit denen man Speicherstand und Lademodell wählen kann.

LG

pah