Eigenverbrauch mit kostal_pico_math.php berrechnen

Wenn mehr als ein Gerät an den Raspberry angeschlossen werden sollen. Z.B. ein Regler und ein Wechselrichter oder mehrere Wechselrichter. Das Maximum sind 6 Geräte pro Raspberry Pi.

Moderator: Ulrich

Antworten
Andi1888
Beiträge: 17
Registriert: Fr 3. Sep 2021, 20:07
Danksagung erhalten: 1 Mal

Eigenverbrauch mit kostal_pico_math.php berrechnen

Beitrag von Andi1888 »

Hallo,

ich versuche den Eigenverbrauch mit einer _math.php zu berrechnen.
Folgender Code:

Code: Alles auswählen

<?php
/*****************************************************************************
//  Berechnung einzelner Werte um sie in einem Dashboard anzeigen zu können
//
*****************************************************************************/

//  $DB1 = Datenbank des Wechselrichters   Measurement: PV
//  Hier wird der neueste Eintrag der Datenbank ausgelesen und im Array $DB1 gespeichert.
$Datenbank = "solaranzeige";
$Measurement = "PV";
$ch = curl_init('http://localhost/query?db='.$Datenbank.'&precision=s&q='.urlencode('select * from '.$Measurement.' order by time desc limit 1'));

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_TIMEOUT, 15);           //timeout in second s
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 12);
curl_setopt($ch, CURLOPT_PORT, 8086);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$Ergebnis["result"] = curl_exec($ch);
$Ergebnis["rc_info"] = curl_getinfo ($ch);
$Ergebnis["JSON_Ausgabe"] = json_decode($Ergebnis["result"],true,10);
$Ergebnis["errorno"] = curl_errno($ch);

if ($Ergebnis["rc_info"]["http_code"] == 200 or $Ergebnis["rc_info"]["http_code"] == 204) {
  $Ergebnis["Ausgabe"] = true;
}


curl_close($ch);
unset($ch);


if (!isset($Ergebnis["JSON_Ausgabe"]["results"][0]["series"])) {
  log_schreiben("Es fehlt die Datenbank solaranzeige mit dem Measurement PV oder sie ist leer.","|- ",3);
  log_schreiben("Fehler: ".$Ergebnis["JSON_Ausgabe"]["results"][0]["error"],"|- ",4);
}
else {
  for ($h = 1; $h < count($Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["columns"]); $h++) {
    $DB1[$Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["columns"][$h]] = $Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][$h];
  }
  log_schreiben("Datenbank: solaranzeige DB1 ".print_r($DB1,1),"  ",10);
}

//  Hier wurde die Datenbank "solaranzeige" Measurement "PV" ausgelesen. 
//  Die Daten sind jetzt im Array $DB1[]
//  Alle Daten des SMA Energy Meter sind im Array $aktuelleDaten[]

/*****************************************************************************/
//  Jetzt wird die Berechnung gestartet
//  Zur Überprüfung werden die Werte bei Tracelevel = 8 in die LOG Datei geschrieben.
/*****************************************************************************/

log_schreiben(" PV-Leistung: ".$DB1["Leistung"],"",8);
log_schreiben(" Bezug: ".$aktuelleDaten["Bezug"],"",8);
log_schreiben(" Einspeisung: ".$aktuelleDaten["Einspeisung"],"",8);
log_schreiben(" Eigenverbrauch: ".($DB1["Leistung"]-$aktuelleDaten["Einspeisung"]+$aktuelleDaten["Bezug"]),"",8);

//  So wird die Zusatz Query zusammengestellt.
//  Alle Daten werden in die Datenbank des HomeManager in ein neues Measurement "Dashboard" geschrieben.
//  Der Zeitstempel ist der 'zentrale Timestempel'
//  Damit ist die Visualisierung in Grafana sehr einfach.
$aktuelleDaten["ZusatzQuery"]  = "Dashboard  Erzeugung=".$DB1["Leistung"].",Bezug=".$aktuelleDaten["Bezug"];
$aktuelleDaten["ZusatzQuery"] .= ",Einspeisung=".$aktuelleDaten["Einspeisung"].",Eigenverbrauch=".($DB1["Leistung"]-$aktuelleDaten["Einspeisung"]+$aktuelleDaten["Bezug"]);
$aktuelleDaten["ZusatzQuery"] .= "   ".$aktuelleDaten["zentralerTimestamp"];

