AC_GetLoggedValues - Ersatz für ['Duration'] ?

Hallo,

nachdem ich nun endlich auf IPS V4 umgestiegen bin, sucheich nach einem Äquivalent für das weggefallende Duration.

Ich möchte die geloggten Daten für einen Zeitraum (z.B. 30 Minuten ab jetzt) abfragen und dann den ältesten in diesem Zeitraum gefunden Wert mit dem eben erfassten vergleichen, um so beispielsweise eine Tendenz zu erkennen.
Da die Daten nicht rythmisch, sondern in ungleichmäßigen Zeiträumen geloggt werden (je nach Gerät und Ausgabe), fehlt mir ein fester Timestamp zur Suche.
Wie kann ich nun erreichen, den ältesten der geloggten Werte innerhalb dieser Zeitspanne zu finden und auszugeben?
Da war [‚Duration‘] von IPS V3 sehr hilfreich dafür!

Ich glaube hier im Forum gabs schon Diskussionen darüber, die dann aber irgendwie im Sand verliefen.
Mit dem Angebot aus der Doku komme ich nicht wirklich weiter.

Ich habe mindestens noch einen Kandidaten der sehr für die Rückkehr für Duration wirbt :wink: (@MaLu) … Wir wollen es auch wieder zurückbringen - ich kann dir nur noch nicht sagen wann es kommen wird.

paresy

Das klingt erstmal sehr gut!

  • ich kann dir nur noch nicht sagen wann es kommen wird.

Das weniger. Ich hoffe nicht erst zur V5… da braucht man ja wieder 64bit-Hardware:rolleyes:

Gibts einen Workaround, den ich JETZT anwenden kann?
Ich brauche leider die Berechnungen, wo ich damals mühevoll darauf weiter aufgebaut habe.

Mit „AC_GetAggregatedValues“ habe ich keine Möglichkeit erkannt, das zu ersetzen.
Höchstens beim Durchschnitt erreichnen (Avg), aber da ist mir die Abfrage für einen Zeitraum auch noch nicht schlüssig und man arbeitet ja nicht mit den aktuellsten Daten, sondern nur mit den bereits aggregierten…

Du kannst die Duration herausfinden, indem du einfach einen Eintrag mehr als erforderlich lädst und immer die Differenz der Timestamps zum vorherigen vergleichst.

paresy

Sry, ich kann dir gerade nicht folgen:confused::frowning:
Hast du mal ein Beispiel?

Hallo,

ich nutze auch den Parameter „Duration“ in ein paar Skripten! Somit wäre es für mich auch sehr wichtig, damit ich auch mal auf die 4er updaten kann.

Gruß
bertel2013

Haha paresy,

ich bin nicht der einzige :slight_smile: - siehst Du :smiley:

Grüsse,
MaLu

PS: Du hast PM - mal gespannt was Du nu „antwortest“ :stuck_out_tongue:

Wenn ich das richtig verstanden habe, dann möchtest du wissen, welcher Wert vor 30 Minuten in der Variablen stand. Das kannst du machen, indem du einfach die geloggten Werte einliest, die vor mehr als 30 Minuten geschrieben wurden. Der Aufruf dafür wäre dann

$werte = AC_GetLoggedValues(52537 /*[Archive]*/, 50231 /*[Data]*/, 0, $thirtyMinutesAgo, 1);

Du holst dir also den neuesten geloggten Wert, der vor mehr als dreißig Minuten geschrieben wurde. Dafür musst du lediglich den Zeitstempel von vor dreißig Minuten bestimmen und in $thirtyMinutesAgo schreiben. Und das ganz ohne Duration :wink:

Cool:D
Genau das funktioniert so nicht, mit nicht agreggierten Werten, ohne den genauen TimeStamp zu kennen, wenn die DB-Einträge unregelmäßig sind;)

P.S.
Ich versuche mal paar Beispiel aus alten threads zu finden…

Wenn die Werte nicht aggregiert sind, funktioniert das ganze natürlich gar nicht, weil dann ja nicht geloggt wird. Damit hat man dann nur den aktuellsten Wert und somit nicht die vorherigen Werte und die gesamte Idee wird nichts.

Sind die Werte allerdings geloggt, dann rufe ich mit meiner Abfrage alle Werte ab, die zwischen dem Anfang des Logging und dem Zeitpunkt vor 30 Minuten geschrieben wurden. Durch das Limit 1 rufe ich von all den Werten nur den neuesten ab.

Ich gehe hier also nicht über den Zeitraum zwischen jetzt und vor 30 Minuten und nehme davon den ältesten Beitrag, sondern über die Beiträge die vor mehr als 30 Minuten geschrieben wurden.

Wurde also beispielsweise vor 35 Minuten der Wert auf 10 gesetzt und vor 20 Minuten auf 30, dann interessiert uns ja die 10. Diese gebe ich dann zurück, da dies der letzte Beitrag vor mehr als 30 Minuten ist. Hierbei ist es unerheblich ob die Beiträge regelmäßig sind oder nicht.