Frage: Maximalwert aus Archiv auslesen - Wieso falsch?

Tag Zusammen,

könnte mir bitte jemand auf die Sprünge helfen:
Ich möchte aus dem Archiv (Variable Wärmepumpe Verbrauch - Standard) von einem bestimmen Zeitraum den Maximalwert auslesen. Das Ergebnis passt aber nicht zur Uhrzeit/Datum.
Es könnte sich höchstens um den Tageswert handeln

<?php

$datum_beginn = mktime(0, 0, 0, 1, 1, 2017);
$datum_ende = strtotime("today 00:00");

$werte = AC_GetAggregatedValues(14492, 48461, 0 /* stündlich */, $datum_beginn, $datum_ende, 0);



$anzahl_w = count ($werte);
echo "Anzahl Werte in Array: ".$anzahl_w. PHP_EOL;

$max_wert = 0;

foreach($werte as $wert) 
{
	// echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Max'] . PHP_EOL;

    If ( $wert['Max'] > $max_wert)
    {
        $max_wert = $wert['Max'];
        $max_wert_datum = $wert['TimeStamp'];
    }
    else
    {
        
    }
}

echo "Maximal Wert: ".$max_wert. PHP_EOL;
$datum = date("d.m.Y - H:i", $max_wert_datum);
echo "Maximal Wert Datum: ".$datum. PHP_EOL;

Unbenannt

Probiers mal mit AC_GETLOGGEDVALUES statt mit AC_GetAggregatedValues.

1 „Gefällt mir“

Mhh Danke! Tatsächlich, aber wieso?

Das liefert dir zusammengefasste Werte. Je nach Parameter (stündlich, täglich, wöchentlich, monatlich, jährlich). Mit ac_getloggedvalues bekommst du die „Rohdaten“.

Bleib bei AC_GetAggregatedValues, das ist viel effizienter. Der Zeitstempel steckt dann aber in $wert[‚MaxTime‘], TimeStamp ist der Beginn des entsprechenden aggregierten Intervalls. Wenn du über eine längere Zeit gehst, kannst du auch direkt die jährliche Aggregation abfragen und musst nicht die Stunden einzeln durchgehen.

Ok, Danke Dr. Nils!

Aber wieso zeigt das Skript bei AC_GetAggregatedValues einen ganz anderen Wert der nicht mit dem Datum im Archiv übereinstimmt an?
Bei AC_GetAggregatedValues zeigt es genau den Wert vom Datum im Archiv an und es scheint auch das Maximum zu sein…

Hattest du $wert[‚MaxTime‘] statt $wert[‚TimeStamp‘] getestet, so wie @Dr.Niels gesagt hat?
Eigentlich sollte es dann passen.

AC_GetAggregatedValues gibt aggregierte Werte über eine Zeitspanne, beispielsweise eine Stunde, zurück. Das gesamte Intervall beginnt bei TimeStamp, was dann den Anfang der Stunde darstellt, und läuft über Duration Sekunden. Der Maximalwert innerhalb dieser Stunde steht in Max. Der Zeitstempel in TimeStamp passt da nicht zu, da der Maximalwert ja irgendwann innerhalb der Stunde sein kann. Der Zeitstempel des Maximalwerts steht dann aber wie beschrieben in MaxTime.

Ok, verstanden! Danke für die Erklärung.

Nun noch eins drauf:
Was mache ich um den Maximal Verbrauch (Zähler) eines Tages aus dem Archiv auszulesen?

Bei einem Zähler werden ja nur die Differenzen zum vorherigen Wert protokolliert.

zB.:
01.01.1970 10.45 17,35
01.01.1970 10.46 17,56
01.01.1970 10.47 18,05

Was meinst du mit Maximalverbrauch? In Avg steckt bei einem Zähler der Gesamtverbrauch des Tages. In Max steckt der größte Sprung innerhalb des Tages.

Ich möchte auf einer Statusseite den jemals größten Tagesverbrauch in Wh auslesen/darstellen.
Und eben von vorher ,den größten Verbrauch/Last in Watt…

Ah, dann müsstest du über aggregierte Tageswerte gehen und selbstständig das Maximum davon bestimmen.

1 „Gefällt mir“