PHP Modul zum Einbinden einer Go-eCharger Wallbox

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.

<?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); 
}
?>