Query Frage für Dashboard Summe Vergütung / Jahr

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

Antworten
the_mfred
Beiträge: 36
Registriert: So 13. Feb 2022, 18:46
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Query Frage für Dashboard Summe Vergütung / Jahr

Beitrag von the_mfred »

Hi,

für das Dashboard benötige ich folgende Berechnung:

Code: Alles auswählen

select mean(sum1) + mean(sum2) + mean(sum3) + mean(sum4)  from 
(SELECT integral("Einspeisung",1h) * $Einspeisetarif_OEMAG_2022Q2/1000 as sum1 FROM "AC" WHERE time >='2022-01-01' and time < '2022-03-01'),
(SELECT integral("Einspeisung",1h) * $Einspeisetarif_OEMAG_2022Q2/1000 as sum2 FROM "AC" WHERE time >='2022-03-01' and time < '2022-07-01'),
(SELECT integral("Einspeisung",1h) * $Einspeisetarif_OEMAG_2022Q3/1000 as sum3 FROM "AC" WHERE time >='2022-07-01' and time < '2022-10-01'),
(SELECT integral("Einspeisung",1h) * $Einspeisetarif_OEMAG_2022Q4/1000 as sum4 FROM "AC" WHERE time >='2022-10-01' and time < '2023-01-01')
Da wir aber im Q4 für sum4 noch keine Werte haben, funktioniert das ganze Query nicht. Sobald ich " + mean (sum4) " weglasse, werden Q1 bis Q3 summiert.

Wie kann ich das hinbekommen, dass ich die Formel schon vorab richtig schreibe und nicht jedes Quartal ändern muss?
---
Übersicht der Dokumentationen (weil ich sie nie selbst schnell finde wenn ich sie benötige :)

Benutzeravatar
mdkeil
Beiträge: 135
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 8 Mal
Danksagung erhalten: 7 Mal

Re: Query Frage für Dashboard Summe Vergütung / Jahr

Beitrag von mdkeil »

Die Herausforderung hatte ich ähnlich.. schlußendlich habe ich die Berechnung in der _math-Datei durchgeführt, da ich in Grafana direkt dafür keine Lösung gefunden habe.
Ich habe dann in der _math eine Abfrage eingefügt, inwiefern der entsprechende Einzel-Query einen numerischen Wert zurückliefert-- sollte dies nicht der Fall sein, habe ich dieses Teilergebnis einfach auf 0 gesetzt.
IBN: 07/2021
Fronius Symo 20.0-3-M : 13.2kWp S 45° + 3.96 kWp S 15° (Verschattung) &
Fronius Primo 3.0-1 : 2.97 kWp N 15° (Verschattung)
######
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro

Janniman
Beiträge: 112
Registriert: Mi 13. Okt 2021, 09:52
Hat sich bedankt: 9 Mal
Danksagung erhalten: 5 Mal

Re: Query Frage für Dashboard Summe Vergütung / Jahr

Beitrag von Janniman »

Ich habe dann in der _math eine Abfrage eingefügt, inwiefern der entsprechende Einzel-Query einen numerischen Wert zurückliefert-- sollte dies nicht der Fall sein, habe ich dieses Teilergebnis einfach auf 0 gesetzt.
Moin.

Danke für die Info.
Hättest du ein Beispiel dazu? Ich habe mich gefragt, wie man in der math einen zukünftigen Datumsbereich abfragt. Mir fiel da auf die Schnelle echt nichts ein.

Jan

ksapp
Beiträge: 50
Registriert: Di 27. Jul 2021, 21:17
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal
Kontaktdaten:

Re: Query Frage für Dashboard Summe Vergütung / Jahr

Beitrag von ksapp »

Hi,

ich habe hier das SMA Energymeter - dort ist ein Zähler für Bezug und einer für Einspeisung drin.
Meine Lösung dafür sieht so aus (Sma_Energy_math.php):

Code: Alles auswählen

// Info: Hier wird der Strompreis gepflegt (siehe unten)

#!/usr/bin/php
<?php

//Wenn der Wert auch in die LOG Datei geschrieben werden soll.
//$funktionen->log_schreiben("Rasperry Temperatur: ".round($RaspiTemp,1)." °C",">",5); //wenn RaspiTemp in solaranzeige.log angezeigt werden soll
                                                                                      //vor $funktionen entfernen

