Skip to content

Commit

Permalink
Merge branch 'release/2020.26.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
sfeilmeier committed Dec 18, 2020
2 parents 9999c1e + 0c3f023 commit 1ad18f7
Show file tree
Hide file tree
Showing 300 changed files with 16,442 additions and 6,969 deletions.
2 changes: 1 addition & 1 deletion cnf/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@
<!-- Used by io.openems.edge.timedata.rrd4j -->
<groupId>org.rrd4j</groupId>
<artifactId>rrd4j</artifactId>
<version>3.7</version>
<version>3.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
Expand Down
6 changes: 3 additions & 3 deletions doc/modules/ROOT/pages/gettingstarted.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ This quick 'Getting Started' should help you setup a complete development enviro

== Download the source code

. Download any https://git-scm.com[git client icon:external-link[]] and install it. Our recommendation is https://www.sourcetreeapp.com/[Sourctree by Atlassian icon:external-link[]]
. Download any https://git-scm.com[git client icon:external-link[]] and install it. Our recommendation is https://www.sourcetreeapp.com/[Sourcetree by Atlassian icon:external-link[]]

. Clone the OpenEMS git repository

Expand Down Expand Up @@ -78,8 +78,8 @@ image::eclipse-edge-initial-log-output.png[OpenEMS Edge initial log output]
.. Open the http://localhost:8080/system/console/configMgr[Apache Felix Web Console Configuration icon:external-link[]].
+
Login with username *admin* and password *admin*.

Note: *Apache Felix Web Console Configuration* only works with a running console, otherwise you will receive a *error message* on your Browser.
+
Note: *Apache Felix Web Console Configuration* only works with a running console, otherwise you will receive an *error message* on your Browser.
+
.Apache Felix Web Console Configuration
image::apache-felix-console-configuration.png[Apache Felix Web Console Configuration]
Expand Down
4 changes: 2 additions & 2 deletions doc/modules/ROOT/pages/i18n/de.po
Original file line number Diff line number Diff line change
Expand Up @@ -4431,8 +4431,8 @@ msgstr "Den Quellcode herunterladen"

#. type: Plain text
#: gettingstarted.adoc:17
msgid "Download any https://git-scm.com[git client icon:external-link[]] and install it. Our recommendation is https://www.sourcetreeapp.com/[Sourctree by Atlassian icon:external-link[]]"
msgstr "Laden Sie alle https:/git-scm.com [git-client icon:external-link[]] herunter und installieren Sie es. Unsere Empfehlung lautet https://www.sourcetreeapp.com/[Sourctree by Atlassian icon:external-link[]]"
msgid "Download any https://git-scm.com[git client icon:external-link[]] and install it. Our recommendation is https://www.sourcetreeapp.com/[Sourcetree by Atlassian icon:external-link[]]"
msgstr "Laden Sie alle https:/git-scm.com [git-client icon:external-link[]] herunter und installieren Sie es. Unsere Empfehlung lautet https://www.sourcetreeapp.com/[Sourcetree by Atlassian icon:external-link[]]"

#. type: Plain text
#: gettingstarted.adoc:19
Expand Down
2 changes: 1 addition & 1 deletion doc/modules/ROOT/pages/i18n/translate.pot
Original file line number Diff line number Diff line change
Expand Up @@ -4937,7 +4937,7 @@ msgstr ""
#: gettingstarted.adoc:17
msgid ""
"Download any https://git-scm.com[git client icon:external-link[]] and "
"install it. Our recommendation is https://www.sourcetreeapp.com/[Sourctree "
"install it. Our recommendation is https://www.sourcetreeapp.com/[Sourcetree "
"by Atlassian icon:external-link[]]"
msgstr ""

Expand Down
10 changes: 5 additions & 5 deletions doc/modules/ROOT/pages/introduction.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ image::OpenEMS-Logo.png[the Feneco - OpenEMS Logo,400, align="left"]

== Open Energy Management System

OpenEMS - the Open Source Energy Management System - is a modular platform for energy management applications. It was developed around the requirements of monitoring, controlling, and integrating energy storage together with renewable energy sources and complementary devices and services like electric vehicle charging stations, heat-pumps, electrolysers, time-of-use electricity tariffs and more.
OpenEMS -- the Open Source Energy Management System -- is a modular platform for energy management applications. It was developed around the requirements of monitoring, controlling, and integrating energy storage together with renewable energy sources and complementary devices and services like electric vehicle charging stations, heat-pumps, electrolysers, time-of-use electricity tariffs and more.

