Seite 1 von 1

Ladestopp bei soc der Autobatterie

Verfasst: Do 5. Mai 2022, 12:47
von to:be
Moinsen,

hat schonmal jemand versucht die Ladung automatisiert zu stoppen?

Ich habe den soc der Autobatterie in influx db:iobroker measurement:batteryLevel field:value.

Die Ladung soll gestoppt werden, wenn soc 80% erreicht oder überschreitet.

Versucht habe ich die wall-math.php hierfür zu nutzen, finde jedoch nicht den passenden Parameter.

Ladestatus = 4 veranlasst die Solaranzeige davon auszugehen, dass das Auto bereits die Ladung gestoppt hätte, veranlasst jedoch nicht die Unterbrechung der Ladung.

Pause = 1 stoppt die Ladung leider auch nicht.

MaxEnergie in wall-math.php einfach auf 1 Wh zu setzen interessiert die Steuerung auch nicht.

Habt Ihr noch Ideen?

Viele Grüße
tho:be

Re: Ladestopp bei soc der Autobatterie

Verfasst: Do 5. Mai 2022, 12:54
von Ulrich
Das ist in der Wallbox Steuerung schon integriert.
https://solaranzeige.de/phpBB3/download ... uerung.pdf

Re: Ladestopp bei soc der Autobatterie

Verfasst: Do 5. Mai 2022, 13:10
von to:be
Danke Ulrich. Sagst Du mir evtl. noch wo?

Was ich in der Doku finde ist auf Seite 10 SOC der Hausbatterie. Das Auto wird erst geladen, wenn SOC erreicht bzw. überschritten wurde. Das kann auch nicht auf SOC der Autobatterie uminterpretiert werden, da die Logik ja ist die Ladung bei Erreichung oder Überschreitung der SOC zu beenden und nicht zu starten.

In der Doku steht auf Seite 9 auch eine bestimme Lademenge zu konfigurieren. Das ist hier auch unpassend, da das Auto mit jeweils unterschiedlichen SOC angeschlossen werden.

Desweiteren steht in der Doku auf Seite 19 wie ein Button in Grafana eingebunden werden kann um die Ladung manuell zu stoppen. Ziel sollte jedoch sein die Ladung automatisiert bei Erreichen oder Überschreiten der SOC zu stoppen.

Re: Ladestopp bei soc der Autobatterie

Verfasst: Do 5. Mai 2022, 14:38
von Ulrich
Entschuldigung, mein Fehler. Du meinst den SOC der Autobatterie. Das habe ich überlesen.

Re: Ladestopp bei soc der Autobatterie

Verfasst: Do 5. Mai 2022, 15:27
von Ulrich
to:be hat geschrieben:
Do 5. Mai 2022, 12:47
Moinsen,

hat schonmal jemand versucht die Ladung automatisiert zu stoppen?

Ich habe den soc der Autobatterie in influx db:iobroker measurement:batteryLevel field:value.

Die Ladung soll gestoppt werden, wenn soc 80% erreicht oder überschreitet.

Versucht habe ich die wall-math.php hierfür zu nutzen, finde jedoch nicht den passenden Parameter.

Ladestatus = 4 veranlasst die Solaranzeige davon auszugehen, dass das Auto bereits die Ladung gestoppt hätte, veranlasst jedoch nicht die Unterbrechung der Ladung.

Pause = 1 stoppt die Ladung leider auch nicht.

MaxEnergie in wall-math.php einfach auf 1 Wh zu setzen interessiert die Steuerung auch nicht.

Habt Ihr noch Ideen?

Viele Grüße
tho:be
Das geht nur, wenn du den Befehl direkt an die Wallbox sendest. Jede Wallbox hat dafür jedoch einen anderen Befehl.

Re: Ladestopp bei soc der Autobatterie

