Go-eCharger, Discovergy und Solarnutzung

Ich mach hier mal einen neuen Thread auf, es geht um die Umsetzung:
Nutzung des eigenen Solarstroms im go-eCharger (Wallbox) in Verbindung mit einem Discovergy-Smartmeter (hier Awattar, aber Tibber ebenso möglich)
Genutzt wird aus dem Modulstore das Discovergy-Modul sowie das go-eCharger Modul.
Hier der ursprüngliche Thread:

Ich wiederhole nochmal die relvanten Posts, ist glaube ich, einfacher, auch wenn ich Vollzitate lästig finde:

So, hier jetzt die aktuelle Version des Scriptes. Sie unterstützt das Sofortladen, das Awattar-Laden und das Laden mit Solarüberschuss.
Die Auswahl trifft man mit der Zugangskontrolle: Sofortladen ist die 0, Solarladen die 1 und Awattar-Laden die 3.
Das Variablenprofil habe ich entsprechend angepasst und in Ladeart umbenannt.
Es gibt noch zwei Events, eines bei Änderung der Ladeart (Zugangskontrolle) und einen 15 s Timer, der im Script beim Solarladen aktiviert wird.
Das Solarladen hat eine Hysterese, damit nicht jeder winzige Sonnenstrahl zum Einschalten führt: Erst bei verfügbaren 10 A ein und bei unter 6 A aus.
Er sollte sowohl 3-phasig, als auch 1-phasig funktionieren. Das Umschalten werde ich an der Sicherung vornehmen müssen, der Go-e kann es ja nicht selbst.

So, hier jetzt die aktuelle Version des Scriptes. Sie unterstützt das Sofortladen, das Awattar-Laden und das Laden mit Solarüberschuss.
Die Auswahl trifft man mit der Zugangskontrolle: Sofortladen ist die 0, Solarladen die 1 und Awattar-Laden die 3.
Das Variablenprofil habe ich entsprechend angepasst und in Ladeart umbenannt.
Es gibt noch zwei Events, eines bei Änderung der Ladeart (Zugangskontrolle) und einen 15 s Timer, der im Script beim Solarladen aktiviert wird.
Das Solarladen hat eine Hysterese, damit nicht jeder winzige Sonnenstrahl zum Einschalten führt: Erst bei verfügbaren 10 A ein und bei unter 6 A aus.
Er sollte sowohl 3-phasig, als auch 1-phasig funktionieren. Das Umschalten werde ich an der Sicherung vornehmen müssen, der Go-e kann es ja nicht selbst.

Hier die Variablen-IDs, weil ich sie direkt vergeben habe:




<?php
$Ladeart=GetValueInteger(49732);

if($Ladeart==1)
{
    $aktuelleSolarLeistung=intval(GetValueFloat(46019))*(-1);
    $aktuelleSpannung=intval(GetValueFloat(44781));
    $aktuellerLadestrom=intval(GOeCharger_GetCurrentChargingAmperage( 52269));
    $Ladestatus=GOeCharger_GetStatus( 52269 );
    $Ladenaktiv=GOeCharger_IsActive( 52269 );
    $Phasen=GetValueInteger(24425);
    $SollLadeStrom=0;
    Print("Solarladen ein");
    //Bei einphasigem Laden geht es bei 1400 W los
    //Bei 3 phasigem Laden beginnt es bei 4140 W

    if($Ladestatus==2 && $Ladenaktiv)
    {
        $SollLadeStrom = ($aktuellerLadestrom * $Phasen) + ($aktuelleSolarLeistung / $aktuelleSpannung);
    }
    else
    {
        $SollLadeStrom=$aktuelleSolarLeistung / $aktuelleSpannung;
    }

    $SollLadeStrom=intval(round($SollLadeStrom * $Phasen));


    if($SollLadeStrom >= 6 && $Ladenaktiv ) 
    {
        GOeCharger_SetCurrentChargingAmperage( 52269, $SollLadeStrom);
        GOeCharger_SetActive( 52269, true );
        IPS_SetEventActive(12058, true); 
    }
    elseif($SollLadeStrom >= 10 ) 
    {
        GOeCharger_SetCurrentChargingAmperage( 52269, $SollLadeStrom);
        GOeCharger_SetActive( 52269, true );
        IPS_SetEventActive(12058, true); 
    }
    else 
    {
        GOeCharger_SetCurrentChargingAmperage( 52269, 16);
        GOeCharger_SetActive( 52269, false );
        IPS_SetEventActive(12058, true); 

    }
}
else
{
    GOeCharger_SetCurrentChargingAmperage( 52269, 16);
    //GOeCharger_SetActive( 52269, true );
    IPS_SetEventActive(12058, false); 
}
?>

PeterSJunior Member:

Hi,

klasse, dass du einen eigenen Ansatz begonnen hast!

Vielen Dank!!!

Ich würde auch die komplette IPS Variante bevorzugen, bevor ich noch einen weiteren Raspi mit openWB an den Start bringe …

Da du die Variablen ja direkt zugeordnet hast fällt es mir an einigen Stellen etwas schwer dein Script zu verstehen bzw. es zu adaptieren. Hast du vielleicht die Möglichkeit einen Screenshot zu machen, sodass man die Zuordnung erkennen kann?

