Eigenverbrauchsquote ermitteln

Hallo zusammen,

bei mir läuft alles schon seit einer ganzen Weile (Q1/2012). Nun habe ich zum Jahreswechse gemerkt, dass ich auch gerne aus dem Eigenverbrauch und dem eingespeisten Anteil die Eigenverbrauchsquote hätte. Und das pro Jahr. :slight_smile:
Ich beiße mir da jetzt schon eine Weile die Zähne dran aus und komme einfach auf keinen grünen Zweig.
Hat jemand von Euch vllt. einen Codedschnipsel für mich um auf Basis der Daten die ich habe diese Geschichte abbilden zu können? :smiley:

Ich habe das mal als eigenes Thema angelegt da es im eigentlichen Sinne nichts mit der Webbox zu tun hat sondern eher die Auswertung von geloggten Daten betrifft.

ich weiss nicht, ob ich es richtig verstanden habe. Aber mit der Formel KW-Eigenverbrauch x 100 / KW-Gesamtverbrauch sollte es gehen.
Gruß, Peter

Ja, das ist soweit auch kein Problem.
Da jedoch der Eigenverbrauch und der Ertrag eine stetig wachsende Zahlen sind, fällt es hierbei schwer die Eigenverbrauchsqouote PRO JAHR zu bestimmen. Ich suche hier also eher nach einer Art „best practice“.
Wie habt Ihr das gelöst? Welche Vars wie loggen? Wie dann aulesen? So was in der Art.

Ich logge die Variablen Ertrag gesamt und Eigenverbrauch (beide Standard).

Mit einem Script, dass am Jahreswechsel einmal startet, setze ich jährlich die Variablen auf 0. Somit habe ich nur eine jährliche Uimmierung und nicht eine fortlaufende.

Auslesen kann man das ganze über AC_GetAggregatedValues() um dann die Quote zu berechen.

Im Forum findest du einiges drüber.

Geloggte Variablen auslesen, AC_GetAggregatedValues() suchen.

Gruß
Jürgen

Hallo Jürgen,

ahhh, ich verstehe das im Prinzip. Was ich nicht verstehe:

Mit einem Script, dass am Jahreswechsel einmal startet, setze ich jährlich die Variablen auf 0.
Welche Variablen meinst Du damit? Wenn Du die Werte Ertrag gesamt und Eigenverbrauch aus dem WR heraus ausliest, dann zählt sich das doch im WR einfach weiter hoch.
Interessiert Dich denn nicht die Eigenverbrauchsquote aus dem letzten Jahr? :wink:

Bei mir habe ich die Werte leider zu Beginn nicht geloggt. Ich könnte damit zwar jetzt anfangen, aber ich habe geloggte Werte aus den Stromzählern. Die kann ich auch gut nehmen.

Ich habe das bei mir mal so aufgebaut:

// +++ Konfig / Vorgaben +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Auswertungszeitraum

    $ts                    = mktime(0,0,0, 1,1, 2011); // ab 01.01.$year 0:00:00 Uhr
    $te                    = mktime(23,59,59, 12, 31, 2015); // bis 31.12.$year 23:59:59 Uhr

// Definition der Variablen-ID's
    $PV_EV_Quote_jaehrlich_id = 30078 /*[Program\SMA Webbox\Eigenverbrauchsquote in % Jahr]*/  ; // Ziel-Variable für HC-Data-String "EV_Quote"
    $PV_Ertrag_id             = 12662  /*[Scripte\Stromzähler PV-Anlage\Arbeit erwirtschaftet]*/ ; // Variablen-ID der geloggten PV Ertragsdaten
    $PV_Einspeis_id           = 27123 /*[Scripte\Stromzähler Haus\Arbeit eingespeist]*/ ;

// +++ Konfig / Vorgaben  Ende +++++++++++++++++++++++++++++++++++++++++++++++++


