ACTIVE_POWER vs. SET_ACTIVE_POWER

Hallo und Guten Morgen

Ich habe eine kurze Frage:
Ist ACTIVE_POWER der Kanal auf dem die aktuelle Leistung des ESS liegt
und wird in diesen Kanal geschrieben wenn man_setActivePower() aufruft?

Der Kanal gehört ja SymmetricEss.ChannelId.

Das ist nämlich etwas verwirrend, weil viele ESS-Implementierungen in den Kanal SET_ACTIVE_POWER die geforderte Leistung schreiben.

Eine kurze Erklärung dazu wäre toll.

Sebastian

Hallo Sebastian,

ACTIVE_POWER ist read-only, also die von der Ess gelesene Leistung, und SET_ACTIVE_POWER die geforderte Leistung, und sollte auch nur im ManagedSymmetricEss zu finden sein (bzw. eher SET_ACTIVE_POWER_EQUALS,…). Die Methode _setActivePower ist zur internen Benutzung, um den von der Ess gelesenen Wert in den OpenEMS-Channel zu schreiben und wird nicht genutzt, um eine Vorgabe an das Ess zu machen.

Beste Grüße,
Thomas

m.W. wird die geforderte Leistung ausschließlich der applyPower()-Methode übergeben. Ein ManagedSymmetricEss setzt die Implementierung der Methode vorraus.
Stefan hatte das hier schon ganz gut aufgedröselt.
Ich bin (natürlich) auch darüber gefallen :wink:

Gruß
klinki

Ja, ihr habt recht. Ich fasse das mal so zusammen:

SymmetricEss stellt den Channel ACTIVE_POWER bereit, in dem man die tatsächliche Leistung seines eigenen ESS schreiben muss (sonst weiß z.B. UI, oder ein Controller nichts davon)

Dazu stellt SymmetricEss die (Convenience-) Funktion _setActivePower() bereit.

Analog dazu:
ManagedSymmetricEss stellt den Channel SET_ACTIVE_POWER_EQUALS bereit, in dem man die geforderte Leistung schreiben kann.

Dazu stellt ManagedSymmetricEss die (Convenience-) Funktion setActivePowerEquals() bereit.


Die Verwirrung entsteht, weil viele Implementierungen den definierten Channel SET_ACTIVE_POWER_EQUALS ignorieren und einen eigenen Channel definieren.
Der heißt dann oft SET_ACTIVE_POWER.

@Stefan, falls Du mitgelesen hast.
Kannst Du das so bestätigen?