Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement KACO Blueplanet Hybrid 10 (#1966)
# KACO Blueplanet Hybrid 10 ## Implemented Components: * *Kaco.BlueplanetHybrid10.Core* * This component is always required to establish the communication to the hardware device. * *Kaco.BlueplanetHybrid10.Ess* * This implements the Energy Storage System part (i.e. `ManagedSymmetricEss`) for read-only (fast internal control) or read-write (slow external control) * *Kaco.BlueplanetHybrid10.Charger* * This implements the DC Charger/MPP tracker for the photovoltaics system (i.e. `EssDcCharger`). Note that there is only one instance for both MPP trackers, because the inverter does not provide separated power values. * *Kaco.BlueplanetHybrid10.PvInverter* * This implements the inverter as a pure photovoltaics inverter (i.e. `ManagedSymmetricPvInverter`). Use this instead of Ess+Charger, if you are using the inverter purely as PV inverter without a battery. * *Kaco.BlueplanetHybrid10.GridMeter* * This implements the grid meter (product name "VECTIS" or "blueplanet hy-switch") connected to the inverter (i.e. `AsymmetricMeter`) ## License/Dependencies NOTE: *The configuration of the Kaco.BlueplanetHybrid10.Core Component requires an `identkey`. This relates to the "Partner ID" that has to be acquired from Katek Memmingen GmbH. Without the `identkey` it is not possible to establish a communication with the hardware device.** This bundle is provided under the EPL (Eclipse Public License), but it depends on the Katek EDCOM library under `io.openems.edge.katek.edcom`, which is licensed as LGPL (GNU Lesser General Public License) by Katek Memmingen GmbH. ## Product page: https://kaco-newenergy.com/de/produkte/blueplanet-hybrid-10.0-TL3/ --- # Katek EDCOM Library EDCOM 8.1 is a java cross platform library for communication with 10kW hybrid Inverter. Java code provided by Katek Memmingen GmbH under the GNU LPGLv3.0. Converted to Java 11 compatible code and packaged as OpenEMS Edge bundle by FENECON GmbH.
- Loading branch information
1 parent
a50b1e6
commit d1aabf3
Showing
83 changed files
with
10,517 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<classpath> | ||
<classpathentry kind="con" path="aQute.bnd.classpath.container"/> | ||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/> | ||
<classpathentry kind="src" output="bin" path="src"/> | ||
<classpathentry kind="src" output="bin_test" path="test"> | ||
<attributes> | ||
<attribute name="test" value="true"/> | ||
</attributes> | ||
</classpathentry> | ||
<classpathentry kind="output" path="bin"/> | ||
</classpath> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
/bin/ | ||
/bin_test/ | ||
/generated/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<projectDescription> | ||
<name>io.openems.edge.kaco.blueplanet.hybrid10</name> | ||
<comment></comment> | ||
<projects> | ||
</projects> | ||
<buildSpec> | ||
<buildCommand> | ||
<name>org.eclipse.jdt.core.javabuilder</name> | ||
<arguments> | ||
</arguments> | ||
</buildCommand> | ||
<buildCommand> | ||
<name>bndtools.core.bndbuilder</name> | ||
<arguments> | ||
</arguments> | ||
</buildCommand> | ||
</buildSpec> | ||
<natures> | ||
<nature>org.eclipse.jdt.core.javanature</nature> | ||
<nature>bndtools.core.bndnature</nature> | ||
</natures> | ||
</projectDescription> |
2 changes: 2 additions & 0 deletions
2
io.openems.edge.kaco.blueplanet.hybrid10/.settings/org.eclipse.core.resources.prefs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
eclipse.preferences.version=1 | ||
encoding/<project>=UTF-8 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
Bundle-Name: OpenEMS Edge KACO blueplanet hybrid 10.0 TL3 | ||
Bundle-Vendor: KACO new energy GmbH, FENECON GmbH | ||
Bundle-License: https://opensource.org/licenses/EPL-2.0 | ||
Bundle-Version: 1.0.0.${tstamp} | ||
|
||
-buildpath: \ | ||
${buildpath},\ | ||
io.openems.common,\ | ||
io.openems.edge.common,\ | ||
io.openems.edge.ess.api,\ | ||
io.openems.edge.katek.edcom,\ | ||
io.openems.edge.meter.api,\ | ||
io.openems.edge.pvinverter.api,\ | ||
io.openems.edge.timedata.api,\ | ||
javax.jmdns,\ | ||
|
||
-testpath: \ | ||
${testpath} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
= KACO Blueplanet Hybrid 10 | ||
|
||
== Implemented Components: | ||
|
||
* *Kaco.BlueplanetHybrid10.Core* | ||
** This component is always required to establish the communication to the hardware device. | ||
|
||
* *Kaco.BlueplanetHybrid10.Ess* | ||
** This implements the Energy Storage System part (i.e. `ManagedSymmetricEss`) for read-only (fast internal control) or read-write (slow external control) | ||
|
||
* *Kaco.BlueplanetHybrid10.Charger* | ||
** This implements the DC Charger/MPP tracker for the photovoltaics system (i.e. `EssDcCharger`). Note that there is only one instance for both MPP trackers, because the inverter does not provide separated power values. | ||
|
||
* *Kaco.BlueplanetHybrid10.PvInverter* | ||
** This implements the inverter as a pure photovoltaics inverter (i.e. `ManagedSymmetricPvInverter`). Use this instead of Ess+Charger, if you are using the inverter purely as PV inverter without a battery. | ||
|
||
* *Kaco.BlueplanetHybrid10.GridMeter* | ||
** This implements the grid meter (product name "VECTIS" or "blueplanet hy-switch") connected to the inverter (i.e. `AsymmetricMeter`) | ||
|
||
== License/Dependencies | ||
|
||
NOTE: *The configuration of the Kaco.BlueplanetHybrid10.Core Component requires an `identkey`. This relates to the "Partner ID" that has to be acquired from Katek Memmingen GmbH. Without the `identkey` it is not possible to establish a communication with the hardware device.** | ||
|
||
This bundle is provided under the EPL (Eclipse Public License), but it depends on the Katek EDCOM library under `io.openems.edge.katek.edcom`, which is licensed as LGPL (GNU Lesser General Public License) by Katek Memmingen GmbH. | ||
|
||
== Product page: | ||
https://kaco-newenergy.com/de/produkte/blueplanet-hybrid-10.0-TL3/ | ||
|
||
https://github.com/OpenEMS/openems/tree/develop/io.openems.edge.kaco.blueplanet.hybrid10[Source Code icon:github[]] |
50 changes: 50 additions & 0 deletions
50
....kaco.blueplanet.hybrid10/src/io/openems/edge/kaco/blueplanet/hybrid10/BatteryStatus.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package io.openems.edge.kaco.blueplanet.hybrid10; | ||
|
||
import io.openems.common.types.OptionsEnum; | ||
|
||
public enum BatteryStatus implements OptionsEnum { | ||
UNDEFINED(-1, "Undefined"), // | ||
ERROR(0, "Error"), // | ||
OFF_STANDBY(1, "Off/Standby"), // | ||
TEST_2(2, "Test 2"), // | ||
TEST_3(3, "Test 3"), // | ||
TEST_4(4, "Test 4"), // | ||
TEST_5(5, "Test 5"), // | ||
TEST_6(6, "Test 6"), // | ||
TEST_7(7, "Test 7"), // | ||
TEST_8(8, "Test 8"), // | ||
TEST_9(9, "Test 9"), // | ||
TEST_10(10, "Test 10"), // | ||
TEST_11(11, "Test 11"), // | ||
TEST_12(12, "Test 12"), // | ||
TEST_13(13, "Test 13"), // | ||
TEST_14(14, "Test 14"), // | ||
TEST_15(15, "Test 15"), // | ||
TEST_16(16, "Test 16"), // | ||
ON_ACTIVE(17, "On/Active"), // | ||
POWER_DOWN(18, "Power down"), // | ||
SOFTWARE_UPDATE(19, "Software Update"); | ||
|
||
private final int value; | ||
private final String name; | ||
|
||
private BatteryStatus(int value, String name) { | ||
this.value = value; | ||
this.name = name; | ||
} | ||
|
||
@Override | ||
public int getValue() { | ||
return this.value; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return this.name; | ||
} | ||
|
||
@Override | ||
public OptionsEnum getUndefined() { | ||
return UNDEFINED; | ||
} | ||
} |
67 changes: 67 additions & 0 deletions
67
...kaco.blueplanet.hybrid10/src/io/openems/edge/kaco/blueplanet/hybrid10/ErrorChannelId.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
package io.openems.edge.kaco.blueplanet.hybrid10; | ||
|
||
import io.openems.common.channel.Level; | ||
import io.openems.edge.common.channel.Doc; | ||
|
||
public enum ErrorChannelId implements io.openems.edge.common.channel.ChannelId { | ||
A001(Doc.of(Level.WARNING).text("Emergency Stop")), // | ||
A002(Doc.of(Level.WARNING).text("Key Manual Stop")), // | ||
A003(Doc.of(Level.WARNING).text("Transformer Phase B Temperature Sensor Invalidation")), // | ||
A004(Doc.of(Level.WARNING).text("SD Memory Card Invalidation")), // | ||
A005(Doc.of(Level.WARNING).text("Inverter Communication Abnormity")), // | ||
A010(Doc.of(Level.WARNING).text("Battery Stack Communication Abnormity")), // | ||
A021(Doc.of(Level.WARNING).text("Multifunctional Ammeter Communication Abnormity")), // | ||
A022(Doc.of(Level.WARNING).text("Remote Communication Abnormity")), // | ||
A030(Doc.of(Level.WARNING).text("PVDC1 Communication Abnormity")), // | ||
A032(Doc.of(Level.WARNING).text("PVDC2 Communication Abnormity")), // | ||
A040(Doc.of(Level.WARNING).text("Transformer Severe Overtemperature")), // | ||
A050(Doc.of(Level.WARNING).text("DC Precharge Contactor Close Unsuccessfully")), // | ||
A060(Doc.of(Level.WARNING).text("AC Precharge Contactor Close Unsuccessfully")), // | ||
A071(Doc.of(Level.WARNING).text("AC Main Contactor Close Unsuccessfully")), // | ||
A072(Doc.of(Level.WARNING).text("DC Electrical Breaker1 Close Unsuccessfully")), // | ||
A100(Doc.of(Level.WARNING).text("DC Main Contactor Close Unsuccessfully")), // | ||
A110(Doc.of(Level.WARNING).text("AC Breaker Trip")), // | ||
A200(Doc.of(Level.WARNING).text("AC Main Contactor Open When Running")), // | ||
A210(Doc.of(Level.WARNING).text("DC Main Contactor Open When Running")), // | ||
A220(Doc.of(Level.WARNING).text("AC Main Contactor Open Unsuccessfully")), // | ||
A230(Doc.of(Level.WARNING).text("DC Electrical Breaker1 Open Unsuccessfully")), // | ||
|
||
E001(Doc.of(Level.FAULT).text("DC Main Contactor Open Unsuccessfully")), // | ||
E002(Doc.of(Level.FAULT).text("Hardware PDP Fault")), // | ||
E010(Doc.of(Level.FAULT).text("Master Stop Suddenly")), // | ||
E021(Doc.of(Level.FAULT).text("DCShortCircuitProtection")), // | ||
E022(Doc.of(Level.FAULT).text("DCOvervoltageProtection")), // | ||
E030(Doc.of(Level.FAULT).text("DCUndervoltageProtection")), // | ||
E041(Doc.of(Level.FAULT).text("DCInverseNoConnectionProtection")), // | ||
E042(Doc.of(Level.FAULT).text("DCDisconnectionProtection")), // | ||
E050(Doc.of(Level.FAULT).text("CommutingVoltageAbnormityProtection")), // | ||
E060(Doc.of(Level.FAULT).text("DCOvercurrentProtection")), // | ||
E070(Doc.of(Level.FAULT).text("Phase1PeakCurrentOverLimitProtection")), // | ||
E080(Doc.of(Level.FAULT).text("Phase2PeakCurrentOverLimitProtection")), // | ||
E101(Doc.of(Level.FAULT).text("Phase3PeakCurrentOverLimitProtection")), // | ||
E102(Doc.of(Level.FAULT).text("Phase1GridVoltageSamplingInvalidation")), // | ||
E103(Doc.of(Level.FAULT).text("Phase2VirtualCurrentOverLimitProtection")), // | ||
E104(Doc.of(Level.FAULT).text("Phase3VirtualCurrentOverLimitProtection")), // | ||
E110(Doc.of(Level.FAULT).text("Phase1GridVoltageSamplingInvalidation2")), // | ||
E120(Doc.of(Level.FAULT).text("Phase2ridVoltageSamplingInvalidation")), // | ||
E140(Doc.of(Level.FAULT).text("Phase3GridVoltageSamplingInvalidation")), // | ||
E150(Doc.of(Level.FAULT).text("Phase1InvertVoltageSamplingInvalidation")), // | ||
E160(Doc.of(Level.FAULT).text("Phase2InvertVoltageSamplingInvalidation")), // | ||
E170(Doc.of(Level.FAULT).text("Phase3InvertVoltageSamplingInvalidation")), // | ||
E180(Doc.of(Level.FAULT).text("ACCurrentSamplingInvalidation")); // | ||
|
||
private final Doc doc; | ||
|
||
private ErrorChannelId(Doc doc) { | ||
this.doc = doc; | ||
} | ||
|
||
@Override | ||
public Doc doc() { | ||
return this.doc; | ||
} | ||
|
||
public String getErrorCode() { | ||
return this.name(); | ||
} | ||
} |
45 changes: 45 additions & 0 deletions
45
...kaco.blueplanet.hybrid10/src/io/openems/edge/kaco/blueplanet/hybrid10/InverterStatus.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package io.openems.edge.kaco.blueplanet.hybrid10; | ||
|
||
import io.openems.common.types.OptionsEnum; | ||
|
||
public enum InverterStatus implements OptionsEnum { | ||
UNDEFINED(-1, "Undefined"), // | ||
ERROR(0, "Error"), // | ||
OFF_STANDBY(1, "Off/Standby"), // | ||
TEST_2(2, "Test 2"), // | ||
TEST_3(3, "Test 3"), // | ||
TEST_4(4, "Test 4"), // | ||
TEST_5(5, "Test 5"), // | ||
TEST_6(6, "Test 6"), // | ||
TEST_7(7, "Test 7"), // | ||
TEST_8(8, "Test 8"), // | ||
TEST_9(9, "Test 9"), // | ||
TEST_10(10, "Test 10"), // | ||
TEST_11(11, "Test 11"), // | ||
OFF_GRID(12, "Off-Grid/Island"), // | ||
GRID_13(13, "Grid 13"), // | ||
GRID_14(14, "Grid 14"); | ||
|
||
private final int value; | ||
private final String name; | ||
|
||
private InverterStatus(int value, String name) { | ||
this.value = value; | ||
this.name = name; | ||
} | ||
|
||
@Override | ||
public int getValue() { | ||
return this.value; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return this.name; | ||
} | ||
|
||
@Override | ||
public OptionsEnum getUndefined() { | ||
return UNDEFINED; | ||
} | ||
} |
Oops, something went wrong.