# Archive Control
> Symcon Dokumentation · Deutsch · erzeugt am 2026-09-26
> Index: https://www.symcon.de/de/llms.txt
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/
Das Archive Control Modul kümmert sich um das Speichern der Variablenwerte in einer Datenbank.
### Speicherart
Zur leichteren Handhabe und besseren Verwaltbarkeit wurde ab Version 4.0 die SQLite Datenbank entfernt und stattdesssen CSV eingeführt.
| IPS Version | Speicherart |
| --------------- | ---------------- |
| bis Version 3.4 | SQLite Datenbank |
| ab Version 4.0 | CSV Dateien |
### Logging aktivieren
Um eine Variable in der Datenbank zu loggen, muss per Doppelklick das Fenster "Variable editieren" geöffnet und die Checkbox "Alle Variablenänderungen aufzeichnen" ausgewählt werden. Sofern kein Button für den Graphen dieser Variable in der Visualisierung angezeigt werden soll, kann im Dropdown-Menü "Darstellung" die Option "In Visualisierung verstecken" ausgewählt werden.

| Aggregationstyp | Beschreibung |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Standard | Für alle Aggregationsstufen (Stunde, Tag, Woche, Monat, Jahr) wird Min / Max / Durchschnitt berechnet. |
| Zähler | Für alle Aggregationsstufen (Stunde, Tag, Woche, Monat, Jahr) wird das Delta (der Unterschied) der Werte als Min / Max / Summe berechnet. |
> **Hinweis:** Sofern die Zähleraggregation ausgewählt wurde, wird der erste im Archiv geloggte Wert als Referenzwert genutzt und erst die darauf folgenden Werte zur Summierung der positiven Deltas genutzt. Das heißt eine Variable mit den geloggten Werten 500, 505, 520, 521 wird mit den Werten 0, 5, 15, 1 angezeigt.
| Archiveinstellungen | Beschreibung |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Alle Variablenveränderungen aufzeichnen | Aktiviert das Logging der Variable. |
| Aggregation in Visualisierung anzeigen | Deaktiviert/Versteckt den Button zur Visualisierung der geloggten Variable. Das Aufzeichnen der Datenpunkte der Variable ist immernoch aktiv. |
> **Hinweis:** Wenn der Aggregationstyp einer Variable verändert wird, wird diese automatisch neu aggregiert. Dies kann einige Zeit in Anspruch nehmen.
Sobald das Logging ausgewählt ist, werden alle Daten in der Datenbank abgespeichert. Dabei werden die Daten zweifach gespeichert. Alle Rohdaten werden in der Datenbank abgelegt und diese Daten werden wiederum auf die einzelnen Intervalle (Tag, Woche, Monat, Jahr) zusammengefasst abgespeichert, um ein schnelleres erstellen der Graphen zu ermöglichen. Die Graphen können, wenn für die Variable aktiviert, über die Visualisierung angesehen werden.
### Archive Handler
Der Archive Handler ist eine Funktion zur Verwaltung aller geloggten Variablen. Es können alle Werte betrachtet und bearbeitet werden.


Die Titelzeile bietet folgende Funktionen:
| Funktion | Beschreibung |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Aufräumen | Entfernt alle Archivdaten zu nicht mehr existierenden Variablen. Variablen deren Logging nur deaktiviert ist, werden nicht gelöscht. |
| Alle reaggregieren | Aggregiert alle geloggten Variablen neu. Dies kann je nach Umfang sehr lange dauern. Regelmäßige Status-, sowie Abschlussmeldungen, werden im Reiter "Meldungen" angezeigt. |
Ein Klick auf das Auge-Icon öffnet die Ansicht mit gespeicherten Rohdaten der gewählten Variable an und erlaubt das Löschen von einzelnen Datensätzen. __Nach dem Löschen ist es erforderlich, die Variablendaten neu zu aggregieren.__ Diese Funktion steht nicht für Variablen zur Verfügung, welche nicht mehr existieren. Ein Klick auf das Zahnrad öffnet einen Dialog mit weiterführenden Funktionen zur ausgewählten Variablen

