Wie Sunspec Battery-Inverter konfigurieren?

Hallo Forum,

Seit heute habe ich zu meinem Solaredge WR auch eine Batterie-System vom gleichen Hersteller installiert. Mir ist nicht ganz klar, wie ich an die Informationen zur Batterie gelangen soll. Es gibt ein Modul batteryinverter.sunspec - dieses kann im UI aber nicht ausgewählt werden.

Was mache ich hier falsch?
Gruß,
klinki

Hallo Klinki,

AbstractSunSpecBatteryInverter ist eine abstrakte Klasse. Daher kannst du den nicht über die UI einbinden. Du benötigst eine konkrete Implementierung davon. Eine solche ist z.B. KacoBlueplanetGridsaveImpl. Das könnte ein guter Einsprungpunkt sein. Allerdings ist das ein recht aufwendiges Bundle. Evtl. gibt es noch andere einfachere Implementierungen.
VG Christian

Hi Christian,

Danke für den Tipp. Ich hab´s mit dem Kaco versucht - aber das kriege ich nicht hin.
Meine Idee: das Modul für den SolarEdge WR um die entsprechenden Register erweitern, also SunSpec 801,802. Über ein Python-Skript kommen über diese Module die richtigen Werte.
Frage: reicht es die entsprechenden Channels für die Batterie zu füttern damit im UI das Batterie-Gerät angezeigt wird?

Gruß,
Klinki

Ich hoffe, ich verstehe das richtig:

OpenEMS geht durch die definierten SunSpecModels, liest ID und Länge aus und ordnet anhand der Default-Channel-IDs die ausgelesenen Werte den Channels zu. Anscheinend liefert mein WR für Model 802 aber nicht die ID zurück und es können so keine Zuordnungen gemacht werden.
D.h. ich müsste für meinen WR eine eigene Model-Definition machen, nicht wahr? (Ähnlich wie bei der Kaco-Implementierung)
Bisher habe ich aber noch nicht herausfinden können wo ich die (Modbus-)Start-Adresse für das zu erstellende SunSpecModel hinterlegen kann.
Kann mir vielleicht jemand einen Tipp geben?

Gruß
klinki

Die Startadresse muss (und kann) nirgendwo hinterlegt werden, weil sie davon abhängt, welche Modelle dein Gerät sonst noch erfüllt. Eigentlich sollte es funktionieren, wenn du das Modell S802 einfach in die ACTIVE_MODELS der Komponente hinzufügst.
Wenn es Modell S802 noch nicht gibt in OpenEMS, muss es vorher noch generiert werden. Das kann man irgendwie generieren lassen, da weiß ich aber auch nicht, wie das geht…

Model 802 ist in OpenEMS vorhanden. Das Problem ist anscheinend, dass die Register von Solaredge von 802 teilweise abweichen, die Model-ID nicht ausgewiesen wird und OpenEMS die Werte folglich nicht einlesen kann.
Ich fürchte, dass meine einzige Chance das händische Auslesen der entsprechenden Modbus-Register ist.

Ich versuche mich gerade daran die Modbus-Werte zu meinem Speicher aus dem Wechselrichter zu lesen.
lt. Dokumentation soll das Register für den SOC ein Float32 sein und den prozentualen Wert anzeigen. In OpenEMS lese ich mit:

m(RefuStore88kChannelId.SO_C, new FloatDoublewordElement(SUNSPEC_802 + 62)) // 57732

in der Beschreibung des Channels habe ich es mit

SO_C(Doc.of(OpenemsType.INTEGER).unit(Unit.NONE).accessMode(AccessMode.READ_ONLY)),

versucht, auch mit FLOAT und der Unit PERCENT. Die resultierenden Werte sind definitiv falsch (z.B. 2,2…E-41 oder 170306).

Möglicherweise liegt es an der ByteOrder - aus den Beispielen bin ich bisher aber nicht schlau geworden.

Wie kann ich eigentlich herausfinden welche Werte überhaupt für die Anzeige des BMS benötigt werden? Aktuell würde mir eine Anzeige völlig reichen - eine Steuerung wäre der nächste Schritt.

Gruß
Klinki

Zur Info an alle, die mitgelesen haben. Die Diskussion dazu ging in diesem Thread weiter:

SolarEdge arbeitet anscheinend für die Batteriedaten nicht mit SunSpec. Ich hätte einen Pull-Request vorbereitet für ein “SunSpec Energy Storage System”, habe aber kein System um das praktisch auszuprobieren → WIP: Implementation of a SunSpec ESS applied for SolarEdge Home by sfeilmeier · Pull Request #1989 · OpenEMS/openems · GitHub

Gruß,
Stefan