$Datenbank[1] = "solaranzeige";

$Measurements[1][1] = "AC";
$Measurements[1][2] = "Service";
$Measurements[1][3] = "Summen";


//06.06.2022 Strompreis von 0,282 auf 0,3045 angepasst
// $Strompreis ="0.3045"; // Euro pro Kilowatt
// $PreisperiodeWhEigenverbrauchAnfang ="988575"; //Startpunkt eigenverbrauchszähler für aktuelle PReisperiode in Wh
// $PreisperiodeEigenverbrauchEuAnfang ="202.76"; //Startpunkt  Eigenverbrauchszähler für aktuelle Preisperiode in EURO


//01.07.2022 Strompreis von 0,3045 auf 0,2673 angepasst (EEG Umlage entfallen)
$Strompreis ="0.2673"; // Euro pro Kilowatt
$PreisperiodeWhEigenverbrauchAnfang ="1111807"; //Startpunkt eigenverbrauchszähler für aktuelle PReisperiode in Wh
$PreisperiodeEigenverbrauchEuAnfang ="231.00"; //Startpunkt  Eigenverbrauchszähler für aktuelle Preisperiode in EURO




$Einspeiseverguetung ="0.0769"; // Euro pro Kilowatt

//$Datenbank[2] = "energymeter";

// Verbrauchsberechnung abhängig entweder Energymeterdaten oder Wechselrichterdaten verwenden. Tags -> Wechselrichter -> nachts -> Energymeter. Grund: Wechselrichter und Energymeter werden nie zeitgleich ausgelesen, das führt bei Wolkenflug macnhmal zu neagtiven Werten für Verbrauch.
// Verbrauchsberechnung Anfang
for ($i=1; $i <= count($Datenbank); $i++) {
    for($j=1; $j <= count($Measurements[$i]); $j++){

        $ch[$i][$j] = curl_init('http://localhost/query?db='.$Datenbank[$i].'&precision=s&q='.urlencode('select * from '.$Measurements[$i][$j].' order by time desc limit 1'));
        include "mathe.php";
    }
}

if($DB[1][2]["Betriebszustand"] != 0){ //Tagsüber Werte aus dem Wechselrichter verwenden
    log_schreiben(" Leistung WR : ".$DB[1][1]["Leistung"],"",8);
    log_schreiben(" Betriebszustand WR : ".$DB[1][2]["Betriebszustand"],"",8);
    log_schreiben(" Einspeisung WR : ".$DB[1][1]["Einspeisung"],"",8);
    log_schreiben(" Bezug WR : ".$DB[1][1]["Bezug"],"",8);
    log_schreiben(" Verbrauch WR : ".($DB[1][1]["Leistung"] + $DB[1][1]["Bezug"] - $DB[1][1]["Einspeisung"]),"",8);
    $aktuelleDaten["ZusatzQuery"] = "Dashboard Gesamt_Leistung=".($DB[1][1]["Leistung"] + $DB[1][1]["Bezug"] - $DB[1][1]["Einspeisung"]);

}
else // Nachts Werte aus dem Energymeter verwenden
{
    log_schreiben(" Import/Export (EM): ".$aktuelleDaten["AC_Leistung"],"",8); // nehme aus der zuletzt verwendenten PHP = hier ist das Energymeter den Wert aus der Tabelle 'AC' für 'Leistung'
    log_schreiben(" Verbrauch (EM):  ".($aktuelleDaten["AC_Leistung"] + $DB[1][1]["Leistung"]),"",8);
    $aktuelleDaten["ZusatzQuery"] = "Dashboard Gesamt_Leistung=".($DB[1][1]["Leistung"] + $aktuelleDaten["AC_Leistung"]);
}

// Verbrauchsberechnung Ende