Verfasst: Do 5. Mai 2022, 16:23
von to:be
Hm …
Bei definiertem Status des SOC der Hausbatterie kann die Ladung unterbrochen werden.
Bei unzureichendem Überschuss kann die Ladung unterbrochen werden.
Es gibt zugleich weder die Möglichkeit den Start des Ladevorgangs zu verhindern noch diesen zu stoppen, wenn ein definierter Status in einem definierten Feld eines Influxdb Measurements erreicht ist?

Schade …

Re: Ladestopp bei soc der Autobatterie

Verfasst: Do 5. Mai 2022, 16:29
von Ulrich
Ja, Spezialwünsche sind nicht berücksichtigt. Jeder der PHP programmieren kann, kann die Steuerung aber auf seine Bedürfnisse umprogrammieren. Dafür ist unter anderem die wall-math.php ja schon vorgesehen.

Re: Ladestopp bei soc der Autobatterie

Verfasst: Do 5. Mai 2022, 16:55
von Bogeyof
Schreib doch mal folgenden Code in die wall-math.php, dann sollte es eigentlich funktionieren:

Code: Alles auswählen

// SOC auslesen
$ch = curl_init('http://localhost/query?db=iobroker&precision=s&q='.urlencode('select last(value) FROM batteryLevel'));
$rc = datenbank($ch);
$ActSOC = $rc["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][1];
log_schreiben("aktueller SOC : ".$ActSOC." %","",3);

if (($DB4["Stationsstatus"] == "B" or $DB4["Stationsstatus"] == "C") and $ActSOC >= 80) { // Test ob MaxSOC erreicht
    $ret = befehl_senden("Pause", $wbRegler, $wbGeraeteNummer, 0);
    if ($ret == true) {
        log_schreiben("MaxSOC 80 erreicht, Abbruch der Ladung. ", "", 4);
        log_schreiben("Pause, $wbRegler, $wbGeraeteNummer, 0", "", 4);
    }
    $Ladestatus = 4;
    log_schreiben("MaxSOC 80 erreicht, Bitte das Ladekabel entriegeln / entfernen.", "", 3);
}

Re: Ladestopp bei soc der Autobatterie

Verfasst: Fr 6. Mai 2022, 11:37
von to:be
Ulrich hat geschrieben:
Do 5. Mai 2022, 16:29
Ja, Spezialwünsche sind nicht berücksichtigt. Jeder der PHP programmieren kann, kann die Steuerung aber auf seine Bedürfnisse umprogrammieren. Dafür ist unter anderem die wall-math.php ja schon vorgesehen.
Wenn Du Dir meine Threaderöffnung ansiehst, habe ich nicht erwartet, dass Spezialwünsche berücksichtigt sind. Ich habe versucht das Problem in der wall-math.php zu lösen und hierzu um Unterstützung gebeten. Ich habe Dich auch nicht direkt angeschrieben. Wenn Du mal keine Lust hast zu unterstützen, haben wir hier noch die Community. ;) - Danke übrigens für diese. :)

Re: Ladestopp bei soc der Autobatterie

Verfasst: Fr 6. Mai 2022, 12:57
von to:be
Vielen Dank, Bogeyof! 8-)
Bogeyof hat geschrieben:
Do 5. Mai 2022, 16:55
Schreib doch mal folgenden Code in die wall-math.php, dann sollte es eigentlich funktionieren:
Der Hinweis den Befehl von wall-math zu senden fehlte mir. :oops:
Der Stationsstatus ist in meiner Installation in Ziffern gesetzt. Liegt das am go-eCharger?

Ich hab die 1.wallbox.steuerung.ini je Lademodus um ZielSOC ergänzt. Bei Bedarf schalte ich um auf Netz und tank den Wagen dann voll. ;)

Zur Dokumentation und falls nochmal jemand dieses Feature benötigt, dieser Code in der wall-math.php funktioniert jetzt so bei mir:

Code: Alles auswählen

// Lademanagement
$DB3Name = "iobroker";
$Measurement3Name = "batteryLevel";
$Feldname3 = "value";

