Seite 4 von 4

Re: Überschussladen mit variablem Hausverbrauch

Verfasst: Sa 4. Feb 2023, 11:15
von Ulrich
Kopiert wird mit der Shift + linke Maustaste.
Danach steht das im Zwischenspeicher.

Re: Überschussladen mit variablem Hausverbrauch

Verfasst: Sa 4. Feb 2023, 11:28
von Endes
Hi Ulrich,
super vielen Dank, damals hatte ich es hinbekommen...

Anbei die Einträge aus den Dateien.
Nun erkennt evtl. jemand auf Anhieb das Problem?

So nun der Inhalt aus der wall-math.php:

<?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 = 600;.

$DB1Name = "solaranzeige";
$Measurement1Name = "Meter";
$Feldname1 = "Verbrauch";

$ch = curl_init('http://localhost/query?db='.$DB1Name.'& ... .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 = "Wallbox";
$Measurement2Name = "AC";
$Feldname2 = "Leistung_gesamt";

$ch = curl_init('http://localhost/query?db='.$DB2Name.'& ... .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");
log_schreiben( "Gemessener Eigenverbrauch: ".$Eigenverbrauch." Watt", "", 3 );
log_schreiben("math:Eigenverbrauch ist $Eigenverbrauch");

return;
?>


Und dies aus der Wallbox Log-Datei:

04.02. 11:26:01 |--> - - - - - - - - - Start WB Steuerung - - - - - - - -
04.02. 11:26:01 INFO Grundlage der Steuerung ist die INI Datei '2.wallbox.steuerung.ini'.
04.02. 11:26:01 INFO Ladung nur bei genügend Sonnenenergie. [ INI > NurBeiSonne = yes ]
04.02. 11:26:01 INFO Eigenverbrauch laut INI Datei: 800 Watt
04.02. 11:26:03 INFO aktuelle Solarleistung - Eigenverbrauch: 4529 Watt
04.02. 11:26:03 INFO Auto wird geladen.
04.02. 11:26:03 INFO Kabel angeschlossen und beidseitig verriegelt.
04.02. 11:26:03 INFO Ladestatus: 3
04.02. 11:26:03 INFO Ladepause: 0
04.02. 11:26:03 INFO StationBereit: 1
04.02. 11:26:03 INFO Intervall: 3
04.02. 11:26:03 INFO Solarleistung: 5329
04.02. 11:26:03 INFO Kabelstatus: 7
04.02. 11:26:03 INFO Ladequelle: PV-Module.
04.02. 11:26:03 WARN Bis jetzt geladen: 1894 Wh (Wenn ein Zähler angeschlossen ist)
04.02. 11:26:03 WARN aktueller Ladestrom: 6 Ampere.
04.02. 11:26:03 INFO Ladestromstärke errechnet: 19700 Milliampere
04.02. 11:26:03 INFO Stromstärke auf MaxMilliAmpere begrenzt,14000
04.02. 11:26:03 WARN Stromänderung. Neu:14000 Vorher: 6000
04.02. 11:26:03 ENDE |
04.02. 11:26:03 ENDE ---------------------------------------------------------


Vielen Dnak und GRuß

Re: Überschussladen mit variablem Hausverbrauch

Verfasst: Sa 4. Feb 2023, 12:05
von Ulrich
Das Problem ist, dass deine wall-math.php viele Fehler hat, die du erst einmal beseitigen musst.
Die Fehler stehen alle in der LOG Datei: /var/www/log/php.log

Re: Überschussladen mit variablem Hausverbrauch

Verfasst: Sa 4. Feb 2023, 12:34
von Bogeyof
hatte sich überschnitten, hat @Ulrich alles schon geschrieben...

Re: Überschussladen mit variablem Hausverbrauch

Verfasst: Sa 4. Feb 2023, 12:50
von Bogeyof
Probiers mal so (ohne Gewähr), im Fehlerfall die /var/www/log/php.log posten:

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 = 600;.

$DB1Name = "solaranzeige";
$Measurement1Name = "Meter";
$Feldname1 = "Verbrauch";

$ch = curl_init('http://localhost/query?db='.$DB1Name.'&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 = "Wallbox";
$Measurement2Name = "AC";
$Feldname2 = "Leistung_gesamt";

$ch = curl_init('http://localhost/query?db='.$DB2Name.'&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");
log_schreiben( "Gemessener Eigenverbrauch: ".$Eigenverbrauch." Watt", "", 3 );
log_schreiben("math:Eigenverbrauch ist ".$Eigenverbrauch);

return;
?>

Re: Überschussladen mit variablem Hausverbrauch

Verfasst: Sa 4. Feb 2023, 16:36
von Endes
Hi Bogeyof,

danke, hab das einmal 1 zu 1 von dir kopiert..
Evtl. müsste ich es einmal morgen bei Sonne probieren!? Aber ich vermute ein Fehler in Line 556?!


Und das spuckt die Log datei aus:

04-Feb-2023 16:28:04 Europe/Berlin] PHP Warning: Cannot assign an empty string to a string offset in /var/www/html/2.user.config.php on line 556
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Warning: Cannot assign an empty string to a string offset in /var/www/html/2.user.config.php on line 556
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: eca in /var/www/html/phpinc/funktionen.inc.php on line 2067
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ecr in /var/www/html/phpinc/funktionen.inc.php on line 2068
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ecd in /var/www/html/phpinc/funktionen.inc.php on line 2069
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ec4 in /var/www/html/phpinc/funktionen.inc.php on line 2070
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ec5 in /var/www/html/phpinc/funktionen.inc.php on line 2071
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ec6 in /var/www/html/phpinc/funktionen.inc.php on line 2072
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ec7 in /var/www/html/phpinc/funktionen.inc.php on line 2073
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ec8 in /var/www/html/phpinc/funktionen.inc.php on line 2074
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ec9 in /var/www/html/phpinc/funktionen.inc.php on line 2075
[04-Feb-2023 16:28:15 Europe/Berlin] PHP Notice: Undefined index: ec1 in /var/www/html/phpinc/funktionen.inc.php on line 2076

Re: Überschussladen mit variablem Hausverbrauch

Verfasst: Sa 4. Feb 2023, 16:44
von Ulrich
Der Fehler in Zeile 556 in der 2.user.config.php kommt daher, wenn man eine "neue" mit einer "alten" config Datei in einer Multi-Regler-Verion mischt.

In der Zeile einfach eine Leerstelle zwischen die Gänsefüßchen machen, dann ist der Fehler verschwunden. Der Fehler ist aber unbedeutend.

Re: Überschussladen mit variablem Hausverbrauch

Verfasst: Di 21. Mär 2023, 19:45
von Rallef63
Hallo,

ich habe ein GO-E Charger und bekomme meinen aktuellen Hausverbrauch an meinem Shelly 3EM angezeigt. Dieser Wert wird in meine Iobroker Influxdb reingeschrieben. Ich möchte nun diesen Wert nutzen um die WallBox laden wenn der Eigenverbrauch negativ wird, dh. Überschuss.
Kann ich in diesem Fall nur die Wallbox als Regler definieren?
In die wall-math.php würde ich den Eigenverbrauch entsprechend abfragen.