Ich vermute, dass du neben dem Go-eCharger Modul noch das Discovergy/Awattar Modul nutzt, richtig?

Jup

Hier meine Unklarheiten:

→ Du greift auf die 'Variable Zugangscontrolle vom Modul Go-eCharger zu? Warum nimmst du hier nicht GOeCharger_GetAccessControl( 52269 ) Wobei dann die „0“ wohl der richtige Wert wäre für Solarladen?

Die Funktion hab ich wohl nicht gefunden, ist aber das Gleiche.
0 - Sofortladen (dauerhaft ein)
1 - Solarladen (RFID)
2 - Awattarladen
Damit auch im Frontend das Richtige steht, hab ich die Variable in Ladeart umbenannt und ein eigenens Profil hinterlegt:

Man muss ein neues Profil anlegen (das Original duplizieren) und zuweisen, sonst wird das im Frontend nicht angezeigt.

Greifst du aus der Discovergy/Awattar Modul die Gesamtleistung ab oder die einer Phase?

Gesamtleistung - die Zähler verwenden alle nur die Summe der 3 Phasen. Wenn Du auf Phase 1 1kW einspeist und auf Phase 2 1kW verbrauchst, ist das genauso, als wenn die Last auf Phase 1 hängt.
Für die Solarnutzung interessieren also nicht die Phasen, sondern nur die Gesamtmenge.

Die Spannung liegt hier ja nur für die einzelnen Phasen vor, nimmst du die von Phase 1?

Hier habe ich eine beliebige Phase vom Discovergy abgefragt. Besser ist jedoch die Spannungsversorgung L1 des go-e zu nehmen, weil dann die Leitungsverluste bereits berücksichtigt sind. Zumindest bis zum go-e.

[quote=„HD123, post:59, topic:47281“]
$Phasen=GetValueInteger(24425);

Das ist die Variable „Verfügbare Phasen“, richtig?
[/quote]
Nein, denn das ist ein String. Ich nehme verfügbare Phasen in Reihe und hoffe, dass dann bei 3 Phasen auch 3 steht. (z.Z. klemmt meine Box nur einphasig dran, das wird aber noch geändert.)

Event 1 ruft bei Änderung vermutlich das Script noch einmal auf …
Event 2 verstehe ich nicht ganz. :slight_smile:

Je nach Ladeart wird die regelmäßige Ausführung des Scripts eben gebraucht oder auch nicht:
Bei Sofort- oder Awattar-Laden wird der Strom auf 16 A und die Box auf aktiv geschaltet. Den Rest macht sie selbst. Beim Solarladen läuft der Script aller 15 s und regelt die Ladeleistung nach dem Solar-Überschuss nach. Deshalb gibt es den einen Timer der im Script aktiviert oder deaktiviert wird, und das Event, was das auch bei deaktiviertem Timer tut.

Vielen Dank für deine Mühe der ausführlicheren Dokumentation!

Ich hab die Änderungen adaptiert und werde die Reaktion des Systems mal beobachten :slight_smile:

Leider kann ich die Posts nach einem Tag nicht mehr ändern, deshalb muss ich einen neuen machen. Ich hatte wohl einige Fehler bei 3phasigem Laden und habe das deshalb noch einmal überarbeitet.
Gleichzeitig habe ich ein paar Kommentare eingearbeitet. Hier ist der aktuelle Script:

<?php
$Ladeart=GetValueInteger(49732);

if($Ladeart==1)
{
    $aktuelleSolarLeistung=GetValueFloat(46019)*(-1);  //Der Überschuss ist negativ
    $aktuelleSpannung=GetValueInteger(22890);
    $aktuellerLadestrom=intval(GOeCharger_GetCurrentChargingAmperage( 52269));
    $aktuelleLadeleistung=GOeCharger_GetPowerToCar( 52269)*1000;  //in W umgerechnet
    $Ladestatus=GOeCharger_GetStatus( 52269 );
    $Ladenaktiv=GOeCharger_IsActive( 52269 );
    $Phasen=GetValueInteger(24425);

    //Bei einphasigem Laden geht es bei 1840 W los und bis 1400 W runter
    //Bei 3 phasigem Laden beginnt es bei 5520W und geht bis 4140 W runter

    //Wird bereits geladen, ist die aktuelle Ladeleistung dem Solarüberschuss hinzuzurechnen. Bei 3 Phasen drittelt sich der benötigte Ladestrom
    $SollLadeStrom=intval(round(($aktuelleSolarLeistung + $aktuelleLadeleistung) / ($aktuelleSpannung * $Phasen)));
    

    if($SollLadeStrom >= 6 && $Ladenaktiv ) //Wird bereits geladen, kann der Ladestrom auf 6A absinken
    {
        GOeCharger_SetCurrentChargingAmperage( 52269, $SollLadeStrom);
        GOeCharger_SetActive( 52269, true );
        IPS_SetEventActive(12058, true); 
    }
    elseif($SollLadeStrom >= 8 )  //wird noch nicht geladen, muss min. 8A Überschuss vorhanden sein, um Laden zu starten
    {
        GOeCharger_SetCurrentChargingAmperage( 52269, $SollLadeStrom);
        GOeCharger_SetActive( 52269, true );
        IPS_SetEventActive(12058, true); 
    }
    else  //zu wenig Überschuss um zu Laden
    {
        GOeCharger_SetCurrentChargingAmperage( 52269, 0);
        GOeCharger_SetActive( 52269, false );
        IPS_SetEventActive(12058, true); 

    }
}
else  //Ladeart ist nicht Solarladen, daher wird der Script-Timer deaktiviert
{
    GOeCharger_SetCurrentChargingAmperage( 52269, 16);
    IPS_SetEventActive(12058, false); 
}
?>

