Problem mit AC_GetAggregationVariables

Hallo zusammen,
ich versuche gerade die Laufzeit von Boolean-Variablen mittels AC_GetAggregationVariables zu verarbeiten.

Dazu verwende ich das Beispiel aus der Doku:

<?
$werte = AC_GetAggregatedValues(12816 /*[Archive]*/, 29957 /*[Homematic\Räume\Garage\Licht\Zustand]*/, 1 /* Täglich */, strtotime("today 00:00"), time(), 0);   
     
foreach($werte as $wert) {
	echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Duration'] . PHP_EOL;
}
?>

Vorher habe ich alle Werte der Variable im Archiv gelöscht und zum testen das Licht mal für knapp 10 Sekunden angemacht.

Hier nun die Ausgaben vor und nach dem schalten der Variable:

28.03.2018 15:17:10 -> 0
28.03.2018 15:17:10 -> 35

…und hier die zugehörigen Werte aus dem Archiv.

Wenn ich dann noch länger abwarte und das Skript wieder ausführe (ohne das etwas geschaltet wurde), wird der Wert immer größer.

Das gleiche Verhalten (Zeitwert steigt unregelmäßig an) hatte ich auch bei direkten Versuchen die aktive Zeit einer Variable mit „MessageSink“ herauszubekommen.

Das ganze läuft auf einem aktuellen 4.4’er IPS

Kann mir hier vielleicht jemand auf die Sprünge helfen?

Das Feld Duration gibt an wie lange der Wert gehalten wurde bzw. bisher gehalten wird. Führst du das Skript zum Abfragen erneut aus, ist seit der letzten Ausführung ja wieder Zeit vergangen und die Dauer des aktuellen Wertes hat sich dementsprechend erhöht. Meintest du das oder steigt bei dir ein anderer Wert an?

Ja, genau das meinte ich. Ich wollte den Wert dazu nehmen um die effektive Laufzeit eines Aktors (z.B. eine Lampe) im „an“ Zustand zu ermitteln um daraus einen Verbrauchswert zu berechnen…

Kann ich denn die einzelnen Duration-Werte für „on“ über ein Array abfragen und so eine Summe bilden?

Gesendet von meinem XT1650 mit Tapatalk

Das klingt vernünftig und sollte genau so funktionieren.