// Wh Zähler Bezug Anfang
/*****************************************************************************
//  Die Status Datei wird dazu benutzt, um den Bezug in Wh Pro Tag zu berechnen
//  Um 00:00 wird der aktuelle Zählerstand des Energymeters in der Datei hinterlegt.
//  In jedem Auslesezyklus wird der aktuelle Zählerstand vom Energymeter gelesen
//  und der Wert aus der Datei subtrahiert. Das Ergebnis wird in die Datenbank gespeichert.
*****************************************************************************/
$StatusFile = $Pfad."/database/".$GeraeteNummer.".WattstundenZaehlerBezugAnfangswert.txt";
if (file_exists($StatusFile)) {
  /***************************************************************************
  //  Wenn Statusdatei existiert, dann Datei einlesen ...
  ***************************************************************************/
  $WattstundenZaehlerBezugAnfangswert = file_get_contents($StatusFile);
  if (empty($WattstundenZaehlerBezugAnfangswert)){ // Ist die gelesene Datei leer, dann ...
      $WattstundenZaehlerBezugAnfangswert = $aktuelleDaten["Wh_Bezug"]; //...schreibe den aktuellen Zählerstand in die Datei
  }
  if (date("H:i") == "00:00") {   // Jede Nacht 0 Uhr
    $WattstundenZaehlerBezugAnfangswert = $aktuelleDaten["Wh_Bezug"];       //  Zäherstand am Anfang des Tages merken
    $rc = file_put_contents($StatusFile,$aktuelleDaten["Wh_Bezug"]);       // und in die statusdatei schreiben
    $funktionen->log_schreiben("WattstundenZaehlerBezugAnfangswert gesetzt".$aktuelleDaten["Wh_Bezug"],8);
  }
}
else {
  /***************************************************************************
  //  Inhalt der Status Datei anlegen, wenn Datei noch nicht vorhanden ist.
  ***************************************************************************/
  $rc = file_put_contents($StatusFile,$aktuelleDaten["Wh_Bezug"]);
  if ($rc === false) {
    $funktionen->log_schreiben("Konnte die Datei WattstundenZaehlerBezugAnfangswert.txt. nicht anlegen","   ",5);
  }
}

/*****************************************************************************
// Die Status Datei wird dazu benutzt, um den Bezug in Wh Pro Tag zu berechnen
// In jedem Auslesezyklus wird der aktuelle Zählerstand vom Energymeter gelesen
// und der Wert aus der Datei subtrahiert. Das Ergebnis wird in die Datenbank gespeichert.
*****************************************************************************/
if (file_exists($StatusFile) and isset($aktuelleDaten["Wh_Bezug"])) {
  /***************************************************************************
  //  Daten einlesen ...
  ***************************************************************************/
  $WattstundenZaehlerBezugAnfangswert = file_get_contents($StatusFile);
  $aktuelleDaten["whBezugHeute"] = $aktuelleDaten["Wh_Bezug"] - $WattstundenZaehlerBezugAnfangswert; // // Berechne aktuellen Bezugs - BezugAnfangswert von heute
  $aktuelleDaten["whBezugHeute"] = round($aktuelleDaten["whBezugHeute"],0);
  $funktionen->log_schreiben("Bezug Wh Heute  ".$aktuelleDaten["whBezugHeute"],"  Wh",8);
  $aktuelleDaten["ZusatzQuery"] .= ",WhBezugHeute=".$aktuelleDaten["whBezugHeute"]; // Alle Werte der ZUsatzquarry landen in der Tabelle Dashboard WICHTIG: ,

}
// Wh Zähler Bezug Ende