If you plan to use OpenEMS for your own projects, please consider joining the https://openems.io/association[OpenEMS Association e.V. icon:external-link[]], a network of universities, hardware manufacturers, software companies as well as commercial and private owners, and get in touch in the https://community.openems.io[OpenEMS Community forum icon:external-link[]].

Expand Down Expand Up @@ -40,7 +40,7 @@ image::ui-history.png[OpenEMS UI History View]
== System architecture

OpenEMS is generally used in combination with external hardware and software components
(the exception is a simulated development environment - see xref:gettingstarted.adoc[Getting Started])
(the exception is a simulated development environment - see xref:gettingstarted.adoc[Getting Started]).
As a brief overview, this is how OpenEMS is used in production setups:

.OpenEMS system architecture
Expand All @@ -49,19 +49,19 @@ image::system-architecture.png[OpenEMS system architecture]
== Development guidelines

Development follows the https://de.wikipedia.org/wiki/Agile_Softwareentwicklung[Agile Manifesto icon:external-link[]] and is driven by the https://de.wikipedia.org/wiki/Scrum[Scrum icon:external-link[]] methodology.
The source code is available online at http://openems.io and on https://github.com/OpenEMS/openems[GitHub icon:github[]].
The source code is available online at https://openems.io[openems.io] and on https://github.com/OpenEMS/openems[GitHub icon:github[]].
New versions are released after every Scrum Sprint and https://github.com/OpenEMS/openems/releases[tagged icon:github[]] accordingly.
Version numbers are built using the pattern `year.number of sprint`, e.g. version `2020.14.0` is the result of the 14th sprint in 2020.
Git development follows the https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow[Gitflow Workflow], so the https://github.com/OpenEMS/openems/tree/master/[master branch icon:github[]] always holds the stable release, while active development is happening on the https://github.com/OpenEMS/openems/tree/develop[develop branch icon:github[]] or in separate feature branches.

For Edge and Backend Java development we recommend the https://www.eclipse.org/ide/[Eclipse IDE icon:external-link[]].
For the UI (TypeScript + Angular.io) we recommend https://code.visualstudio.com/[Visual Studio Code icon:external-link[]].
The documentation is generated using http://asciidoc.org[AsciiDoc icon:external-link[]].
For handling git we recommend https://www.sourcetreeapp.com/[Sourctree by Atlassian icon:external-link[]].
For handling git we recommend https://www.sourcetreeapp.com/[Sourcetree by Atlassian icon:external-link[]].

## Open Source philosophy

The OpenEMS project ist driven by the https://openems.io/association[OpenEMS Association e.V.], a network of users, vendors and scientific institutions from all kinds of areas like hardware manufacturers, software companies, grid operators and more. They share the common target of developing a free and open-source platform for energy management, that supports the 100 % energy transition.
The OpenEMS project is driven by the https://openems.io/association[OpenEMS Association e.V.], a network of users, vendors and scientific institutions from all kinds of areas like hardware manufacturers, software companies, grid operators and more. They share the common target of developing a free and open-source platform for energy management, that supports the 100 % energy transition.

We are inviting third parties to use OpenEMS for their own projects and are glad to support them with their first steps. In any case if you are interested in OpenEMS we would be glad to hear from you in the https://community.openems.io[OpenEMS Community forum].