// Archive Handler, geloggte Daten auslesen
    $archiveID             = IPS_GetInstanceIDByName("Archive Handler", 0);   // Archive-Handler-ID
    $PV_Ertrag_array       = AC_GetAggregatedValues($archiveID, $PV_Ertrag_id, 4, $ts, $te, 11);
    $PV_Einspeis_array     = AC_GetAggregatedValues($archiveID, $PV_Einspeis_id, 4, $ts, $te, 11);

// Array-Daten formatieren
    $PV_Ertrag_array       = array_reverse($PV_Ertrag_array); // Array-Reihenfolge umkehren
    $PV_Einspeis_array     = array_reverse($PV_Einspeis_array); // Array-Reihenfolge umkehren

    print_r($PV_Ertrag_array);
    print_r($PV_Einspeis_array);



Leider erhalte ich folgendes:

Array
(
    [0] => Array
        (
            [Avg] => 0
            [Duration] => -6262068
            [LastTime] => 1323954079
            [Max] => 296.0672
            [MaxTime] => 1321361586
            [Min] => 235.7675
            [MinTime] => 1325023503
            [TimeStamp] => 1293836400
        )

    [1] => Array
        (
            [Avg] => 2652.3122573416
            [Duration] => 31410744
            [LastTime] => 1356994799
            [Max] => 4902.3724
            [MaxTime] => 1356967266
            [Min] => 251.0995
            [MinTime] => 1325372400
            [TimeStamp] => 1325372400
        )

    [2] => Array
        (
            [Avg] => 4961.8772352696
            [Duration] => 4119775
            [LastTime] => 1361119867
            [Max] => 5070.791
            [MaxTime] => 1361118968
            [Min] => 4902.3724
            [MinTime] => 1356994800
            [TimeStamp] => 1356994800
        )

)
Array
(
    [0] => Array
        (
            [Avg] => 0
            [Duration] => -2590227
            [LastTime] => 1323954079
            [Max] => 126.0551
            [MaxTime] => 1321361586
            [Min] => 125.1367
            [MinTime] => 1321352983
            [TimeStamp] => 1293836400
        )

    [1] => Array
        (
            [Avg] => 2.1394670295442E+48
            [Duration] => 30845359
            [LastTime] => 1356994799
            [Max] => 1.0818463704091E+54
            [MaxTime] => 1354720385
            [Min] => 117.7755
            [MinTime] => 1325970063
            [TimeStamp] => 1325372400
        )

    [2] => Array
        (
            [Avg] => 2950.1811806955
            [Duration] => 4120110
            [LastTime] => 1361119864
            [Max] => 2999.1984
            [MaxTime] => 1361114222
            [Min] => 1265.6794
            [MinTime] => 1358777406
            [TimeStamp] => 1356994800
        )

)

Ich denke ich habe da einen Ausrutscher in der Einspeise-Variablen … im Jahr 2012.
Wie kann ich denn den Zeitpunkt heraus bekommen, um dann im Archive Handler den Wert entfernen zu können?

Hallo HonkXXXX,

meine Datnbank bearbeite ich mit Sqliteadmin.exe wenn ich eiinen Fehler korrigieren muss. Deinen Ausreiser kannst du damit per sql suchen und korrigieren.

Das mit der Eigenverbrauchsquote ist einfach. Es gibt keine Regel, dass man in einer DB die Werte einer Variablen immer größer werden müsseen.

Ich habe somit für mehrere Jahre Werte, die immer am 01.01. mit 0 beginnen in einer Variablen gespeichert. Über die Abfrage mit AC_GetAggregatedValues kann ich ja jederzeit den Abfragezeitraum eingrenzen.

Jürgen

Kann ich nicht auch mit mit AC_GetAggregatedValues einen Zeitpunkt zu einem höchsten Wert auslesen?
Ich denke das ist mir lieber, da ich dann per Archive Handler den Wert mit Boardmitteln löschen kann.

HonkXXXX,

du liest dir mit AC_Get… die Werte in ein Array ein. Die Datenbank kannst du damit nicht bearbeiten. Mit IPS Bordmitteln müsstes du den Wert im Archive Handler suchen und löschen. Ist allerdings nicht konfortabel.

Jürgen