// Wh Zähler Einspeisung Anfang
/*****************************************************************************
//  Die Status Datei wird dazu benutzt, um den Einspeisung in Wh Pro Tag zu berechnen
//  Um 00:00 wird der aktuelle Zählerstand des Energymeters in der Datei hinterlegt.
//  In jedem Auslesezyklus wird der aktuelle Zählerstand vom Energymeter gelesen
//  und der Wert aus der Datei subtrahiert. Das Ergebnis wird in die Datenbank gespeichert.
*****************************************************************************/
$StatusFile = $Pfad."/database/".$GeraeteNummer.".WattstundenZaehlerEinspeisungAnfangswert.txt";
if (file_exists($StatusFile)) {
  /***************************************************************************
  //  Wenn Statusdatei existiert, dann Datei einlesen ...
  ***************************************************************************/
  $WattstundenZaehlerEinspeisungAnfangswert = file_get_contents($StatusFile);
  if (empty($WattstundenZaehlerEinspeisungAnfangswert)){ // Ist die gelesene Datei leer, dann ...
      $WattstundenZaehlerEinspeisungAnfangswert = $aktuelleDaten["Wh_Einspeisung"]; //...schreibe den aktuellen Zählerstand in die Datei
  }
  if (date("H:i") == "00:00") {   // Jede Nacht 0 Uhr
    $WattstundenZaehlerEinspeisungAnfangswert = $aktuelleDaten["Wh_Einspeisung"];       //  Zäherstand am Anfang des Tages merken
    $rc = file_put_contents($StatusFile,$aktuelleDaten["Wh_Einspeisung"]);       // und in die statusdatei schreiben
    $funktionen->log_schreiben("WattstundenZaehlerEinspeisungAnfangswert gesetzt".$aktuelleDaten["Wh_Einspeisung"],8);
  }
}
else {
  /***************************************************************************
  //  Inhalt der Status Datei anlegen, wenn Datei noch nicht vorhanden ist.
  ***************************************************************************/
  $rc = file_put_contents($StatusFile,$aktuelleDaten["Wh_Einspeisung"]);
  if ($rc === false) {
    $funktionen->log_schreiben("Konnte die Datei WattstundenZaehlerEinspeisungAnfangswert.txt. nicht anlegen","   ",8);
  }
}

/*****************************************************************************
// Die Status Datei wird dazu benutzt, um den Einspeisung an kWh Pro Tag zu berechnen
// In jedem Auslesezyklus wird der aktuelle Zählerstand vom Energymeter gelesen und der Wert aus der Datei subtrahiert. Das Ergebnis wird in die Datenbank gespeichert.
*****************************************************************************/
if (file_exists($StatusFile) and isset($aktuelleDaten["Wh_Einspeisung"])) {
  /***************************************************************************
  //  Daten einlesen ...
  ***************************************************************************/
  $WattstundenZaehlerEinspeisungAnfangswert = file_get_contents($StatusFile);
  $aktuelleDaten["whEinspeisungHeute"] = $aktuelleDaten["Wh_Einspeisung"] - $WattstundenZaehlerEinspeisungAnfangswert; // // Berechne aktuellen Einspeisungs - EinspeisungAnfangswert von heute
  $aktuelleDaten["whEinspeisungHeute"] = round($aktuelleDaten["whEinspeisungHeute"],0);
  $funktionen->log_schreiben("Einspeisung Wh Heute  ".$aktuelleDaten["whEinspeisungHeute"],"  Wh",8);
  $aktuelleDaten["ZusatzQuery"] .= ",WhEinspeisungHeute=".$aktuelleDaten["whEinspeisungHeute"]; // Alle Werte der ZUsatzquarry landen in der Tabelle Dashboard WICHTIG: ,
}
// Wh Zähler Einspeisung Ende

