## Methods

destroy()
getData(startDate, blockCount, blockSize, columnList, callback)
getKey()

getMeta(callback)
getStartDateFromDays(hours)
getStartDateFromHours(hours)

getStartDateFromWeeks(hours)

## Abstract types

getDataCallback(err, data)

getMetaCallback(err, data)

## new _DataArchive()

Datenarchiv.
Darf nicht direkt instanziert werden. Eine Instanz der Klasse wird von der Methode HomeServerConnector._Connection#getDataArchive erzeugt.

### Example

    var da = conn.getDataArchive("DA@MyDataArchive", function(err, data) {});

## Methods

### destroy()

Gibt das Objekt frei und hebt ein eventuell vorhandes Abonnement auf.

#### Example

    da.destroy();

### getData(startDate, blockCount, blockSize, columnList, callback)

Ruft eine Auswahl von Daten aus dem Archiv ab. Die Auswahl wird über die Parameter spezifiziert.

#### Examples

Abruf der Archiv-Spalten 1, 3 und 4 vom 01.01.2016, ab 14:00 für einen Zeitraum von 60 Minuten: 30 Einträge, von denen jeder die Werte aus 2 Minuten zusammenfasst.

    var startDate = new Date(2016, 0, 1, 14, 0);  // 01.01.2016 14:00
    da.getData(startDate, 30, 2, ['#1', '#3', '#4'], function(err, data) {});

Abruf der Archiv-Spalten mit den Spaltentiteln "TARGET" und "ACTUAL" für einen Zeitraum, der vor 12 Stunden begann und 6 Stunden dauert: 24 Einträge, von denen jeder die Werte aus 15 Minuten zusammenfasst.

    var startDate = da.getStartDateFromHours(12);  // NOW - 12 hours
    da.getData(startDate, 24, 15, ['TARGET', 'ACTUAL'], function(err, data) {});

#### Parameters

Name | Type | Optional | Description
--- | --- | --- | ---
startDate | Date |  | Datum-Objekt. Start-Zeitpunkt ab dem die Daten geliefert werden sollen.
blockCount | Number |  | Anzahl der Datenblöcke die ausgeliefert werden sollen.
blockSize | Number |  | Größe eines Datenblocks (in Minuten).
columnList | Array |  | Liste von Spalten die angezeigt werden sollen. Entweder werden hier Schlüssel oder Indizes aufgelistet. Handelt es sich um einen Index, muss dem Wert ein '#' vorangestellt werden. Die Indizes entsprechen den von links nach rechts laufend durchnummerierten Spalten des Archivs, beginnend mit '1'.
callback | function() |  | HomeServerConnector._DataArchive~getDataCallback

### getKey() → String

Liefert den Schlüssel des Objekts zurück.

#### Example

    var object_key = da.getKey();

Returns

  `String`

### getMeta(callback)

Ruft die Meta-Daten ab.

#### Example

Abruf der Meta-Daten

    da.getMeta(function(err, data) {});

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
callback | function() |  | HomeServerConnector._DataArchive~getMetaCallback

### getStartDateFromDays(hours) → Date

Liefert einen für den Archiv-Abruf getData() korrekt formatierten 'Start-Datum'-String. Übergeben wird eine Tages-Anzahl. Das erzeugte Datum ist JETZT - Tages-Anzahl

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
hours | Number |  | Anzahl Tage, die vom aktuellen Zeitpunkt abgezogen werden.

Returns

  `Date` Datum.

### getStartDateFromHours(hours) → Date

Liefert einen für den Archiv-Abruf getData() korrekt formatierten 'Start-Datum'-String. Übergeben wird eine Stunden-Anzahl. Das erzeugte Datum ist JETZT - Stunden-Anzahl

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
hours | Number |  | Anzahl Stunden, die vom aktuellen Zeitpunkt abgezogen werden.

Returns

  `Date` Datum.

### getStartDateFromWeeks(hours) → Date

Liefert einen für den Archiv-Abruf getData() korrekt formatierten 'Start-Datum'-String. Übergeben wird eine Wochen-Anzahl. Das erzeugte Datum ist JETZT - Wochen-Anzahl

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
hours | Number |  | Anzahl Wochen, die vom aktuellen Zeitpunkt abgezogen werden.

Returns

  `Date` Datum.

## Abstract types

inner

### getDataCallback(err, data)

#### Examples

