Code um Archivdatum auszulesen

Hallo,

ich suche nach einer Möglichkeit, das Datum des ersten Wertes aus dem Archiv in einer Integer-Variable zu schreiben.
Die Suchfunktion liefert das Stichwort „GetLoggedValues“, allerdings habe ich noch nichts funktionierendes hinbekommen.

Wie lautet der genaue Code hierfür?

Gruß Yansop

Spontan vermute ich, dass es dafür keinen 100%igen Code gibt, denn AC_GetLoggedValues hat eine harte Grenze von 10.000 Werten. Da die Funktion immer den neusten Wert ausgibt, fällt mir da spontan nix ein.

Oh, mit dieser Antwort hätte ich jetzt nicht gerechnet…
Hier in der Anleitung steht ja auch was von Startzeit…https://www.symcon.de/service/dokumentation/modulreferenz/archive-control/ac-getloggedvalues/

Gibt es evtl. andere Lösungsansätze das Datum des ersten Wertes aus dem Archiv in der WebFront anzuzeigen?

Die Frage ist noch nicht so lange her und die Suche liefert

Ja, richtig. Die Startzeit für den Zeitbereich, den Du abfragen möchtest. Da Du ja alles abfragen möchtest, müsstest Du dort dementsprechend 0 eintragen.

Gerade getestet: Meine Variable für die Außentemperatur hat bereits mehr als 10.000 Einträge.

Vielleicht gibt es etwas undokumentiertes seitens des Herstellers?

Edit: Im von ralf verlinkten Thread gibt paresy die Antwort. Über AC_GetAggregationVariables und FirstTime machbar.

Hier bin ich auch schon wieder raus, könntest du hierfür mal ein Beispiel bereitstellen?
Vielen Dank, Gruß Yansop.

Zeig doch mal, was Du bisher diesbezüglich probiert hast. Dann kann man Dir gezielter helfen.

Ich hatte bisher nur Beispielcodes mit GetLoggedValues geändert, ausprobiert und wieder gelöscht.
Also alles wieder auf Anfang…

Okay, mittlerweile wissen wir, dass dieser Befehl uns nicht ans Ziel führt und wir mit AC_GetAggregationVariables arbeiten sollten.

https://www.symcon.de/service/dokumentation/modulreferenz/archive-control/ac-getaggregationvariables/

Diese Funktion stellt Dir die Informationen über alle geloggten Variablen in einem Array zur Verfügung. Unter anderem auch „FirstTime“ - also genau das, was Du suchst. Musst im Array nur die gewünschte Variable finden und dann das Feld auslesen.

Allerdings reichen hierfür meine Programmierkenntnisse nicht aus, um dieses Umzusetzen.
Eine Beispielzeile könnte mir Licht ins dunkle bringen…

$Variables = AC_GetAggregationVariables(12345, FALSE);

12345 muss dabei die ID des AchiveHandlers sein. Mit var_dump oder print_r kannst Du dir dann anschauen, was drin ist.

Vielen Dank hierfür, habe folgenden Code in einem ausgelösten Ereignis als Aktion eingefügt:

$Variables = AC_GetAggregationVariables(39034, FALSE);

a. In diesem ist aber kein FirstTime vorhanden?
b. um diesen Wert in die Variable zu schreiben wird vermutlich ein „set“ benötigt?

Wir sollten diesen Code erstmal innerhalb eines Skriptes lauffähig bekommen, bevor wir den Code in irgendwelche Ereignisse schreiben.

Kleiner Tipp: man könnte zum Beispiel mit „foreach“ durchs Array springen und bei der passenden VariableID dann FirstTime ausgeben.

Gibt natürlich noch viele andere Möglichkeiten.

var_dump($Variables = AC_GetAggregationVariables(39034, FALSE));

oder

print_r($Variables = AC_GetAggregationVariables(39034, FALSE));

liefert als Skript leider auch kein Ergebnis

Aber var_dump($Variables) sollte was liefern.

leider nein…

<?php
var_dump($Variables)

liefert eine Fehlermeldung:
Parse error: syntax error, unexpected end of file in /var/lib/symcon/scripts/41116.ips.php on line 2

ein Schritt vor, einer zurück :slight_smile:

was liefert denn


<?php
$Variables = AC_GetAggregationVariables(39034, FALSE);
var_dump($Variables);

Hallo, der Code liefert folgende Fehlermeldung:

Warning: Instanz #39034 existiert nicht in /var/lib/symcon/scripts/21622.ips.php on line 2
bool(false)

Dann schau mal hier:

https://www.symcon.de/service/dokumentation/modulreferenz/archive-control/ac-getaggregationvariables/

und was sollte ich mir hier genauer anschauen, habe ich mir schon bestimmt 10x angeschaut…:o