Archive Handler vs. Archive Control

Hallo,

bin etwas irritiert…ich möchte aus dem Archiv aggregierte Daten mit AC_GetAggregatedValues() auslesen. Dazu benötigt man lt. Doku die ID des ArchivHandlers. Wenn ich in mein Archiv schaue, finde ich dort jedoch „nur“ ein „Archive Control“. Wurde die Namensgebung geändert oder fehlt in meinem System etwas? Was mache ich falsch?

Danke und Gruß

wolkensurfer

Korrekt. Da ist noch ein Namensfehler drin. Werden wir korrigieren.

paresy

Hallo paresy,

Danke für Deine Antwort.

Nun möchte ich die ID des Archive Control mit IPS_GetInstanceIDByName() erhalten (Ausschnitt aus einem kleinen Skript:

$ID_Handler = IPS_GetInstanceIDByName('Archive Control',0);

ergibt folgende Fehlermeldung:

Warning: Objekt Archive Control wurde nicht gefunden in C:\IP-Symcon\scripts\18696.ips.php on line 9

Was mache ich falsch?

wolkensurfer

Nimm bitte entweder direkt die ID oder ermittle das Archiv anhand dieser Funktion: IPS_GetInstanceListByModuleID — IP-Symcon :: Automatisierungssoftware

Die ModulID findest du hier: IPS_GetModuleList — IP-Symcon :: Automatisierungssoftware

paresy

Ok, habe jetzt die ID des Archive Control direkt verwendet und damit klappt es.

paresy, kannst Du mir bitte kurz erklären, warum ich die Funktion IPS_GetInstanceIDByName() an dieser Stelle nicht einsetzen kann?

Danke Dir!

wolkensurfer

Welchen Namen hat denn dein Archive Control ?
Meins heißt z.B. ‚Archive Handler‘.

Michael

Hallo Michael,

das Archiv hat den Namen „Archiv“ und ist vom Typ „Archive Control“, wobei das alles Werte sind, die bei der Installation von IPS selbstständig vergeben wurden.

wolkensurfer

Daran zweifele ich… siehe meine Antwort anno dazumal
"Wenn nicht umbenannt, dann sollte dort (Standort/Objekt) „Archive Handler“ stehen
http://www.ip-symcon.de/forum/threads/16807-Archiv-Fehler-nach-Update-2-4-2-5?p=147912#post147912

Und was musst du dann wohl bei IPS_GetInstanceIDByName eintragen? :wink:
Michael

@nancilla:
Uups…dann werde ich wohl doch bei der Installation von IPS den Namen geändert haben.

@Nall chan:
Manchmal ist es so einfach…jetzt geht es :slight_smile:

Euch Beiden ein herzliches Dankeschön für die Unterstützung.

wolkensurfer

… hoffe alle sind damit einverstanden :slight_smile:

Nach eine Nachfrage zu diesem Thema:

paresy hatte ja im Post #4 weiter oben geschrieben, dass ich die ID besser über IPS_GetInstanceListByModuleID() auslesen soll. Kann mir bitte einer von euch Cracks begründen bzw. erklären, warum das der bessere Weg ist?

wolkensurfer

Ich bin einverstanden ;).

Kann ich dir auch nicht erklären (außer paresy ist auch nur ein Mensch :slight_smile: )… sonst verwirrte mich das genauso…:confused:

Ich hätte da so eine Vermutung.
Alles mit GetXxxIDByName ist immer etwas ‚böse‘, wie wir gesehen haben ist der Name schnell mal geändert. Die ID bleibt aber immer gleich (außer du löscht das Control, aber wozu?).
Und da es auch immer nur ein Archive Control gibt, ist ListByModuleID genauso elegant wie die feste ID.
Michael

Das klingt für mich plausibel…vielen Dank dafür!

wolkensurfer

Die Version mit der ID ist natürlich für dich die Beste und auch rein von der Performance gesehen perfekt.

Da du am Anfang aber nach der ByName Funktion gefragt hast, ging ich davon aus, dass du evtl. ein Skript machen willst, welches bei allen Usern läuft. Und die ID ist eben bei jedem User anders. Und der Name ist leider doof, weil ja jeder das Archiv umbenennen kann. Wenn du dir aber alle Archive auflisten lässt über die ModulID, dann bekommst du eine ID zum Archiv egal bei welchem IP-Symcon. So macht es intern auch die Verwaltungskonsole :slight_smile:

paresy

Vielen Dank paresy für Deine Erklärung.

Gruß

wolkensurfer