$ch = curl_init('http://localhost/query?db='.$DB3Name.'&precision=s&q='.urlencode('select * from '.$Measurement3Name.' order by time desc limit 1'));
$rc = datenbank($ch);
if (!isset($rc["JSON_Ausgabe"]["results"][0]["series"])) {
    log_schreiben("Es fehlt die Datenbank '".$DB3Name."' mit dem Measurement '".$Measurement3Name."' oder sie ist leer.","|- ",1);
} else {
}

for ($h = 1; $h < count($rc["JSON_Ausgabe"]["results"][0]["series"][0]["columns"]); $h++) {
    $DB3_math[$rc["JSON_Ausgabe"]["results"][0]["series"][0]["columns"][$h]] = $rc["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][$h];
}

$Ladestand = $DB3_math[$Feldname3];

if ($wbSteuerung["wbSteuerung1"] == 1) { // Start der PV Ladung
    if ($INI["PV-Quelle"]["ZielSOC"] > 0) { // Ladung wird bei Erreichen von ZielSOC vorzeitig beendet
        log_schreiben("Ladung wird auf ".$INI["PV-Quelle"]["ZielSOC"]."% begrenzt.", "", 3);
        if ($Ladestand >= $INI["PV-Quelle"]["ZielSOC"] and ($DB4["Stationsstatus"] == "2" or $DB4["Stationsstatus"] == "4")) {
           $ret = befehl_senden("Pause", $wbRegler, $wbGeraeteNummer, 0);
           if ($ret == true) {
               log_schreiben("Empfohlenen Ladestand von ".$INI["PV-Quelle"]["ZielSOC"]."% erreicht, Abbruch der Ladung.", "", 3);
               log_schreiben("Pause, $wbRegler, $wbGeraeteNummer, 0", "", 4);
           }
           $Ladestatus = 4;
        }
    }
}
if ($wbSteuerung["wbSteuerung2"] == 1) { // Start der Ladung aus der Batterie
    if ($INI["Batterie-Quelle"]["ZielSOC"] > 0) { // Ladung wird bei Erreichen von ZielSOC vorzeitig beendet
        log_schreiben("Ladung wird auf ".$INI["Batterie-Quelle"]["ZielSOC"]."% begrenzt.", "", 3);
        if ($Ladestand >= $INI["Batterie-Quelle"]["ZielSOC"] and ($DB4["Stationsstatus"] == "2" or $DB4["Stationsstatus"] == "4")) {
           $ret = befehl_senden("Pause", $wbRegler, $wbGeraeteNummer, 0);
           if ($ret == true) {
               log_schreiben("Ladestand von ".$INI["Batterie-Quelle"]["ZielSOC"]."% erreicht, Abbruch der Ladung.", "", 3);
               log_schreiben("Pause, $wbRegler, $wbGeraeteNummer, 0", "", 4);
           }
           $Ladestatus = 4;
        }
    }
}
if ($wbSteuerung["wbSteuerung3"] == 1) { // Start der Ladung aus dem Netz
    if ($INI["Netz-Quelle"]["ZielSOC"] > 0) { // Ladung wird bei Erreichen von ZielSOC vorzeitig beendet
        log_schreiben("Ladung wird auf ".$INI["Netz-Quelle"]["ZielSOC"]."% begrenzt.", "", 3);
        if ($Ladestand >= $INI["Netz-Quelle"]["ZielSOC"] and ($DB4["Stationsstatus"] == "2" or $DB4["Stationsstatus"] == "4")) {
           $ret = befehl_senden("Pause", $wbRegler, $wbGeraeteNummer, 0);
           if ($ret == true) {
               log_schreiben("Ladestand von ".$INI["Netz-Quelle"]["ZielSOC"]."% erreicht, Abbruch der Ladung.", "", 3);
               log_schreiben("Pause, $wbRegler, $wbGeraeteNummer, 0", "", 4);
           }
           $Ladestatus = 4;
        }
    }
}