Beispiel wall-math.php für vzlogger

PV Überschussladen mit Wallboxen. (intelligenten Ladestationen) Alles was mit der eingebauten Wallbox-Steuerung zu tun hat.

Moderator: Ulrich

Antworten
Fedi
Beiträge: 10
Registriert: Sa 16. Mai 2020, 10:27
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Beispiel wall-math.php für vzlogger

Beitrag von Fedi »

Hallo zusammen,

ich habe mir in den letzten Tagen eine wall-math.php i.V.m. vzlogger zusammen geklöppelt. Mangels php Kenntnissen wahrscheinlich mehr schlecht als recht, aber sie funktioniert:

Code: Alles auswählen

<?php
/******************************************************************************
//  Hie können eigene Berechnungen gemacht werden, wenn das nötig ist.
//  Es stehen alle Felder folgender Measurements zur Verfügung:
//  $INI ==>  Werte der INI Datei      ->  Array
//  $wbSteuerung ==> Measurement 'Wallbox' der Datenbank 'steuerung' ->  Array
//  $DB1 ==> Measurement 'PV' der Datenbank des Wechselrichters ->  Array
//  $DB2 ==> Measurement 'Batterie' der Datenbank des BMS ->  Array
//  $DB3 ==> Measurement 'Summen' der Datenbank der Wallbox ->  Array
//  $DB4 ==> Measurement 'Service' der Datenbank der Wallbox ->  Array
//  $DB5 ==> Measurement 'Pack1' der Datenbank des BMS ->  Array
//  $DB6 ==> Measurement 'Ladung' der Datenbank 'steuerung' ->  Array
//  $DB7 ==> Measurement 'AC' der Datenbank der Wallbox ->  Array
//
//  Die Steuerung benötigt folgende Variablen, die man hier noch beeinflussen
//  kann. Bitte hier nur benutzen, wenn man sie auch anders berechnen möchte.
//  Ansonsten hier nicht benutzen.
//
//
//  $Eigenverbrauch  = geschätzter Eigenverbrauch
//
//
******************************************************************************/

log_schreiben("<> <math> <>");
$vzDatenbank = "vzlogger";
$vzMeasurement = "Wirkleistung";
$Puffer = "200";
log_schreiben("<> Puffer: $Puffer");
$sql = urlencode('select * from '.$vzMeasurement.' order by time desc limit 1');
$vzch = curl_init('http://localhost/query?db='.$vzDatenbank.'&precision=s&q='.$sql);
curl_setopt($vzch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($vzch, CURLOPT_TIMEOUT, 15);
curl_setopt($vzch, CURLOPT_CONNECTTIMEOUT, 12);
curl_setopt($vzch, CURLOPT_PORT, 8086);
curl_setopt($vzch, CURLOPT_RETURNTRANSFER, true);
$vzErgebnis["result"] = curl_exec($vzch);
$vzErgebnis["rc_info"] = curl_getinfo ($vzch);
$vzErgebnis["JSON_Ausgabe"] = json_decode($vzErgebnis["result"],true,10);
$vzErgebnis["errorno"] = curl_errno($vzch);
if ($vzErgebnis["rc_info"]["http_code"] == 200 or $vzErgebnis["rc_info"]["http_code"] == 204)
{
                $vzErgebnis["Ausgabe"] = true;
}
curl_close($vzch);
unset($vzch);
if (!isset($vzErgebnis["JSON_Ausgabe"]["results"][0]["series"])) {
                log_schreiben("<> Es fehlt die Datenbank mit dem Measurement oder sie ist
                                        leer.","|- ",3);
}
else {

                for ($h = 1; $h < count($vzErgebnis["JSON_Ausgabe"]["results"][0]["series"][0]["columns"]); $h++) {
                                $Wirkleistung = $vzErgebnis["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][$h];
                                        }
                        //log_schreiben("Datenbank ".print_r($vzDatenbank,1).print_r($vzMeasurement,1) .print_r($DB2,1)," ",3);
                        log_schreiben("<> aktuelle Wirkleistung (negativ = Einspeisung): ".print_r($Wirkleistung,1)," ",3);
     }


$LG = $DB7["Leistung_gesamt"];
log_schreiben("<> Lade-Leistung_gesamt: $LG");
$Solarleistung = $LG - $Wirkleistung - $Puffer;
log_schreiben("<> Überschuss = (Lade-)Leistung_gesamt - Puffer - Wirkleistung ( " . $Solarleistung ." = " . $LG . " - " . $Puffer . " - " . $Wirkleistung . " )");

log_schreiben("<> </math> <>");

return;
?>

Die DB von vzlogger heißt in der Influx vzlogger
Die Tabelle Wirkleistung
Beides müsst ihr natürlich ggf. anpassen.

Vielleicht hilft sie dem einen oder anderen.

Sonnige Grüße
Fedi

Antworten

Zurück zu „Wallbox Steuerung [intelligente Ladestationen ]“