Wert von einer bestimmten Zeit aus Archive holen

Ich brauche mal einen Gedankenschubs :o.

Ich möchte einen Temperaturwert von einer definierten Uhrzeit (00:00, 01:00, 02:00, 03:00, …, 23:00) aus dem Archiv holen. Das funktioniert aber leider nicht, da es zu genau der Uhrzeit keinen archivierten Wert gibt.

$ArchiveHandlerID = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}');
$ArchiveHandlerID = $ArchiveHandlerID[0];
$VarID = 22663;

$werte = AC_GetLoggedValues($ArchiveHandlerID, $VarID, strtotime("today 00:00"), strtotime("today 06:00"), 0);

//Dieser Teil erstellt eine Ausgabe im Skriptfenster mit den abgefragten Werten        
foreach($werte as $wert) {
    echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Value'] . PHP_EOL;
}

26.02.2019 05:46:16 -> 0
26.02.2019 05:16:15 -> 0,94117647058823
26.02.2019 04:56:14 -> 0
26.02.2019 03:26:09 -> 0,94117647058823
26.02.2019 03:06:08 -> 1,8823529411765
26.02.2019 02:06:05 -> 0,94117647058823
26.02.2019 00:36:00 -> 1,8823529411765

Die Werte werden nur bei Änderung gemeldet.

Wie komme ich am einfachsten an den Wert jeder vollen Stunde?

Ziel ist die Berechnung der Tagesmitteltemperatur gemäß Definition, um damit die Grünland-Temperatur zu berechnen :D.

Nicht gut genug gesucht :eek:.

Ich antworte mir mal selber:

$werte = AC_GetAggregatedValues ($ArchiveHandlerID, $VarID, 6, strtotime("today 01:00"), strtotime("today 01:00"), 0);

liefert einen Wert, der relativ relatistisch aussieht :).

Das liefert dir den über eine Minute aggregierten Wert, also die Durchschnittstemperatur von 0:00 bis 0:01, etc., was wahrscheinlich immer noch exakt genug ist.

Möchtest du den exakten Wert zu einem Zeitpunkt haben, kannst du das mit


$werte = AC_GetLoggedValues ($ArchiveHandlerID, $VarID, 0, strtotime("today 01:00"), 1);

machen. Damit bekommst du den neuesten Wert bis zum gegebenen Endzeitpunkt.

Danke, teste ich auch noch mal.

Meine Werte weichen doch ziemlich deutlich vom DWD Hannover Flughafen ab :(.

Mein erster Versuch war alle Werte pro Stunde holen und selber den Durchschnitt berechnen. Der Zweite die korrelierten Stundenwerte von Symcon nehmen. Und gestern Abend der Dritte, eher gemäß DWD Definition den jeweiligen Wert zur vollen Stunde.

Alle Berechnung sind „relativ nah beieinander“ und weit weg vom DWD Tagesdurchschnitt bzw. den ISIP Werten.