Aloha,
im laufenden Betrieb hatte ich beobachtet, dass obige Rechnung (Eigenverbrauch = solaranzeige$AC.Hausverbrauch) die Ladeleistung der Wallbox einbezieht und diese sich folglich selbst ausnockt. Um dies zu vermeiden habe ich den Code weiter ergänzt. Nun wird die Ladeleistung (steuerung$AC.Leistung_gesamt) auch ausgelesen und der Eigenverbrauch errechnet sich nun aus Hausverbrauch - Ladeleistung - eines zusätzlichen Puffers von 100 Watt.
Der Code in meiner wall-math.php sieht nun so aus:
Code: Alles auswählen
<?php
/******************************************************************************
// Hier 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
//
//
******************************************************************************/
/******************************************************************************
Beispiel, wie man den aktuellen Eigenverbrauch benutzen kann.
Der Eigenverbrauch muss in einem Feld einer Datenbank zur Verfügung stehen
******************************************************************************/
// Puffer von x Watt
$Puffer = 100;
$DB1Name = "solaranzeige";
$Measurement1Name = "AC";
$Feldname1 = "Hausverbrauch";
$ch = curl_init('http://localhost/query?db='.$DB1Name.'&precision=s&q='.urlencode('select * from '.$Measurement1Name.' order by time desc limit 1'));
$rc = datenbank($ch);
if (!isset($rc["JSON_Ausgabe"]["results"][0]["series"])) {
log_schreiben("Es fehlt die Datenbank '".$DB1Name."' mit dem Measurement '".$Measurement1Name."' oder sie ist leer.","|- ",1);
}
for ($h = 1; $h < count($rc["JSON_Ausgabe"]["results"][0]["series"][0]["columns"]); $h++) {
$DB1_math[$rc["JSON_Ausgabe"]["results"][0]["series"][0]["columns"][$h]] = $rc["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][$h];
}
$DB2Name = "steuerung";
$Measurement2Name = "AC";
$Feldname2 = "Leistung_gesamt";
$ch = curl_init('http://localhost/query?db='.$DB2Name.'&precision=s&q='.urlencode('select * from '.$Measurement2Name.' order by time desc limit 1'));
$rc = datenbank($ch);
if (!isset($rc["JSON_Ausgabe"]["results"][0]["series"])) {
log_schreiben("Es fehlt die Datenbank '".$DB2Name."' mit dem Measurement '".$Measurement2Name."' oder sie ist leer.","|- ",1);
}
for ($h = 1; $h < count($rc["JSON_Ausgabe"]["results"][0]["series"][0]["columns"]); $h++) {
$DB2_math[$rc["JSON_Ausgabe"]["results"][0]["series"][0]["columns"][$h]] = $rc["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][$h];
}
$Hausverbrauch = $DB1_math[$Feldname1];
$Wallboxverbrauch = $DB2_math[$Feldname2];
$Eigenverbrauch = $Hausverbrauch - $Wallboxverbrauch + $Puffer;
log_schreiben("Eigenverbrauch ist $Eigenverbrauch");
log_schreiben( "aktuelle Solarleistung ($Solarleistung) - Eigenverbrauch ($Eigenverbrauch): ".($Solarleistung - $Eigenverbrauch)." Watt");
return;
?>
Entschuldigt bitte, dass ich nicht früher geantwortet habe. Für künftige Antworten habe ich jetzt angehakt mich über Antworten zu informieren.
vG
tho:be