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.
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