| Funktion | Beschreibung |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Reaggregieren | Aggregiert die ausgewählte Variable neu. Dies kann je nach Umfang sehr lange dauern. Regelmäßige Status-, sowie Abschlussmeldungen, werden im Reiter "Meldungen" angezeigt. |
| Daten löschen | Löscht alle Rohdaten der gewählten Variable aus dem Archiv. |
| Zeitspanne löschen | Hier kann eine Zeitspanne ausgewählt werden, in der alle Datensätze der gewählten Variable gelöscht werden sollen. |
| Daten transferieren | Die Rohdaten einer Variable werden auf eine andere Variable übertragen. Dies kann Sinnvoll sein wenn eine VariablenID nicht mehr existiert oder ein Sensor ausgetauscht wurde. Hierfür muss eine Variable gewählt werden, welche bisher nicht geloggt wurde und vom Variablentyp her zu den geloggten Werten passt. Die Daten der alten Variable werden dabei automatisch gelöscht. |
| Variable bearbeiten | Öffnet den Variable bearbeiten Dialog im Objektbaum |
| Daten hinzufügen | Hier können der Variablen weitere Datensätze hinzugefügt werden. Datensätze können entweder manuell oder aus Dateien hinzugefügt werden. Bei manuellem Hinzufügen öffnet sich ein weiter Dialog, in welchem in einer Liste Zeiten und Werte eingetragen werden können, welche bei einem Klick auf "Werte hinzufügen" der Variablen hinzugefügt werden. Sollen Datensätze aus Dateien hinzugefügt werden, so sind hierfür vorbereitete csv-Dateien erforderlich. In einem weiteren Schritt können die Werte noch manuell geprüft und schließlich der Variablen hinzugefügt werden. |
#### Mögliche Dateiformate bei "Daten hinzufügen"
In .csv-Dateien für das Hinzufügen von Daten muss je Zeile ein Zeitpunkt zusammen mit einem Datenwert notiert sein. Hier sind zwei grundlegende Notationen möglich:
1. Komma als Trennzeichen und Punkt als Dezimaltrennzeichen (Datum,1.5)
2. Semikolon als Trennzeichen und Komma als Dezimaltrennzeichen (Datum;1,5)
Für das Datum werden mehrere Formate unterstützt:
1. Unix-Timestamp, z.B. 1522527010
2. Deutsches Format, z.B. 31.03.2018 22:10:10
3. Amerikanisches Format, z.B. 03/31/2018 10:10:10 PM
4. RFC2822, z.B. Sat, 31 Mar 2018 22:10:10 +0000
5. ISO8601, z.B. 2018-03-31 22:10:10
#### Dateien aus Excel-Datei hinzufügen
Es ist möglich die .csv-Datei für das Hinzufügen von Daten mit Microsoft Excel vorzubereiten. Hier werden die Zeitpunkte in der ersten Spalte und die Werte in der zweiten Spalte eingetragen. Hierbei ist zu beachten, dass die Zeitpunkte in einem passenden Format formatiert sind. Beispielsweise kann für das deutsche Format das benutzerdefinierte Zahlenformat TT.MM.JJJJ hh:mm:ss verwendet werden.

