AVG Wert bei AC_GetAggregatedValues scheint statisch zu sein

Liebe Community,

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.

Hier mein Skript, das ich dazu verwende:


$werte = AC_GetAggregatedValues(55532, 32487, 0, mktime(0, 0, 0), mktime(0, 15, 0), 0);
 
foreach($werte as $wert) 
 	{
 	SetValueFloat(41454, $wert['Avg']);
	}

Mache ich da irgend etwas falsch oder sehe ich etwas nicht richtig?

Danke für eure Hilfe!!!

VG Olaf

Deine Start und Endzeit ist falsch.
Start z.b. time () - (15*60)
Ende time()

Sollte funktionieren.
Michael

Hallo
Du benutzt als Start und Endzeit immer 0 Uhr bis 0:15 Uhr :confused:
wenn du die letzten Minuten als Timestamp haben willst teste mal das:

	$start = mktime(0, 0, 0);
	$ende  = mktime(0, 15, 0);
		
	echo "
".date("H:i:s d.m.y",$start) . " - " . date("H:i:s d.m.y",$ende);;

	$start = time();
	$ende  = time()-(15*60);
		
	echo "
".date("H:i:s d.m.y",$start) . " - " . date("H:i:s d.m.y",$ende);;

;)zu spaet

as always - life can be so easy :-).

Danke für den Hinweis, jetzt funktioniert es, soweit ich das jetzt aufgrund der Kürze der Zeit schon beurteilen kann…

Vielen Dank noch einmal für eure Hilfe!!!

VG Olaf

…jetzt muss ich noch mal nachhaken:

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:

  1. Differenz Startzeit - Endzeit darf nicht gleich oder größer 5 Min (bzw. korrelierend zur Aggregationsstufe) sein
  2. Ich kann zu jedem beliebigen Zeitpunkt den Befehl aufrufen

Kann mir jemand helfen und den Knoten auflösen?


<?
$start = time();
$ende  = time()-(299);

$werte = AC_GetAggregatedValues(55532, 32487, 5, $start, $ende, 0);
 
foreach($werte as $wert) 
 	{
 	SetValueFloat(41454, $wert['Avg']);
	}
  
?>


…und muss nochmal beim nachhaken nachhaken…

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']);
	}

Danke von dem, der bald am verzweifeln ist :-)…

Moin!

Michael hatte es richtig geschrieben. 1007 hatte es falsch wiedergegeben.

Außerdem ist deine Klammer um deine (100) ist schon mal Sinn frei. Aber das nur am Rande :wink:

$start = time(); 
$ende  = time()-100; 

Hier wäre Startzeit die aktuelle Zeit und die Endezeit wäre vor 100 Sekunden…

Um alle Werte von vor 5 Minuten bis jetzt zu erhalten ist es so richtig:

$start = time() - 300;  // vor 5 Minuten
$ende  = time();  // jetzt

Siehe Beispiele hier:
AC_GetAggregatedValues — IP-Symcon :: Automatisierungssoftware
>> Start ist immer ein Zeitpunkt in der Vergangenheit und Ende ist entweder jetzt oder zwischen Startzeitpunkt und jetzt.

Grüße,
Chris