Abruf der Archiv-Spalten 1, 3 und 4 vom 01.01.2016, ab 14:00 Uhr für einen Zeitraum von 60 Minuten: 30 Einträge, von denen jeder die Werte aus 2 Minuten zusammenfasst.

    var startDate = new Date(2016, 0, 1, 14, 0);  // 01.01.2016 14:00
    da.getData(startDate, 30, 2, ['#1', '#3', '#4'], function(err, data) {});

Abruf der Archiv-Spalten mit den Spaltentiteln "TARGET" und "ACTUAL" für einen Zeitraum, der vor 12 Stunden begann und 6 Stunden dauert: 24 Einträge, von denen jeder die Werte aus 15 Minuten zusammenfasst.

    var startDate = da.getStartDateFromHours(12);  // NOW - 12 hours
    da.getData(startDate, 24, 15, ['TARGET', 'ACTUAL'], function(err, data) {});

    # Structure of the returned 'data' object with example values for the above call in the 2nd example
        {
          "columns": {
            "ACTUAL": {
              "sum": [31, 32, 31, 33],
              "cnt": [2, 2, 2, 2],
              "min": [15, 16, 15, 16],
              "max": [16, 16, 16, 17]
            },
            "TARGET": {
              "sum": [34, 34, 34, 34],
              "cnt": [2, 2, 2, 2],
              "min": [17, 15, 17, 17],
              "max": [17, 19, 17, 17]
            },
          }
        }

#### Parameters

Name | Type | Optional | Description
--- | --- | --- | ---
err | (Object or undefined) |  | Fehler-Objekt
data | Object |  | Archiv-Informationen #### Struktur
    {
      "columns": {
        "COLUMN_KEY": {
          "sum": Array of Number,
          "cnt": Array of Number,
          "min": Array of Number,
          "max": Array of Number,
        }
      }
    }
#### Erklärung columns - Objekt, enthält alle angefragten Spalten als Schlüssel. COLUMN_KEY - Objekt, enthält Informationen zur angefragten Spalte. Wird für jede abgefragte Spalte genau einmal zurückgegeben. Der Platzhalter COLUMN_KEY wird dabei durch den im Experte vergebenen Spaltentitel ersetzt. Die Anzahl der Listeneinträge ist bei den folgenden 4 Listen gleich groß und entspricht der abgefragten Anzahl an Blockeinträgen (blockCount) sum - Liste mit Summen. Jeder Listeneintrag entspricht der Summe aller Werte, die innerhalb eines Blocks (Block-Zeitraums) aufgezeichnet wurden. cnt - Liste mit Anzahlen. Jeder Listeneintrag entspricht der Anzahl der Werte, die innerhalb eines Blocks (Block-Zeitraums) aufgezeichnet wurden. min - Liste mit Minimal-Werten. Jeder Listeneintrag enthält den kleinsten aller Werte, die innerhalb eines Blocks (Block-Zeitraums) aufgezeichnet wurden. max - Liste mit Maximal-Werten. Jeder Listeneintrag enthält den größten aller Werte, die innerhalb eines Blocks (Block-Zeitraums) aufgezeichnet wurden.

inner

### getMetaCallback(err, data)

#### Example

Abruf der Meta-Daten

    da.getMeta(function(err, data) {});

#### Parameters

Name | Type | Optional | Description
--- | --- | --- | ---
err | (Object or undefined) |  | Fehler-Objekt
data | Object |  | Meta-Informationen #### Struktur
    {
      "keys":        Array of String,
      "caption":     String,
      "description": String,
      "tags":        Array of String,
      "size":        Number,

      "stat": {
          "first":   Number,
          "last":    Number,
          "count":   Number
      },

      "cols": [
        {
          "idx":     Number,
          "key":     String,
          "caption": String
        }
      ]
    }
#### Erklärung keys - Liste mit Schlüsseln (z.B.: `["DA:2", "DA@MyDataArchive"]`). Enthält mindestens einen Eintrag. caption - Bezeichnung des Objekts. description - Beschreibung des Objekts. tags - Liste von Tags (z.B.: `["BM", "Light"]`). size - Maximale Größe des Ringpuffers. stat - Objekt, enthält Informationen über den Inhalt des Archivs. first - Unix-Zeitstempel (in Sekunden, Millisekunden als Kommawert) des ältesten Eintrags im Archiv. last - Unix-Zeitstempel (in Sekunden, Millisekunden als Kommawert) des jüngsten Eintrags im Archiv. count - Anzahl der Einträge im Archiv. cols - Liste der Spalten-Objekte. idx - Index der Spalte. key - Schlüssel der Spalte. caption - Bezeichnung der Spalte.