Abschließend kann die Liste als .csv-Datei abgespeichert werden, indem bei "Speichern unter" der Typ "CSV (Trennzeichen-getrennt)" ausgewählt und danach mit "Speichern" bestätigt wird. Die generierte .csv-Datei kann dann über "Daten hinzufügen" einer [Variable](../concepts.md) bei IP-Symcon hinzugefügt werden.
## AC_AddLoggedValues
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-addloggedvalues/
`bool AC_AddLoggedValues(int $InstanzID, int $VariableID, array $Datensätze)`
_Benötigt Symcon >= 5.1_
fügt einer geloggten Variable weitere Datensätze hinzu
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariableID` (int): ID der Variable, welcher die Datensätze hinzugefügt werden sollen
- `$Datensätze` (array)
Ein Array mit Datensätzen, wobei jeder Datensatz ein Array mit folgenden __key => value__ Paaren ist:
| Parameter | Typ | Beschreibung |
| --------- | ------------- | ---------------------------------------------------------------------------------------------- |
| TimeStamp | Integer | Zeitpunkt des neuen Datensatzes als Unix Timestamp |
| Value | nach Variable | Der Wert des neuen Datensatzes - Der Typ des Wertes muss hierbei zum Typen der Variable passen |
**Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__.
Ein Array mit Datensätzen, wobei jeder Datensatz ein Array mit folgenden __key => value__ Paaren ist:
| Parameter | Typ | Beschreibung |
| --------- | ------------- | ---------------------------------------------------------------------------------------------- |
| TimeStamp | Integer | Zeitpunkt des neuen Datensatzes als Unix Timestamp |
| Value | nach Variable | Der Wert des neuen Datensatzes - Der Typ des Wertes muss hierbei zum Typen der Variable passen |
**Beispiel**
```php
// Füge einer Integer Variable drei zusätzliche Datensätze hinzu
AC_AddLoggedValues(12345, 34567, [
[
'TimeStamp' => 1128255120,
'Value' => 30
],
[
'TimeStamp' => 1128257851,
'Value' => 50
],
[
'TimeStamp' => 1128278514,
'Value' => 130
]
]);
```
## AC_ChangeVariableID
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-changevariableid/
`bool AC_ChangeVariableID(int $InstanzID, int $OldVariableID, int $NewVariableID)`
_Benötigt Symcon >= 3.0_
migriert Daten einer Variable in eine bisher nicht geloggte Variable
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$OldVariableID` (int): ID der zu migrierenden Variable
- `$NewVariableID` (int): ID der neuen Variable
**Rückgabewert** (bool): __True__ wenn erfolgreich, sonst __False__
ID der neuen Variable
**Beispiel**
```php
// Die Daten der Variable 34567 werden migriert in die Variable 56789
AC_ChangeVariableID(12345, 34567, 56789);
```
## AC_DeleteVariableData
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-deletevariabledata/
`int AC_DeleteVariableData(int $InstanzID, int $VariablenID, int $Startzeit, int $Endzeit)`
_Benötigt Symcon >= 3.0_
löscht in einem bestimmten Zeitraum alle Datensätze einer geloggten Variable
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der Variable in der die Datensätze gelöscht werden sollen
- `$Startzeit` (int): Datum/Zeit als Unix Zeitstempel (0 = von Anfang an)
- `$Endzeit` (int): Datum/Zeit als Unix Zeitstempel (0 = bis jetzt)
**Rückgabewert** (int): gibt die Anzahl der gelöschten Datensätze zurück
Datum/Zeit als Unix Zeitstempel (0 = bis jetzt)
**Beispiel**
```php
// Löscht alle Daten der Variable "TestVariable" im Zeitraum 07.10.2015 16:00 UTC+2(CEST) bis 07.10.2015 17:00 UTC+2(CEST)
AC_DeleteVariableData(12345 /*[Archive]*/, 45678 /*[Variable]*/, 1444226400, 1444237200);
// Löscht alle Daten der Variable "TestVariable" im Zeitraum 07.10.2015 16:00 UTC+2(CEST) bis jetzt
AC_DeleteVariableData(12345 /*[Archive]*/, 45678 /*[Variable]*/, 1444226400, 0);
// Restlos löschen und aus dem Archiv Control entfernen
// Löscht alle Daten der Variable und deaktiviert die Variable im Archive Control
AC_DeleteVariableData(12345 /*[Archive]*/, 45678 /*[TestVariable]*/, 0, 0);
```
## AC_GetAggregatedValues
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-getaggregatedvalues/
`array AC_GetAggregatedValues(int $InstanzID, int $VariablenID, int $Aggregationsstufe, int $Startzeit, int $Endzeit, int $Limit)`
_Benötigt Symcon >= 3.0_
holt aggregierte Daten aus dem Archiv
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variablen
- `$Aggregationsstufe` (int)
| Aggregationsstufe | Beschreibung |
| ----------------- | ------------------------------------------------------------------------------------ |
| 0 | Stündliche Aggregation
(00:00 - 59:59) |
| 1 | Tägliche Aggregation
(00:00:00 - 23:59:59) |
| 2 | Wöchentliche Aggregation
(Montag 00:00:00 - Sonntag 23:59:59) |
| 3 | Monatliche Aggregation
(Erster Monatstag 00:00:00 - Letzter Monatstag 23:59:59) |
| 4 | Jährliche Aggregation
(01.01. 00:00:00 - 31.12. 23:59:59) |
| 5 | 5-Minütige Aggregation (Aus Rohdaten berechnet) |
| 6 | 1-Minütige Aggregation (Aus Rohdaten berechnet) |
| 8 | 15-Minütige Aggregation (Aus Rohdaten berechnet) (ab Version 8.1) |
- `$Startzeit` (int): Datum/Zeit als Unix Zeitstempel (0 = von Anfang an)
- `$Endzeit` (int): Datum/Zeit als Unix Zeitstempel (0 = bis jetzt)
- `$Limit` (int): Maximale Anzahl an Datensätzen. (0 = Kein Limit, 10000 ist das harte Limit, welches immer greift)
**Rückgabewert** (array): Ein Array mit folgenden __key => value__ Paaren.
> **Hinweis:** Die Ausgabe startet mit dem neusten Datensatz und dann absteigend mit den älteren Datensätzen.
Bedeutung der Felder beim Aggregationstyp __Standard__
| Index | Typ | Beschreibung |
| ------------- | ------- | ----------------------------------------------------------------- |
| __Avg__ | variant | Durchschnittswert innerhalb dieses Aggregationszeitraums |
| __Duration__ | integer | Dauer des Aggregationszeitraums in Sekunden |
| __Max__ | variant | Größter Wert innerhalb dieses Aggregationszeitraums |
| __MaxTime__ | variant | Datum/Zeit von __Max__ als Unix Timestamp |
| __Min__ | variant | Kleinster Wert innerhalb dieses Aggregationszeitraums |
| __MinTime__ | variant | Datum/Zeit von __Min__ als Unix Timestamp |
| __TimeStamp__ | integer | Datum/Zeit vom Begin des Aggregationszeitraums als Unix Timestamp |
Bedeutung der Felder beim Aggregationstyp __Zähler__
| Index | Typ | Beschreibung |
| ------------- | ------- | ----------------------------------------------------------------- |
| __Avg__ | variant | Summe der positiven Delta innerhalb dieses Aggregationszeitraums |
| __Duration__ | integer | Dauer des Aggregationszeitraums in Sekunden |
| __Max__ | variant | Größter positives Delta innerhalb dieses Aggregationszeitraums |
| __MaxTime__ | variant | Datum/Zeit von __Max__ als Unix Timestamp |
| __Min__ | variant | Kleinstes positives Delta innerhalb dieses Aggregationszeitraums |
| __MinTime__ | variant | Datum/Zeit von __Min__ als Unix Timestamp |
| __TimeStamp__ | integer | Datum/Zeit vom Begin des Aggregationszeitraums als Unix Timestamp |
Maximale Anzahl an Datensätzen. (0 = Kein Limit, 10000 ist das harte Limit, welches immer greift)
**Beispiel**
```php
//Alle Datensätze vom 01.01.2013 bis zum 31.12.2013 abfragen (Tägliche Aggregationsstufe)
//z.B. um den Verbrauch am jeweiligen Tag zu ermitteln oder die Durchschnittstemperatur am jeweiligen Tag
$werte = AC_GetAggregatedValues(12345, 55554, 1 /* Täglich */, mktime(0, 0, 0, 1, 1, 2013), mktime(23, 59, 59, 12, 31, 2013), 0); //55554 ist die ID der Variable, 12345 vom Archiv
//Alle heutigen Datensätze abfragen (Tägliche Aggregationsstufe)
//z.B. um den heutigen Verbrauch er ermitteln oder die heutige Durchschnittstemperatur
$werte = AC_GetAggregatedValues(12345, 55554, 1 /* Täglich */, strtotime("today 00:00"), time(), 0); //55554 ist die ID der Variable, 12345 vom Archiv
//Alle gestrigen Datensätze abfragen (Stündlichen Aggregationsstufe)
//z.B. um den gesterigen Verbrauch oder die durchschittliche Windgeschwindigkeit jeder Stunde zu begutachten
$werte = AC_GetAggregatedValues(12345, 55554, 0 /* Stündlich */, strtotime("yesterday 00:00"), strtotime("today 00:00")-1, 0); //55554 ist die ID der Variable, 12345 vom Archiv
//Dieser Teil erstellt eine Ausgabe im Skriptfenster mit den abgefragten Werten
foreach($werte as $wert) {
echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Avg'] . PHP_EOL;
}
```
## AC_GetAggregationType
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-getaggregationtype/
`int AC_GetAggregationType(int $InstanzID, int $VariablenID)`
_Benötigt Symcon >= 3.0_
gibt den Aggregationstyp einer Variable wieder
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variablen
**Rückgabewert** (int): Ein Integer der den Typ der Aggregation wiedergibt.
| Rückgabewert | Beschreibung |
| ------------ | ------------ |
| 0 | Standard |
| 1 | Zähler |
ID der abzufragenden Variablen
**Beispiel**
```php
// Die Variable wird als Zähler aggregiert
echo AC_GetAggregationType(39147 /*[Archive]*/, 53716 /*[TestVariableZähler]*/);
// Ausgabe: 1
```
## AC_GetAggregationVariables
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-getaggregationvariables/
`array AC_GetAggregationVariables(int $InstanzID, bool $DatenbankAbfrage)`
_Benötigt Symcon >= 3.0_
gibt ein Array aller geloggten Variablen zurück
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$DatenbankAbfrage` (bool): True, wenn zusätzliche Informationen angezeigt werden sollen, sonst False (ab Version 4.0 unwichtig, Angabe aber nötig)
**Rückgabewert** (array): Ein Array mit folgenden __key => value__ Paaren.
| Index | Typ | Beschreibung |
| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
| FirstTime | integer | Datum/Zeit vom Beginn des Aggregationszeitraums als Unix Zeitstempel |
| LastTime | integer | Datum/Zeit vom letzten Eintrag des Aggregationszeitraums als Unix Zeitstempel |
| RecordCount | integer | Anzahl der Datensätze |
| RecordSize | integer | Größe aller Datensätze in Bytes |
| VariableID | integer | ID der Variable |
| AggregationType | integer | Aggregationstyp als Integer. Siehe auch [AC_GetAggregationType](archive-control.md) |
| AggregationVisible | boolean | Gibt an ob die Variable in der Visualisierung angezeigt wird. Siehe auch [AC_GetGraphStatus](archive-control.md) |
| AggregationActive | boolean | Gibt an ob das Logging für diese Variable Aktiv ist. Siehe auch [AC_GetLoggingStatus](archive-control.md) |
| Compaction | array | Array mit Verdichtungseinträgen. Jeder Eintrag enthält MonthOffset und CompactionType. Siehe auch [AC_SetCompaction](archive-control.md) |
True, wenn zusätzliche Informationen angezeigt werden sollen, sonst False (ab Version 4.0 unwichtig, Angabe aber nötig)
**Beispiel**
```php
// Ausgabe mit zusätzlichen Informationen
var_dump(AC_GetAggregationVariables(39147 /*[Archive]*/, true));
/* Beispielausgabe
array(1) {
[0]=>
array(9) {
["FirstTime"]=>
int(1444221643)
["LastTime"]=>
int(1444221705)
["RecordCount"]=>
int(6)
["RecordSize"]=>
int(78)
["VariableID"]=>
int(53716)
["AggregationType"]=>
int(0)
["AggregationVisible"]=>
bool(true)
["AggregationActive"]=>
bool(true)
["Compaction"]=>
array(1) {
[0]=>
array(2) {
["MonthOffset"]=>
int(-1)
["CompactionType"]=>
int(1)
}
}
}
}
*/
```
## AC_GetCompaction
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-getcompaction/
`array AC_GetCompaction(int $InstanzID, int $VariablenID)`
_Benötigt Symcon >= 6.3_
gibt die Verdichtungseinträge einer Variable zurück
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variablen
**Rückgabewert** (array): Ein Array mit den Verdichtungseinträgen der Variable.
Jeder Eintrag enthält folgende Felder:
| Feld | Typ | Beschreibung |
| --------------- | --- | --------------------------------------- |
| MonthOffset | int | Monatsversatz der Verdichtung |
| CompactionType | int | Typ der Verdichtung (siehe unten) |
**Verdichtungstypen**
| Verdichtungstyp | Beschreibung |
| --------------- | --------------------------------------- |
| 0 | Auf einen Wert pro Minute verdichten |
| 1 | Auf einen Wert pro 5 Minuten verdichten |
| 2 | Auf einen Wert pro Stunde verdichten |
| 3 | Auf einen Wert pro Tag verdichten |
| 4 | Auf einen Wert pro Woche verdichten |
| 5 | Auf einen Wert pro Monat verdichten |
| 6 | Auf einen Wert pro Jahr verdichten |
| 7 | Werte löschen |
ID der abzufragenden Variablen
**Beispiel**
```php
// Abfrage der Verdichtungseinträge für "TestVariable"
$compaction = AC_GetCompaction(39147 /*[Archive]*/, 53716 /*[TestVariable]*/);
print_r($compaction);
/* Beispielausgabe:
Array
(
[0] => Array
(
[MonthOffset] => -1
[CompactionType] => 1
)
[1] => Array
(
[MonthOffset] => 3
[CompactionType] => 2
)
)
*/
```
## AC_GetCounterIgnoreZeros
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-getcounterignorezeros/
`bool AC_GetCounterIgnoreZeros(int $InstanzID, int $VariablenID)`
_Benötigt Symcon >= 5.5_
holt den Status ob Nullen und negative Werte ignoriert werden
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variable
**Rückgabewert** (bool): True wenn Ignorieren von Nullen und negative Werte für die Variable aktiv ist, sonst False
ID der abzufragenden Variable
**Beispiel**
```php
// Abfrage der Variable "54321" aus dem ArchivControl "12345"
AC_GetCounterIgnoreZeros(12345, 54321);
```
## AC_GetGraphStatus
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-getgraphstatus/
`bool AC_GetGraphStatus(int $InstanzID, int $VariablenID)`
_Benötigt Symcon >= 3.0_
fragt ab ob eine Variable visualisiert wird
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variablen
**Rückgabewert** (bool): __True__ wenn die Visualisierung der Variable aktiv ist, sonst __False__
ID der abzufragenden Variablen
**Beispiel**
```php
// Abfrage der Variable "TestVariable"
var_dump(AC_GetGraphStatus(39147 /*[Archive]*/, 53716 /*[TestVariable]*/));
echo AC_GetGraphStatus(39147 /*[Archive]*/, 53716 /*[TestVariable]*/);
/* Beispielausgabe
var_dump:
bool(true)
echo:
1
*/
```
## AC_GetLoggedValues
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-getloggedvalues/
`array AC_GetLoggedValues(int $InstanzID, int $VariablenID, int $Startzeit, int $Endzeit, int $Limit)`
_Benötigt Symcon >= 3.0_
holt Rohdaten aus dem Archiv Control
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variablen
- `$Startzeit` (int): Datum/Zeit als Unix Zeitstempel. (0 = von Anfang an)
- `$Endzeit` (int): Datum/Zeit als Unix Zeitstempel. (0 = bis jetzt)
- `$Limit` (int): Maximale Anzahl an Datensätzen. (0 = Kein Limit, 10000 ist das harte Limit, welches immer greift)
**Rückgabewert** (array): Ein Array mit folgenden __key => value__ Paaren.
> **Hinweis:** Die Ausgabe startet mit dem neusten Datensatz und dann absteigend mit den älteren Datensätzen.
| Index | Typ | Beschreibung |
| ------------- | ------- | ------------------------------------------------------------ |
| __Duration__ | integer | Dauer in Sekunden, die der Datensatz gesetzt war |
| __TimeStamp__ | integer | Datum/Zeit beim Erstellen des Datensatzes als Unix Timestamp |
| __Value__ | variant | Wert |
Maximale Anzahl an Datensätzen. (0 = Kein Limit, 10000 ist das harte Limit, welches immer greift)
**Beispiel**
```php
//Den letzten Wert, der in der Datenbank gespeichert wurde, holen
$letzter_Wert = AC_GetLoggedValues(12345, 55554, 0, 0, 1)[0]['Value'];
//Alle Datensätze vom 01.01.2013 bis zum 07.01.2013 abfragen
$werte = AC_GetLoggedValues(12345, 55554, mktime(0, 0, 0, 1, 1, 2013), mktime(23, 59, 59, 1, 7, 2013), 0); //55554 ist die ID der Variable, 12345 vom Archiv Control
//Alle heutigen Datensätze abfragen
$werte = AC_GetLoggedValues(12345, 55554, strtotime("today 00:00"), time(), 0); //55554 ist die ID der Variable, 12345 vom Archiv Control
//Alle gestrigen Datensätze abfragen
$werte = AC_GetLoggedValues(12345, 55554, strtotime("yesterday 00:00"), strtotime("today 00:00")-1, 0); //55554 ist die ID der Variable, 12345 vom Archiv Control
//Dieser Teil erstellt eine Ausgabe im Skriptfenster mit den abgefragten Werten
foreach($werte as $wert) {
echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Value'] . PHP_EOL;
}
//Hilfsfunktion, die die Funktionsweise von IP-Symcon 2.x nachbildet
function AC_GetLoggedValuesCompatibility($instanceID, $variableID, $startTime, $endTime, $limit) {
$values = AC_GetLoggedValues($instanceID, $variableID, $startTime, $endTime, $limit );
if((sizeof($values) == 0) || (end($values)['TimeStamp'] > $startTime)) {
$previousRow = AC_GetLoggedValues($instanceID, $variableID, 0, $startTime - 1, 1 );
$values = array_merge($values, $previousRow);
}
return $values;
}
```
## AC_GetLoggingStatus
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-getloggingstatus/
`bool AC_GetLoggingStatus(int $InstanzID, int $VariablenID)`
_Benötigt Symcon >= 3.0_
fragt ab ob eine Variable geloggt wird
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variablen
**Rückgabewert** (bool): __True__ wenn Logging für die Variable aktiv ist, sonst __False__
ID der abzufragenden Variablen
**Beispiel**
```php
// Abfrage der Variable "TestVariable"
var_dump(AC_GetLoggingStatus(39147 /*[Archive]*/, 53716 /*[TestVariable]*/));
echo AC_GetLoggingStatus(39147 /*[Archive]*/, 53716 /*[TestVariable]*/);
/* Beispielausgabe
var_dump:
bool(true)
echo:
1
*/
```
## AC_ReAggregateVariable
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-reaggregatevariable/
`bool AC_ReAggregateVariable(int $InstanzID, int $VariablenID)`
_Benötigt Symcon >= 3.0_
startet die Reaggregation einer Variable
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der zu reaggregierenden Variable
**Rückgabewert** (bool): __True__ wenn erfolgreich, sonst __False__
ID der zu reaggregierenden Variable
**Beispiel**
```php
// Dies startet die Reaggregation der Variable "Testvariable"
AC_ReAggregateVariable(39147 /*[Archive]*/, 53716 /*[TestVariable]*/);
/* Beispielausgabe im Meldungsfenster
07.10.2015 15:50:05 | Archive Control | Reaggregation for VariableID #53716 is in progress... 10/2015! (6 rows)
07.10.2015 15:50:05 | Archive Control | Reaggregation for VariableID #53716 is complete! (6 rows)
*/
```
## AC_SetAggregationType
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-setaggregationtype/
`bool AC_SetAggregationType(int $InstanzID, int $VariablenID, int $Aggregationstyp)`
_Benötigt Symcon >= 3.0_
setzt den Aggregationstyp einer Variable
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der Variable bei der der Aggregationstyp gesetzt werden soll
- `$Aggregationstyp` (int)
| Aggregationstyp | Description |
| --------------- | ----------- |
| 0 | Standard |
| 1 | Counter |
**Rückgabewert** (bool): __True__ wenn erfolgreich, sonst __False__
| Aggregationstyp | Description |
| --------------- | ----------- |
| 0 | Standard |
| 1 | Counter |
**Beispiel**
```php
// Setzt den Aggregationtyp der Variable "TestVariable" auf 1 (Zähler)
AC_SetAggregationType(39147 /*[Archive]*/, 53716 /*[TestVariable]*/, 1);
```
## AC_SetCompaction
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-setcompaction/
`bool AC_SetCompaction(int $InstanzID, int $VariablenID, int $MonatsVersatz, int $Verdichtungstyp)`
_Benötigt Symcon >= 6.3_
Konfiguriert die Verdichtung der Variable
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der Variablen bei der die Verdichtung angepasst werden soll
- `$MonatsVersatz` (int): Nach wie vielen Monaten die Verdichtung angewandt werden soll; 0 = Nach Abschluß das aktuellen Monats, -1 = Werte direkt verdichten
- `$Verdichtungstyp` (int)
| Verdichtungstyp | Beschreibung |
| --------------- | --------------------------------------- |
| -1 | Verdichtung deaktivieren |
| 0 | Auf einen Wert pro Minute verdichten |
| 1 | Auf einen Wert pro 5 Minuten verdichten |
| 2 | Auf einen Wert pro Stunde verdichten |
| 3 | Auf einen Wert pro Tag verdichten |
| 4 | Auf einen Wert pro Woche verdichten |
| 5 | Auf einen Wert pro Monat verdichten |
| 6 | Auf einen Wert pro Jahr verdichten |
| 7 | Werte löschen |
**Rückgabewert** (bool): **True** wenn erfolgreich, sonst **False**
| Verdichtungstyp | Beschreibung |
| --------------- | --------------------------------------- |
| -1 | Verdichtung deaktivieren |
| 0 | Auf einen Wert pro Minute verdichten |
| 1 | Auf einen Wert pro 5 Minuten verdichten |
| 2 | Auf einen Wert pro Stunde verdichten |
| 3 | Auf einen Wert pro Tag verdichten |
| 4 | Auf einen Wert pro Woche verdichten |
| 5 | Auf einen Wert pro Monat verdichten |
| 6 | Auf einen Wert pro Jahr verdichten |
| 7 | Werte löschen |
**Beispiel**
```text
// Setzt das direkte Verdichten der Variable "TestVariable" auf 1 (Ein Wert pro 5 Minuten)
AC_SetCompaction(39147 /*[Archive]*/, 53716 /*[TestVariable]*/, -1, 1);
```
## AC_SetCounterIgnoreZeros
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-setcounterignorezeros/
`bool AC_SetCounterIgnoreZeros(int $InstanzID, int $VariablenID, bool $NullenIgnorieren)`
_Benötigt Symcon >= 5.5_
setzt den Status ob Nullen und negative Werte ignoriert werden
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variable
- `$NullenIgnorieren` (bool): True, wenn Nullen und negative Werte ignoriert werden sollen, sonst False.
**Rückgabewert** (bool)
True, wenn Nullen und negative Werte ignoriert werden sollen, sonst False.
**Beispiel**
```php
```
## AC_SetGraphStatus
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-setgraphstatus/
`bool AC_SetGraphStatus(int $InstanzID, int $VariablenID, bool $Aktiv)`
_Benötigt Symcon >= 3.0_
setzt die Eigenschaft zur Visualisierung einer Variable
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variablen
- `$Aktiv` (bool): True, wenn das Anzeigen der Variable in der Visualisierung aktiviert werden soll, sonst False.
**Rückgabewert** (bool): __True__ wenn erfolgreich, sonst __False__
True, wenn das Anzeigen der Variable in der Visualisierung aktiviert werden soll, sonst False.
**Beispiel**
```php
// Setzt die Eigenschaft der "Testvariable" zur Visualisierung auf true
AC_SetGraphStatus(39147 /*[Archive]*/, 53716 /*[TestVariable]*/, true);
```
## AC_SetLoggingStatus
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/ac-setloggingstatus/
`bool AC_SetLoggingStatus(int $InstanzID, int $VariablenID, bool $Aktiv)`
_Benötigt Symcon >= 3.0_
setzt die Eigenschaft zum Loggen einer Variable
**Parameter**
- `$InstanzID` (int): ID zum Archiv
- `$VariablenID` (int): ID der abzufragenden Variablen
- `$Aktiv` (bool): True, wenn das Logging der Variable aktiviert werden soll, sonst False.
**Rückgabewert** (bool): __True__ wenn erfolgreich, sonst __False__
True, wenn das Logging der Variable aktiviert werden soll, sonst False.
**Beispiel**
```php
// Setzt die Eigenschaft der "Testvariable" zum Loggen auf true
AC_SetLoggingStatus(39147 /*[Archive]*/, 53716 /*[TestVariable]*/, true);
```
## Datenformat
Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/archive-control/datenformat/
> **Hinweis:** Ab Version 4.0 von IP-Symcon werden CSV-Dateien zur Datenspeicherung genutzt. Zuvor wurde dies von einer MySQL Datenbank erledigt.
Das Archiv speichert zwei unterschiedliche Arten der Daten.
* Primär werden die Rohdaten gespeichert.
* Sekündar werden die nach Zeitraum (Jahr, Monat, Woche, Tag, Stunde) aggregierten Daten berechnet und geschrieben.
### CSV Struktur
* Alle Dateien haben die VariablenID im Namen und .csv als Dateiendung
* Rohdaten werden in eigenen Ordnern pro Jahr und pro Monat geschrieben
* Aggregationsdaten werden im DB Hauptordner gespeichert
* Dateien werden erst erstellt, sobald Daten vorhanden sind
* Das Dezimaltrennzeichen ist immer ein Punkt (.)
#### Rohdaten Inhalt
Ein Datensatz pro Zeile.
Daten sind durch Komma (,) voneinander getrennt.
* Unix-Zeitstempel
* Rohwert
> **Hinweis:** Die geloggten Rohwerte werden, unabhängig von der eingestellten Serverzeit, immer in UTC gespeichert.
> **Hinweis:** String-Werte werden Base64 kodiert gespeichert.
#### Rohdaten Verzeichnisstruktur
* db\2010\01\12345.csv
* db\2010\01\23456.csv
* db\2010\02\12345.csv
* db\2010\02\23456.csv
#### Inhalt Aggregationsdaten
Ein Datensatz pro Zeile.
Daten sind durch Komma (,) voneinander getrennt.
* Unix-Zeitstempel für Avg-Wert
* Avg-Wert
* Delta zum Unix-Zeitstempel für Min-Wert
* Min-Wert
* Delta zum Unix-Zeitstempel für Max-Wert
* Max-Wert
#### Aggregationsdaten Verzeichnisstruktur
* db\12345.year.csv
* db\12345.month.csv
* db\12345.week.csv
* db\12345.day.csv
* db\12345.hour.csv