?>
führt allerdings in der solaranzeige.log zu folgendem Fehler:

Code: Alles auswählen

24.09. 08:37:02    -Multi Regler Auslesen [Start].
24.09. 08:37:02    -Verarbeitung von: '1.user.config.php'   Regler: 22
24.09. 08:37:02 |----------------   Start  kostal_meter.php    --------------------
24.09. 08:37:02 o  -Hardware Version: 4B
24.09. 08:37:02 *  -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet.
24.09. 08:37:02    -Multi-Regler-Ausgang. 7
24.09. 08:37:09 |----------------   Stop   kostal_meter.php     -------------------
24.09. 08:37:09    -Verarbeitung von: '2.user.config.php'   Regler: 21
24.09. 08:37:09 |----------------   Start  kostal_piko.php    ---------------------
24.09. 08:37:09 +  -Die Daten werden ausgelesen...
24.09. 08:37:09 -ANB Start: 0
24.09. 08:37:09 |- -Es fehlt die Datenbank solaranzeige mit dem Measurement AC oder sie ist leer.
24.09. 08:37:09 |- -Fehler: 0
24.09. 08:37:09 - AC_Leistung_Gesamt:
24.09. 08:37:09 - Leistung_neg:
24.09. 08:37:09 - Leistung_pos:
24.09. 08:37:09 - Eigenverbrauch: 0
24.09. 08:37:09 *  -Daten zur lokalen InfluxDB [ solaranzeige2 ] gesendet.
24.09. 08:37:09    -Multi-Regler-Ausgang. 9
24.09. 08:37:18    -OK. Datenübertragung erfolgreich.
24.09. 08:37:18 |----------------   Stop   kostal_piko.php     --------------------
24.09. 08:37:18    -Multi Regler Auslesen [Stop].
Sowohl die Datenbank solaranzeige als auch das Measurement AC existieren.

solarfanenrico

Re: Eigenverbrauch mit kostal_pico_math.php berrechnen

Beitrag von solarfanenrico »

momentan scheinst Du mit dem Measurement "PV" etwas aus dem "AC" holen zu wollen.

Danach müssen die Folgezeilen auch entsprechend angepaßt werden.


Enrico

Andi1888
Beiträge: 17
Registriert: Fr 3. Sep 2021, 20:07
Danksagung erhalten: 1 Mal

Re: Eigenverbrauch mit kostal_pico_math.php berrechnen

Beitrag von Andi1888 »

Ich hänge immer noch an diesem Problem fest. Kann es sein, dass der curl Befehl bei mir nicht funktioniert?
Wenn ich im putty folgenden Befehl eingebe:

Code: Alles auswählen

curl -G 'http://localhost/query?' --data-urlencode "db=solaranzeige" --data-urlencode "q=SELECT \"*\" FROM \"AC\""
erhalte ich folgende Ausgabe:

Code: Alles auswählen

pi@solaranzeige:/var/www/html $ curl -G 'http://localhost/query?' --data-urlencode "db=solaranzeige" --data-urlencode "q=SELECT \"*\" FROM \"AC\""
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>404 Not Found</title>
 </head>
 <body>
  <h1>404 Not Found</h1>
 </body>
</html>

Andi1888
Beiträge: 17
Registriert: Fr 3. Sep 2021, 20:07
Danksagung erhalten: 1 Mal

Re: Eigenverbrauch mit kostal_pico_math.php berrechnen

Beitrag von Andi1888 »

Auch wenn ich deine Variante verwende (viewtopic.php?p=12197#p12197) bekomme ich immer den Fehler
"Es fehlt die Datanbank mit dem Measurement ist leer"
"Fehler: 0"

Deswegen meine Vermutung das mit curl etwas schief läuft

Antworten

Zurück zu „Multi-Regler-Version [ bis zu 6 Geräten an einem Raspberry Pi ]“