if($DB[1][2]["Betriebszustand"] != 0){ //nur Tagsueber berechen. Sonst durch woechentlichen Wechselrichterneustart nachts falsche Werte.

/****************************************************************************
// Verkaufter Strom im Wert von xxx Euro 
*****************************************************************************/
    $aktuelleDaten["Eu_GesamtEinspeisung"] = ($aktuelleDaten["Wh_Einspeisung"] / 1000)  * $Einspeiseverguetung;
    $aktuelleDaten["Eu_GesamtEinspeisung"] = round($aktuelleDaten["Eu_GesamtEinspeisung"] ,2);
    $funktionen->log_schreiben("Eingespeist Eu Gesamt  ".$aktuelleDaten["Eu_GesamtEinspeisung"],"  Euro",8);
    $aktuelleDaten["ZusatzQuery"] .= ",Eu_GesamtEinspeisung=".$aktuelleDaten["Eu_GesamtEinspeisung"]; // Alle Werte der Zusatzquery landen in der Tabelle Dashboard WICHTIG ist hier $
/****************************************************************************/



/*****************************************************************************
// Eigenverbrauch Gesamt in Wh
// Wh (PV Ertrag Gesamt) - Wh (Eingespeist) ergibt den selbst verbrauchten PV Strom aus Gesamtzähler Energymeter und Wechselrichter
*****************************************************************************/

    $aktuelleDaten["Wh_GesamtEigenverbrauch"] = $DB[1][3]["Wh_Gesamt"] - $aktuelleDaten["Wh_Einspeisung"];
    $aktuelleDaten["Wh_GesamtEigenverbrauch"] = round($aktuelleDaten["Wh_GesamtEigenverbrauch"],0);
    $funktionen->log_schreiben("Eigenverbrauch Wh Gesamt  ".$aktuelleDaten["Wh_GesamtEigenverbrauch"],"  Wh",8);
//  $aktuelleDaten["ZusatzQuery"] .= ",Wh_GesamtEigenverbrauch=".$aktuelleDaten["Wh_GesamtEigenverbrauch"]; // Alle Werte der Zusatzquery landen in der Tabelle Dashboard WICHTIG ist hier das Komma am Anfang ,
/****************************************************************************


/****************************************************************************
// Eigenverbrauchter Strom im Wert von xxx Euro (Strompreis Minus Einspeisevergütung) aus Gesamtzähler Energymeter
*****************************************************************************/
//  $aktuelleDaten["Eu_GesamtEigenverbrauch"] = ($aktuelleDaten["Wh_GesamtEigenverbrauch"] / 1000)  * ($Strompreis - $Einspeiseverguetung);
//  $aktuelleDaten["Eu_GesamtEigenverbrauch"] = round($aktuelleDaten["Eu_GesamtEigenverbrauch"] ,2);
//  $funktionen->log_schreiben("Eigenverbrauch Eu Gesamt  ".$aktuelleDaten["Eu_GesamtEigenverbrauch"],"  Euro",8);
//  $aktuelleDaten["ZusatzQuery"] .= ",Eu_GesamtEigenverbrauch=".$aktuelleDaten["Eu_GesamtEigenverbrauch"]; // Alle Werte der Zusatzquery landen in der Tabelle Dashboard WICHTIG ist hier das Komma am Anfang
/****************************************************************************/


/****************************************************************************
// Eigenverbrauchter Strom im Wert von xxx Euro (Strompreis Minus Einspeisevergütung) aus Gesamtzähler Energymeter P
*****************************************************************************/
   $aktuelleDaten["Eu_PreisperiodeEigenverbrauch"] = (($aktuelleDaten["Wh_GesamtEigenverbrauch"]- $PreisperiodeWhEigenverbrauchAnfang) / 1000)  * ($Strompreis - $Einspeiseverguetung);
    $aktuelleDaten["Eu_GesamtEigenverbrauch"] = $aktuelleDaten["Eu_PreisperiodeEigenverbrauch"] + $PreisperiodeEigenverbrauchEuAnfang ;
    $aktuelleDaten["Eu_GesamtEigenverbrauch"] = round($aktuelleDaten["Eu_GesamtEigenverbrauch"] ,2);
    $funktionen->log_schreiben("PreisperiodeEingenverbrauchsEuAnfang  ".$PreisperiodeEigenverbrauchEuAnfang,"  Euro",8);
    $funktionen->log_schreiben("Eu_PreisperiodeEigenverbrauch ".$aktuelleDaten["Eu_PreisperiodeEigenverbrauch"],"  Euro",8);
    $funktionen->log_schreiben("Eu_GesamtEigenverbrauch ".$aktuelleDaten["Eu_GesamtEigenverbrauch"],"  Euro",8);
    $aktuelleDaten["ZusatzQuery"] .= ",Eu_GesamtEigenverbrauch=".$aktuelleDaten["Eu_GesamtEigenverbrauch"]; // Alle Werte der Zusatzquery landen in der Tabelle Dashboard WICHTIG ist$
/****************************************************************************/



}
?>

