Seite 1 von 1

Metadaten per Script abfragen

Verfasst: 15.03.2024, 14:47
von zap
Es gibt die RPC Funktion getMetadata in der CCU, mit der zu einem Gerät gespeicherte Informationen (z.B. Energiezähler) ausgelesen werden können.

Diese Funktion benötigt als Parameter eine (Kanal) Adresse und einen Daten-ID. Leider ist die Daten-ID nicht bekannt. Für BidCos gibt es eine RPC Funktion getAllMetaData, mit der alle Metadaten zu einer Adresse geholt werden können. Leider fehlt diese Funktion bei HmIP.

Gibt es eine Art Enum-Methode, mit der man alle Metadaten zu einem Gerät unabhängig vom Protokoll auslesen kann?

Re: Metadaten per Script abfragen

Verfasst: 15.03.2024, 14:54
von Baxxy
Was genau / welche Daten willst du denn auslesen?

Re: Metadaten per Script abfragen

Verfasst: 15.03.2024, 15:48
von zap
Es gibt z.B. den Energiezähler HmIP-ESI. Der hat zwar normale Datenpunkte für den Energycounter, die Werte für 7 oder 30 Tage werden aber wohl als Metadaten gespeichert.

Im Prinzip lässt sich das recht einfach nutzen, z.B. mit (RPC Methoden)

putMetadata (Adresse, "meinEnergyCounter", 1000)

und auslesen mit

getMetadata (Adresse, "meinEnergyCounter")

Ich weiß jedoch nicht, unter welchem Namen (wie "meinEnergyCounter") EQ-3 diese Messdaten ablegt. Daher die Hoffnung, dass es eine Art Enum Funktion für diese Namen gibt.

Re: Metadaten per Script abfragen

Verfasst: 15.03.2024, 16:36
von Baxxy
Ich glaube du bist auf dem Holzweg.
Die XML-Metadaten sind was anderes wie die ReGa-Metadaten.
Soll heißen man kann per getMetadata nicht auf die ReGa-Metadaten zugreifen.

Letztere werden für die erweiterten Energiezähler genutzt.
Beispiel gibt es hier im Script, da habe ich die Metadaten benutzt:
viewtopic.php?f=60&t=80952&start=10&hilit=psm

Re: Metadaten per Script abfragen

Verfasst: 15.03.2024, 19:18
von zap
Danke! Es geht tatsächlich um die Rega Metadaten:

Dump der Metadaten eines Kanals:

Code: Alles auswählen

object chnObj = channels.Get("MyChannelName");
string dataIdList = chnObj.EnumMetaData();
string dataId;
foreach (dataId, dataIdList.Split(' ')) {
  string metaVal = chnObj.MetaData(dataId);
  WriteLine(dataId # '=' # metaVal);
}