AC_GetAggregatedValues - liefert erst verzögert

Moin zusammen,

ich habe eine Variable als Zähler konfiguriert. Es werden bestimmte Ereignisse gezählt. Wenn das Ereignis eintritt, dann wird die Variable um 1 erhöht. Gleichzeitig möchte ich im gleichen Skript berechnen, wie oft das Ereignis in diesem Jahr schon stattgefunden hat.

Das Auslesen übernimmt folgende Zeile:

AC_GetAggregatedValues($AchiveID, $ZaehlerID, 4, strtotime("January 1st"), time(), 0);

Der Wert, den ich hier auslese, berücksichtigt die Erhöhung nicht. Führe ich die o.g. Zeile ca. 60-120 Sekunden später aus, so wird der korrekte Jahreswert geliefert.

Wenn das Ereignis sekündlich eintritt, so kann man beobachten, dass der Archivwert stehenbleibt und nur ungefähr alle 60-120 Sekunden angepasst wird.

Ist das ein Bug?

Nein, ein Feature. Nennt sich Commit Intervall. Die Daten werden periodisch ins Archiv geschrieben. Standardmäßig glaube ich alle 60 Sekunden.

Details dazu findest du in der Doku. Es gibt auch einen Spezialschalter zum Tunen. Du solltest dir aber überlegen, was du dort einstellst, um negative Auswirkungen auf dein System zu vermeiden.

1 „Gefällt mir“

Kannst Du mir da einen Link geben? Unter Archive Control — IP-Symcon :: Automatisierungssoftware und unter AC_GetAggregatedValues — IP-Symcon :: Automatisierungssoftware werde ich nicht fündig.

Bin im Moment unterwegs und habe leider nicht viel Zeit zu gucken. Aber hier findest du z.B. Informationen zu dem Thema:

1 „Gefällt mir“

Super, vielen Dank.

(Beitrag muss mindestens 20 Zeichen lang sein)

Irgendwie ist das alles merkwürdig.

Folgende Anzeige habe ich im Archiv:


Letzter Wert am 10.04.2023 um 13:18 Uhr. Die Variable „Zähler Gesamt“ steht momentan auf 6. Anzahl der Werte im Archiv sind auch 6.

AC_GetAggregatedValues($AchiveID, $ZaehlerID, 4, strtotime("January 1st"), time(), 0);

liefert 5. Warum? Fängt der Befehl hier bei 0 an zu zählen?

Wie 5?
Da kommt doch ein Array zurück und bei der gewählten Stufe hätte ich jetzt einen Datensatz erwartet.
Michael

(
    [0] => Array
        (
            [Duration] => 295813
            [TimeStamp] => 1680866406
            [Avg] => 5
            [MinTime] => 1680874608
            [Min] => 1
            [MaxTime] => 1680874608
            [Max] => 1
        )

)

Dir ist aber klar, dass du die aggregierten Werte und nicht die Rohdaten abfragst?

Bei einer Zählervariablen gibt AVG die Summe der positiven Deltas an. Wie sind denn die Rohdaten der Variablen in dem gewählten Zeitraum (dieses Jahr)?

Da scheint es ja nur eine Differenz von 5 in diesem Jahr gegeben zu haben und du hast die Variable in Einerschritten hoch gezählt, wie es aussieht.

Ja, das ist mir klar. Vielleicht aber auch nicht?

Es ist ein Zähler, der immer nur um 1 erhöht wird. Richtig.

Die Variable wurde vor paar Tagen angelegt. Es gibt also nur Werte aus diesem Jahr.

Wenn er - wie in diesem Fall - von 0 startend insgesamt 6 Mal erhöht wird, also auch auf 6 steht, dann würde ich im Archiv ebenfalls eine 6 erwarten.

Liege ich damit falsch?

Was ist den der erste geloggte Wert? 0 oder 1?
Michael

1 „Gefällt mir“

Ich habe es gerade bei mir mal getestet. Funktioniert einwandfrei.
Wenn ich in diesem Jahr die Rohwerte 0, 1, 2, 3, 4, 5, 6 im Archiv habe, bekomme ich bei AVG als Wert 6, bei MIN/MAX jeweils 1.

@DerStandart Ich gehe davon aus, dass du die 0 nicht geloggt hast. Dann kommt natürlich 5 raus, weil das erste Delta von 1 auf 2 ist. Das Archiv kann ja schlecht raten, welcher Wert vor dem ersten geloggten Wert kam. Das könnte ja auch eine -1000 gewesen sein.

2 „Gefällt mir“

1 und das war der Fehler.

Danke an @Slummi und @Nall-chan . Man lernt auch nach 13 Jahren IP-Symcon nicht aus.

2 „Gefällt mir“