Implement SMA STP-10.0 SE Hybrid ESS#2618
Conversation
clehne
left a comment
There was a problem hiding this comment.
Locks good to me. Please see my comment.
io.openems.edge.ess.sma/readme.adoc
Outdated
| - SinglePhaseEss | ||
| - ManagedSinglePhaseEss | ||
|
|
||
| == SMA STP 10.0 SE |
There was a problem hiding this comment.
Maybe we could name it "SMA STP 10.0 Smart Energy"
| sma.applyPower(setActivePower, setReactivePower); | ||
| return; | ||
| } | ||
| this.logError(this.log, "Failed to run inverter. Battery is not SMA battery."); |
There was a problem hiding this comment.
Please remove log output and replace with a new fault state channel, e.g. WRONG_BATTERY
|
|
||
| @Override | ||
| public String debugLog() { | ||
| return "|L:" + this.getActivePower().asString(); // |
There was a problem hiding this comment.
You could consider using the method
Battery.generateDebugLog(this, this.stateMachine);
here
|
Is this something you are actively working on? I believe (better) SMA support would be generally nice to have in OpenEMS.
It sounds like bad abstraction if they only work in this combination anyway. If Modbus Unit-ID is your only problem, we should be able to find an alternative - see e.g. https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.ess.byd.container/src/io/openems/edge/ess/byd/container/Config.java#L23-L30 |
Yes, we are actively working on this, and we have such an inverter in use on a productive system. Best regards, |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #2618 +/- ##
=============================================
+ Coverage 59.45% 59.51% +0.07%
Complexity 112 112
=============================================
Files 2914 2922 +8
Lines 125438 126028 +590
Branches 9392 9410 +18
=============================================
+ Hits 74566 74995 +429
- Misses 48038 48183 +145
- Partials 2834 2850 +16 🚀 New features to boost your workflow:
|
Smart Mode introduced
|
Backported changes we had done, mainly:
Regarding the problem with the two different Unit-IDs, I have a suggestion but neither time to implement it nor do I know if it's really a good idea. It is as follows: The Unit-ID should not be part of the Modbus component, but rather be part of the Modbus task, as it is really part of the request, like you see here. So the constructor of the |
|
This PR has been automatically marked as stale due to inactivity. It will be closed in 7 days if no further activity occurs. |
|
I would like to add a similar setup to my OpenEMS setup, so I wanted to ask what is missing for this PR to be merged, apart from additional test coverage. Maybe I could find the time to help. |
# Conflicts: # io.openems.edge.ess.sma/readme.adoc # io.openems.edge.ess.sma/src/io/openems/edge/ess/sma/enums/OperatingModeForActivePowerLimitation.java # io.openems.edge.ess.sma/src/io/openems/edge/ess/sma/enums/OperationHealth.java # io.openems.edge.ess.sma/src/io/openems/edge/ess/sma/enums/PowerSupplyStatus.java # io.openems.edge.ess.sma/src/io/openems/edge/ess/sma/enums/SetControlMode.java # io.openems.edge.ess.sma/src/io/openems/edge/ess/sma/enums/SystemState.java # io.openems.edge.ess.sma/src/io/openems/edge/ess/sma/sunnyisland/Config.java # io.openems.edge.ess.sma/src/io/openems/edge/ess/sma/sunnyisland/EssSmaSunnyIsland.java # io.openems.edge.ess.sma/src/io/openems/edge/ess/sma/sunnyisland/EssSmaSunnyIslandImpl.java # io.openems.edge.ess.sma/src/io/openems/edge/sma/enums/OperatingModeForActivePowerLimitation.java # io.openems.edge.ess.sma/src/io/openems/edge/sma/enums/OperationHealth.java # io.openems.edge.ess.sma/src/io/openems/edge/sma/enums/PowerSupplyStatus.java # io.openems.edge.ess.sma/src/io/openems/edge/sma/enums/SetControlMode.java # io.openems.edge.ess.sma/src/io/openems/edge/sma/enums/SystemState.java # io.openems.edge.ess.sma/src/io/openems/edge/sma/sunnyisland/Config.java # io.openems.edge.ess.sma/src/io/openems/edge/sma/sunnyisland/EssSmaSunnyIsland.java # io.openems.edge.ess.sma/src/io/openems/edge/sma/sunnyisland/EssSmaSunnyIslandImpl.java # io.openems.edge.ess.sma/test/io/openems/edge/ess/sma/sunnyisland/EssSmaSunnyIslandImplTest.java # io.openems.edge.ess.sma/test/io/openems/edge/ess/sma/sunnyisland/MyConfig.java # io.openems.edge.ess.sma/test/io/openems/edge/sma/sunnyisland/EssSmaSunnyIslandImplTest.java # io.openems.edge.ess.sma/test/io/openems/edge/sma/sunnyisland/MyConfig.java # io.openems.edge.sma/bnd.bnd # io.openems.edge.sma/src/io/openems/edge/sma/ess/sunnyisland/Config.java # io.openems.edge.sma/src/io/openems/edge/sma/ess/sunnyisland/EssSmaSunnyIsland.java # io.openems.edge.sma/src/io/openems/edge/sma/ess/sunnyisland/EssSmaSunnyIslandImpl.java # io.openems.edge.sma/src/io/openems/edge/sma/ess/sunnyisland/enums/OperatingModeForActivePowerLimitation.java # io.openems.edge.sma/src/io/openems/edge/sma/ess/sunnyisland/enums/OperationHealth.java # io.openems.edge.sma/src/io/openems/edge/sma/ess/sunnyisland/enums/PowerSupplyStatus.java # io.openems.edge.sma/src/io/openems/edge/sma/ess/sunnyisland/enums/SetControlMode.java # io.openems.edge.sma/src/io/openems/edge/sma/ess/sunnyisland/enums/SystemState.java # io.openems.edge.sma/test/io/openems/edge/sma/ess/sunnyisland/EssSmaSunnyIslandImplTest.java # io.openems.edge.sma/test/io/openems/edge/sma/meter/shm20/MyConfig.java
sfeilmeier
left a comment
There was a problem hiding this comment.
- Moved implementation to combined
io.openems.edge.smabundle - BREAKING CHANGE: unified factory PIDs
Everything should still work - but I cannot validate the implementation myself and the JUnit tests are very basic.
Implementation of SMA STP 10.0 Hybrid ESS.
The implementation is split into Battery, Inverter and DC Charger. The inverter only works with that battery, but the implementation had to be split up as the devices use different Modbus Unit IDs.
The components are located in the existing bundle
io.openems.edge.ess.sma. Note that the other packages were renamed toio.openems.edge.ess.sma.sunnyislandandio.openems.edge.ess.sma.enums.