ich würde euch gerne „mal wieder“ um Hilfe bitten.
Ich habe im Haus einen Raumtemperatursensor, der volatile Wert liefert, durch Bauseits bedingte Restriktionen aber nicht durch einen besseren bzw. anderen Sensor ersetzt werden kann. Um unnötige Schaltaktionen zu vermeiden möchte ich die Rohdatenwerte der letzten 15 Minuten glätten und als Average-Wert ausgeben, um darauf basierend die Heizungsregelung „ruhiger“ zu bekommen.
In der visuellen Ausgabe der Variablenwerte scheint mir der Avg-Wert fast schon „statisch“ zu sein und augenscheinlich nicht mit den Rohdatenwerten zu korrelieren.
Ich bekomme beim auslesen eines Archivs mit AC_GetAggregatedValues „ab und an“ die Fehlermeldung:
„Warning: EndZeit ist vor der StartZeit“. Ich konnte in der Variation der Zeitdifferenz zur Betrachtung leider keine Systemaik erkennen, wann das Skript fehlerfrei läuft und wann nicht :-(.
Konkret: ich wähle die Aggregationsstufe 5 und möchte 299 sek (5 Min - 1 Sek) in die Vergangenheit schauen. Nach meinem Verständnis müssten zu jedem beliebigen Zeitpunkt T0 (eine entsprechende Vorlaufzeit zum loggen vorausgesetzt) die Daten bis T0 - maximal 5 Min. vorhanden sein. Würde für mich bedeuten:
Differenz Startzeit - Endzeit darf nicht gleich oder größer 5 Min (bzw. korrelierend zur Aggregationsstufe) sein
Ich kann zu jedem beliebigen Zeitpunkt den Befehl aufrufen
Habe mir heute Früh die Werte der letzten Nacht angeschaut und komme auf keinen grünen Zweig (siehe Screenshots): Die Abweichung zwischen dem AVG-Wert und dem Rohdatenwert passt einfach nicht - die Kurven sind sich ja nicht mal ähnlich, wenn ich die Steigung als Maß heranziehe…
Hier noch mal das dazugehörige Skript:
$start = time();
$ende = time()-(100); //bin hier wieder auf 100 Sek gegangen, um Fehlermeldungen (siehe oben) zu vermeiden
// Berechnung Mittelwert Bad
$werte = AC_GetAggregatedValues(55532, 32487, 5, $start, $ende, 0);
foreach($werte as $wert)
{
SetValueFloat(41454, $wert['Avg']);
}