Danke für die Korrektur und deine Mühe!

Da ich aktuell mit ganz anderen Dingen ziemlich beschäftigt bin kann ich es leider nur nebenher betrachten …

Mir ist ein Fehler aufgefallen, da auch bei viel zu wenig Überschuss das System immer auf Aktiv gestanden hat. Auch die Nacht über immer mal wieder …

Ich werde mal versuchen deine Änderungen zu adaptieren und dann schauen ob es nun richtig reagiert!

Danke!

(Ich nutze 3-Phasiges Laden. Das Thema Umschalten auf 1-Phase müsste ich mir erst einmal genauer betrachten,)

Ich benutze den Script auch selbst…
Das mit dem 1 bzw. 3 phasigem Laden ist relevant, wenn der Überschuss nicht so groß ist.
Bei einphasigem Laden geht die Ladeleistung von ca. 1,4 kW - 3,7 kW, bei 3 phasigem das jeweils 3-fache, also 4,1 kW - 11kW. Habe ich jetzt hauptsächlich Überschüsse unter 4 kW, lädt man mit der einphasigem Variante besser, darüber mir der 3-phasigen.
Generell sind die Ladeverluste bei geringerer Ladeleistung höher. Deshalb lade ich bei den anderen Ladearten auch mit der höchsten Ladeleistung.
Vermutlich werde ich in der Übergangszeit oder den ganzen Sommer einphasig und im Winter 3-phasig laden. Man braucht also nicht alle naselang umzuschalten.
Die Box kann nicht selbst umschalten, also sollte man erst alle 3 Sicherungen aus- und dann eben eine oder 3 wieder einschalten.
Ich glaube, es ist nicht egal , welches die richtige Sicherung für Einphasig ist, für die Box ist L1 entscheidend. Wie das im Einzelfall angeschlossen ist, kann unterschiedlich sein. Erwischt man die Falsche, geht die Box auf Fehler oder startet nicht. Spätestens die 3. Sicherung sollte dann die Richtige sein.

Danke, Das werde ich mir noch einmal genauer anschauen. Irgendwo hab ich zu dem Thema schon einmal etwas gelesen. Auch wie einige dies Thema entsprechend realisiert haben …

Wenn ich über das Netzt lade nutze ich auch die schnellste Ladevariante getriggert über aWattar.

Das Script habe ich nebenbei mal eingebaut. Sieht auf den ersten Blick gut aus! :slight_smile:

Ich werde es jetzt einfach mal beobachten und dir berichten :slight_smile:

Also soweit funktioniert es ganz gut bei mir … :slight_smile:

Tatsächlich wäre das Laden mit nur einer Phase eine nette Option. Schade, dass es mit dieser WallBox anscheinend nur hardwaresseitig zu lösen ist.

Desweiteren habe ich bei mir folgendes Verhalten …

Ist die Box über

GOeCharger_SetActive( 52269, false );

deaktiviert und ich schließe dann mein Auto abends an. Erhalte ich bei der nächsten Aktivierungvon der Box die Meldung: Wartet auf Auto

Ich muss dann tatsächlich einmal den Stecker aus dem Auto rausziehen und wieder reinstecken damit es funktioniert.

Ich nehme mal die Zeile raus und lasse die Box einfach die ganze Zeit activ. DAs sollte ja dann gehen …

Ich nehme das Deaktivieren jetzt mal raus und schaue ob es dann geht …

… ich hatte die Komfortfunktionen deaktiviert …

Vielleicht bringt das Aktivieren ja auch das gewünschte Ergebnis :slight_smile:

Die beiden Komfortfuntionen sind bei mir aus. Liegt aber möglicherweise am Auto. Ich hab ein M3 und es dauert einige Sekunden, bis es losgeht (ca.10…30s). Vielleicht musst du das mal abwarten?
Oder bei deinem Auto ist das anders. Ich weiß aber, das die originale WB-Box extra für einige Autos das an-und abstecken simuliert. Meines Wissens ist aber nur die Zoe so eine Ladezicke.

Hallo PeterS,
Frage: an welcher Stelle finde ich die Komfortfunktionen um diese einzustellen?
Danke.
Gruß
Ekkehard

Hallo,

ist vielleicht mittlerweile über IPS die Phasenumschaltung möglich? Bei der V3, nur mal gefragt…

Schon schade das der Hersteller die Befehle nicht frei gibt.