Expand Down
2 changes: 1 addition & 1 deletion doc/modules/ROOT/pages/single_document.adoc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
= OpenEMS - Open Energy Management System
ifndef::toc[]
(c) 2020 OpenEMS Association e.V.
Version 2020.25.0
Version 2020.26.0
:sectnums:
:sectnumlevels: 4
:toc:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class OpenemsConstants {
*
* This is usually the number of the sprint within the year
*/
public final static short VERSION_MINOR = 25;
public final static short VERSION_MINOR = 26;

/**
* The patch version of OpenEMS.
Expand Down
44 changes: 44 additions & 0 deletions io.openems.common/src/io/openems/common/utils/JsonUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,50 @@ public static int getAsInt(JsonElement jElement, String memberName) throws Opene
throw OpenemsError.JSON_NO_INTEGER_MEMBER.exception(memberName, jPrimitive.toString().replaceAll("%", "%%"));
}

public static double getAsDouble(JsonElement jElement) throws OpenemsNamedException {
JsonPrimitive jPrimitive = getAsPrimitive(jElement);
if (jPrimitive.isNumber()) {
return jPrimitive.getAsDouble();
} else if (jPrimitive.isString()) {
String string = jPrimitive.getAsString();
return Double.parseDouble(string);
}
throw OpenemsError.JSON_NO_INTEGER.exception(jPrimitive.toString().replaceAll("%", "%%"));
}

public static double getAsDouble(JsonElement jElement, String memberName) throws OpenemsNamedException {
JsonPrimitive jPrimitive = getAsPrimitive(jElement, memberName);
if (jPrimitive.isNumber()) {
return jPrimitive.getAsDouble();
} else if (jPrimitive.isString()) {
String string = jPrimitive.getAsString();
return Double.parseDouble(string);
}
throw OpenemsError.JSON_NO_INTEGER_MEMBER.exception(memberName, jPrimitive.toString().replaceAll("%", "%%"));
}

public static double getAsShort(JsonElement jElement) throws OpenemsNamedException {
JsonPrimitive jPrimitive = getAsPrimitive(jElement);
if (jPrimitive.isNumber()) {
return jPrimitive.getAsShort();
} else if (jPrimitive.isString()) {
String string = jPrimitive.getAsString();
return Short.parseShort(string);
}
throw OpenemsError.JSON_NO_INTEGER.exception(jPrimitive.toString().replaceAll("%", "%%"));
}

public static double getAsShort(JsonElement jElement, String memberName) throws OpenemsNamedException {
JsonPrimitive jPrimitive = getAsPrimitive(jElement, memberName);
if (jPrimitive.isNumber()) {
return jPrimitive.getAsShort();
} else if (jPrimitive.isString()) {
String string = jPrimitive.getAsString();
return Short.parseShort(string);
}
throw OpenemsError.JSON_NO_INTEGER_MEMBER.exception(memberName, jPrimitive.toString().replaceAll("%", "%%"));
}

public static float getAsFloat(JsonElement jElement) throws OpenemsNamedException {
JsonPrimitive jPrimitive = getAsPrimitive(jElement);
if (jPrimitive.isNumber()) {
Expand Down
8 changes: 5 additions & 3 deletions io.openems.edge.application/EdgeApp.bndrun
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
bnd.identity;id='io.openems.edge.controller.ess.activepowervoltagecharacteristic',\
bnd.identity;id='io.openems.edge.controller.ess.delaycharge',\
bnd.identity;id='io.openems.edge.controller.ess.delayedselltogrid',\
bnd.identity;id='io.openems.edge.controller.ess.fixactivepower',\
bnd.identity;id='io.openems.edge.controller.ess.hybrid.surplusfeedtogrid',\
bnd.identity;id='io.openems.edge.controller.ess.limittotaldischarge',\
bnd.identity;id='io.openems.edge.controller.ess.mindischargeperiod',\
Expand All @@ -77,7 +78,6 @@
bnd.identity;id='io.openems.edge.controller.pvinverter.selltogridlimit',\
bnd.identity;id='io.openems.edge.controller.symmetric.balancing',\
bnd.identity;id='io.openems.edge.controller.symmetric.balancingschedule',\
bnd.identity;id='io.openems.edge.controller.symmetric.fixactivepower',\
bnd.identity;id='io.openems.edge.controller.symmetric.fixreactivepower',\
bnd.identity;id='io.openems.edge.controller.symmetric.limitactivepower',\
bnd.identity;id='io.openems.edge.controller.symmetric.linearpowerband',\
Expand All @@ -98,6 +98,7 @@
bnd.identity;id='io.openems.edge.ess.streetscooter',\
bnd.identity;id='io.openems.edge.evcs.cluster',\
bnd.identity;id='io.openems.edge.evcs.core',\
bnd.identity;id='io.openems.edge.evcs.hardybarth',\
bnd.identity;id='io.openems.edge.evcs.keba.kecontact',\
bnd.identity;id='io.openems.edge.evcs.ocpp.abl',\
bnd.identity;id='io.openems.edge.evcs.ocpp.common',\
Expand Down Expand Up @@ -184,6 +185,7 @@
io.openems.edge.controller.ess.activepowervoltagecharacteristic;version=snapshot,\
io.openems.edge.controller.ess.delaycharge;version=snapshot,\
io.openems.edge.controller.ess.delayedselltogrid;version=snapshot,\
io.openems.edge.controller.ess.fixactivepower;version=snapshot,\
io.openems.edge.controller.ess.hybrid.surplusfeedtogrid;version=snapshot,\
io.openems.edge.controller.ess.limittotaldischarge;version=snapshot,\
io.openems.edge.controller.ess.mindischargeperiod;version=snapshot,\
Expand All @@ -204,7 +206,6 @@
io.openems.edge.controller.pvinverter.selltogridlimit;version=snapshot,\
io.openems.edge.controller.symmetric.balancing;version=snapshot,\
io.openems.edge.controller.symmetric.balancingschedule;version=snapshot,\
io.openems.edge.controller.symmetric.fixactivepower;version=snapshot,\
io.openems.edge.controller.symmetric.fixreactivepower;version=snapshot,\
io.openems.edge.controller.symmetric.limitactivepower;version=snapshot,\
io.openems.edge.controller.symmetric.linearpowerband;version=snapshot,\
Expand All @@ -227,6 +228,7 @@
io.openems.edge.evcs.api;version=snapshot,\
io.openems.edge.evcs.cluster;version=snapshot,\
io.openems.edge.evcs.core;version=snapshot,\
io.openems.edge.evcs.hardybarth;version=snapshot,\
io.openems.edge.evcs.keba.kecontact;version=snapshot,\
io.openems.edge.evcs.ocpp.abl;version=snapshot,\
io.openems.edge.evcs.ocpp.common;version=snapshot,\
Expand Down Expand Up @@ -302,4 +304,4 @@
org.ops4j.pax.logging.pax-logging-log4j1;version='[2.0.6,2.0.7)',\
org.osgi.util.function;version='[1.1.0,1.1.1)',\
org.osgi.util.promise;version='[1.1.1,1.1.2)',\
rrd4j;version='[3.7.0,3.7.1)'
rrd4j;version='[3.8.0,3.8.1)'
Original file line number Diff line number Diff line change
Expand Up @@ -841,7 +841,7 @@ public enum ChannelId implements io.openems.edge.common.channel.ChannelId {
ALARM_BCU_NTC(Doc.of(Level.WARNING) //
.text("BCU NTC Alarm")), //
ALARM_SLAVE_CONTROL_SUMMARY(Doc.of(Level.WARNING) //
.text(" Slave Control Summary Alarm")), //
.text("Slave Control Summary Alarm")), //
FAILURE_INITIALIZATION(Doc.of(Level.FAULT) //
.text("Initialization failure")), //
FAILURE_EEPROM(Doc.of(Level.FAULT) //
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@
public class BatteryBoxC130Impl extends AbstractOpenemsModbusComponent
implements BatteryBoxC130, Battery, OpenemsComponent, EventHandler, ModbusSlave, StartStoppable {

private static final float CAPACITY_PER_MODULE = 6.9f;

private static final int MIN_ALLOWED_VOLTAGE_PER_MODULE = 34;

private static final int MAX_ALLOWED_VOLTAGE_PER_MODULE = 42;

private final Logger log = LoggerFactory.getLogger(BatteryBoxC130Impl.class);

@Reference
Expand Down Expand Up @@ -87,6 +93,15 @@ void activate(ComponentContext context, Config config) throws OpenemsNamedExcept
"Modbus", config.modbus_id())) {
return;
}

int maxVoltage = this.config.numberOfSlaves() * MAX_ALLOWED_VOLTAGE_PER_MODULE;
_setChargeMaxVoltage(maxVoltage);

int minVoltage = this.config.numberOfSlaves() * MIN_ALLOWED_VOLTAGE_PER_MODULE;
_setDischargeMinVoltage(minVoltage);

int capacity = (int) (this.config.numberOfSlaves() * CAPACITY_PER_MODULE);
_setCapacity(capacity);
}

@Deactivate
Expand Down Expand Up @@ -649,4 +664,4 @@ public StartStop getStartStopTarget() {
return StartStop.UNDEFINED; // can never happen
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
import io.openems.edge.common.startstop.StartStopConfig;

@ObjectClassDefinition(//
name = "BMS BYD Battery-Box Commercial C130", //
name = "Battery BYD Battery-Box Commercial C130", //
description = "Implements the Byd Commercial C130 battery rack system.")
public @interface Config {

@AttributeDefinition(name = "Component-ID", description = "Unique ID of this Component")
String id() default "bms0";
String id() default "battery0";

@AttributeDefinition(name = "Alias", description = "Human-readable name of this Component; defaults to Component-ID")
String alias() default "";
Expand All @@ -28,8 +28,11 @@
@AttributeDefinition(name = "Modbus Unit-ID", description = "The Unit-ID of the Modbus device.")
int modbusUnitId() default 1;

@AttributeDefinition(name = "Number of slaves", description = "The number of slaves in this battery rack (max. 20)", min = "1", max = "20")
int numberOfSlaves() default 20;

@AttributeDefinition(name = "Modbus target filter", description = "This is auto-generated by 'Modbus-ID'.")
String Modbus_target() default "";

String webconsole_configurationFactory_nameHint() default "BMS BYD Battery-Box Commercial C130 [{id}]";
String webconsole_configurationFactory_nameHint() default "Battery BYD Battery-Box Commercial C130 [{id}]";
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ public enum State implements io.openems.edge.common.statemachine.State<State>, O
STOPPED(21), //

ERROR(30), //

GO_CONFIGURATION(40), //
;

private final int value;
Expand Down Expand Up @@ -66,9 +64,7 @@ public StateHandler<State, Context> getStateHandler(State state) {
return new StoppedHandler();
case ERROR:
return new ErrorHandler();
case GO_CONFIGURATION:
return new GoConfigurationHandler();
}
throw new IllegalArgumentException("Unknown State [" + state + "]");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ protected static class Builder {
private String modbusId = null;
public int modbusUnitId;
public StartStopConfig startStop;
public int numberOfSlaves;

private Builder() {
}
Expand All @@ -31,6 +32,11 @@ public Builder setStartStop(StartStopConfig startStop) {
return this;
}

public Builder setNumberOfSlaves(int numberOfSlaves) {
this.numberOfSlaves = numberOfSlaves;
return this;
}

public MyConfig build() {
return new MyConfig(this);
}
Expand Down Expand Up @@ -72,4 +78,9 @@ public StartStopConfig startStop() {
return this.builder.startStop;
}

@Override
public int numberOfSlaves() {
return this.builder.numberOfSlaves;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
@AttributeDefinition(name = "Start/stop behaviour?", description = "Should this Component be forced to start or stop?")
StartStopConfig startStop() default StartStopConfig.AUTO;

@AttributeDefinition(name = "Modbus-ID", description = "ID of Modbus brige.")
@AttributeDefinition(name = "Modbus-ID", description = "ID of Modbus bridge.")
String modbus_id() default "modbus0";

@AttributeDefinition(name = "Modbus Unit-ID", description = "The Unit-ID of the Modbus device.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -636,10 +636,10 @@ public static enum ChannelId implements io.openems.edge.common.channel.ChannelId
.unit(Unit.MILLIVOLT) //
.accessMode(AccessMode.READ_WRITE) //
.text("BCU Maxc Cell Voltage")),
BCU_AVARAGE_CELL_VOLTAGE(Doc.of(OpenemsType.INTEGER) //
BCU_AVERAGE_CELL_VOLTAGE(Doc.of(OpenemsType.INTEGER) //
.unit(Unit.MILLIVOLT) //
.accessMode(AccessMode.READ_WRITE) //
.text("BCU Avarage Of All Cell Voltages")),
.text("BCU Average Of All Cell Voltages")),
BCU_MAX_CHARGE_CURRENT(Doc.of(OpenemsType.INTEGER) //
.unit(Unit.AMPERE) //
.accessMode(AccessMode.READ_WRITE) //
Expand All @@ -658,14 +658,14 @@ public static enum ChannelId implements io.openems.edge.common.channel.ChannelId
.unit(Unit.AMPERE_HOURS) //
.accessMode(AccessMode.READ_WRITE) //
.text("Design Capacity Of the Module")),
USEABLE_CAPACITY(Doc.of(OpenemsType.INTEGER) //
USABLE_CAPACITY(Doc.of(OpenemsType.INTEGER) //
.unit(Unit.AMPERE_HOURS) //
.accessMode(AccessMode.READ_WRITE) //
.text("Useable Cpacity Of The Module")),
.text("Usable Capacity Of The Module")),
REMAINING_CAPACITY(Doc.of(OpenemsType.INTEGER) //
.unit(Unit.AMPERE_HOURS) //
.accessMode(AccessMode.READ_WRITE) //
.text("Remaning Cpacity Of The Module")),
.text("Remaining Capacity Of The Module")),
BCU_MAX_CELL_VOLTAGE_LIMIT(Doc.of(OpenemsType.INTEGER) //
.unit(Unit.MILLIVOLT) //
.accessMode(AccessMode.READ_WRITE) //
Expand Down
Loading

0 comments on commit 1ad18f7

Please sign in to comment.