Understanding queryHistoricData

Hallo Laksh,

ich kenne euren Systemaufbau nicht, aber OpenEMS unterscheidet eigentlich zwischen einem Timedata service, der historische Daten zur Verfügung stellt und einem Predictor, der prognostizierte Daten liefert.

Timedata wird z. B. verwendet, um im OpenEMS UI historische Daten anzuzeigen. Was du beschreibst klingt für mich eher nach Predictor, aber es kann natürlich sein, dass auch der aktuell nicht zu 100 % das abdeckt, was ihr braucht. Wenn ihr mit Timedata zurecht kommt, ist das also auch ok.

Wie @Reference in OpenEMS mit OSGi Declarative Services funktioniert, habe ich an anderer Stelle erklärt:

Diesen @Reference-Annotationen kann man auch einen target Filter geben. Dieser sorgt dann dafür, dass nur ganz bestimmte Services injiziert werden.

Hier etwas zu target in der Spezifikation:
http://docs.osgi.org/specification/osgi.cmpn/7.0.0/service.component.html#service.component-target.property

OpenEMS verwendet an einigen Stellen diese expliziten Filter. Beispiel: der “ESS Fix Active Power Controller” arbeitet immer mit einem anhand seiner Component-ID klar definierten Speichersystem. Dazu schreibt die Methode OpenemsComponent.updateReferenceFilter() die target Property so, dass nur die Komponente mit dieser ID akzeptiert wird.

https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.controller.ess.fixactivepower/src/io/openems/edge/controller/ess/fixactivepower/EssFixActivePowerImpl.java#L64-L65

Das gleiche Prinzip lässt sich auch auf Timedata anwenden, wenn ein ganz bestimmter Timedata Service notwendig ist.

War das verständlich erklärt?

Gruß,
Stefan