Ich hoffe, der Code ist ausreichend kommentiert (-;

Weiterhin wird hier noch der Betriebszustand des Wechselrichters abgefragt und die Verbrauchsberechnung Tagsüber vom Wechselrichter und nachts vom Energymeter übernommen, da der Wexhselrichter nachts keine Werte liefert und Tagsüber die Werte von Energymeter / Wechselrichter nicht synchron abgefragt werden bei plötzlicher Änderung der Sonneneinstrahlung (Wolken) dann negative Verbauchswerte errechnet wurden.

Gruß
Oliver
SMA Tripower 5.0 STP - SMA Energymeter - Raspberrby Pi Zero, ESP 32 für Erfassung der Vor- Rücklauf und Aussentemperatur.

Benutzeravatar
mdkeil
Beiträge: 135
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 8 Mal
Danksagung erhalten: 7 Mal

Re: Query Frage für Dashboard Summe Vergütung / Jahr

Beitrag von mdkeil »

Janniman hat geschrieben:
Fr 22. Jul 2022, 06:33
Hättest du ein Beispiel dazu? Ich habe mich gefragt, wie man in der math einen zukünftigen Datumsbereich abfragt. Mir fiel da auf die Schnelle echt nichts ein.
Hast du oben doch auch schon gemacht.. über WHERE time gibst Du ja den Zeitbereich vor, egal ob dieser in der Vergangenheit oder in der Zukunft liegt.

Hier mal auszugsweise meine Umsetzung:

Code: Alles auswählen

#!/usr/bin/php
<?php

   //Strompreise & Steuer
   $esv = 0.0725;

   //bis 30.06.
   $strompreis1 = 0.2498;
   $uwa1 = 0.2469;
   $kostendv1 =  0.19 * $uwa1 + $esv;
   $ersparnis1 = $strompreis1 - $kostendv1;

   //ab 01.07.
   $strompreis2 = 0.3355;
   //$uwa2 = 0.2854;
   $uwa2 = 0.2639;
   $kostendv2 =  0.19 * $uwa2 + $esv;
   $ersparnis2 = $strompreis2 - $kostendv2;

   //Helper
   $DiesesJahrTS = mktime(0, 0, 0, 1, 1, date("Y"))."000000000";
   $HalfYear1 = mktime(0, 0, 0, 6, 30, date("Y"));
   $HalfYear1TS = $HalfYear1."000000000";
   $HalfYear2TS = mktime(0, 0, 0, 7, 1, date("Y"))."000000000";

   $QPVLeistung1 = "select integral(PVLeistung,1h) from Meter where time>=$DiesesJahrTS and time<=$HalfYear1TS";
   $QPVLeistung2 = "select integral(PVLeistung,1h) from Meter where time > $HalfYear1TS";
   $QEinspeisung1 = "select integral(Einspeisung,1h) from Meter where time>=$DiesesJahrTS and time<=$HalfYear1TS";
   $QEinspeisung2 = "select integral(Einspeisung,1h) from Meter where time > $HalfYear1TS";

   $pvpower1 = 0;
   $pvpower2 = 0;
   $einsp1 = 0;
   $einsp2 = 0;

   $aktuelleDaten["Ladeleistung"] = 0;
   $aktuelleDaten["PVLeistung_Jahr"] = 0;
   $aktuelleDaten["Einspeisung_Jahr"] = 0;
   $aktuelleDaten["Eigenverbrauch_Jahr"] = 0;
   $aktuelleDaten["Strompreis"] = 0;
   $aktuelleDaten["KostenDV"] = 0;
   $aktuelleDaten["Ersparnis"] = 0;

   //Gesamterzeugung, Einspeisung und Eigenverbrauch berechnen
   $aktuelleDaten["Query"] = "db=" . $DB2 . "&q=" . urlencode($QPVLeistung1);
   $rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
   $pvpower1 = $rc["results"][0]["series"][0]["values"][0][1];
   $aktuelleDaten["Query"] = "db=" . $DB2 . "&q=" . urlencode($QPVLeistung2);
   $rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
   $pvpower2 = $rc["results"][0]["series"][0]["values"][0][1];

   if (!is_numeric($pvpower2)) {
     $pvpower2 = 0;
   }

   $aktuelleDaten["PVLeistung_Jahr"] = $pvpower1 + $pvpower2;

   $aktuelleDaten["Query"] = "db=" . $DB2 . "&q=" . urlencode($QEinspeisung1);
   $rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
   $einsp1 = $rc["results"][0]["series"][0]["values"][0][1];
   $aktuelleDaten["Query"] = "db=" . $DB2 . "&q=" . urlencode($QEinspeisung2);
   $rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
   $einsp2 = $rc["results"][0]["series"][0]["values"][0][1];

   if (!is_numeric($einsp2)) {
     $einsp2 = 0;
   }

   $aktuelleDaten["Einspeisung_Jahr"] = $einsp1 + $einsp2;
   $aktuelleDaten["Eigenverbrauch_Jahr"] = $aktuelleDaten["PVLeistung_Jahr"] - $aktuelleDaten["Einspeisung_Jahr"];

   // Einspeisung und Vergütung
   $erspV1 = 0;
   $erspV2 = 0;

   $erspV1 = (($pvpower1 - $einsp1) * $ersparnis1 + $einsp1 * $esv) / 1000;
   $erspV2 = (($pvpower2 - $einsp2) * $ersparnis2 + $einsp2 * $esv) / 1000;

   $aktuelleDaten["ErsparnisV"] = 0;
   $aktuelleDaten["ErsparnisV_gesamt"] = 0;

   //ErsparnisV_Jahr
   $aktuelleDaten["ErsparnisV"] = $erspV1 + $erspV2;

   //ErspanisV_gesamt (ab 2021)

   $ErsparnisV_gesamt = 482.53;
   $ersp_jahr = 0;

   for ($i = 2022; $i <= date("Y"); $i++) {
     if ($i == date("Y")) {
        $ErsparnisV_gesamt = $ErsparnisV_gesamt + $aktuelleDaten["ErsparnisV"];
      } else {
        $QErspanisV_Jahr = "select last(ErsparnisV_Jahr) from Meter where time = '$i-12-31'";
        $aktuelleDaten["Query"] = "db=" . $DB2 . "&q=" . urlencode($QErspanisV_Jahr);
        $rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
        $ersp_jahr = $rc["results"][0]["series"][0]["values"][0][1];

        $ErsparnisV_gesamt = $ErsparnisV_gesamt + $ersp_jahr;
      }
   }

   $aktuelleDaten["ErsparnisV_gesamt"] = $ErsparnisV_gesamt;

   // Ersparnis, Strompreis und Kosten DV in Abhängigkeit vom Berechnungszeitraum
   if ($aktuelleDaten["zentralerTimestamp"] <= $HalfYear1) {
     $aktuelleDaten["Ersparnis"] = $ersparnis1;
     $aktuelleDaten["Strompreis"] = $strompreis1;
     $aktuelleDaten["KostenDV"] =  $kostendv1;
   } else {
       $aktuelleDaten["Ersparnis"] = $ersparnis2;
       $aktuelleDaten["Strompreis"] = $strompreis2;
       $aktuelleDaten["KostenDV"] =  $kostendv2;
   }

   // Erstellen der Zusatzquery, damit die Werte in die Datenbank geschrieben werden
   $aktuelleDaten["ZusatzQuery"] .= "Meter ";
   $aktuelleDaten["ZusatzQuery"] .= ",ErsparnisV_Jahr=".$aktuelleDaten["ErsparnisV"];
   $aktuelleDaten["ZusatzQuery"] .= ",ErsparnisV_Gesamt=".$aktuelleDaten["ErsparnisV_gesamt"];
   $aktuelleDaten["ZusatzQuery"] .= ",Ersparnis=".$aktuelleDaten["Ersparnis"];
   $aktuelleDaten["ZusatzQuery"] .= ",Strompreis=".$aktuelleDaten["Strompreis"];
   $aktuelleDaten["ZusatzQuery"] .= ",KostenDV=".$aktuelleDaten["KostenDV"];
   $aktuelleDaten["ZusatzQuery"] .= ",PVLeistung_Jahr=".$aktuelleDaten["PVLeistung_Jahr"];
   $aktuelleDaten["ZusatzQuery"] .= ",Einspeisung_Jahr=".$aktuelleDaten["Einspeisung_Jahr"];
   $aktuelleDaten["ZusatzQuery"] .= ",Eigenverbrauch_Jahr=".$aktuelleDaten["Eigenverbrauch_Jahr"];
   $aktuelleDaten["ZusatzQuery"] .= " ".$aktuelleDaten["zentralerTimestamp"];

return;
IBN: 07/2021
Fronius Symo 20.0-3-M : 13.2kWp S 45° + 3.96 kWp S 15° (Verschattung) &
Fronius Primo 3.0-1 : 2.97 kWp N 15° (Verschattung)
######
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro

Antworten