-
Notifications
You must be signed in to change notification settings - Fork 403
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
35 changed files
with
1,317 additions
and
545 deletions.
There are no files selected for viewing
Binary file not shown.
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 |
---|---|---|
@@ -1,5 +1,5 @@ | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-bin.zip | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists |
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 |
---|---|---|
|
@@ -4,29 +4,39 @@ | |
<br/>Open Source Energy Management System | ||
</h1> | ||
|
||
OpenEMS is a modular platform for energy management applications. | ||
It was developed around the requirements of controlling, monitoring and integrating energy storage systems together with renewable energy sources and complementary devices and services. | ||
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 [OpenEMS Association e.V.](https://openems.io/association), a network of universities, hardware manufacturers, software companies as well as commercial and private owners, and get in touch in the [OpenEMS Community forum](https://community.openems.io). | ||
|
||
### OpenEMS in »Local Energy Management« | ||
|
||
![alt text](./doc/modules/ROOT/assets/images/local-energy-management.png "Local Energy Management") | ||
|
||
### OpenEMS in »Areal Energy Management« | ||
|
||
![alt text](./doc/modules/ROOT/assets/images/areal-energy-management.png "Areal Energy Management") | ||
|
||
## OpenEMS IoT stack | ||
|
||
The OpenEMS 'Internet of Things' stack contains three main components: | ||
|
||
* **OpenEMS Edge** runs on site and actually controls the devices | ||
* **OpenEMS UI** is the generic user interface | ||
* **OpenEMS Edge** runs on site, communicates with devices and services, collects data and executes control algorithms | ||
* **OpenEMS UI** is the real-time user interface for web browsers and smartphones | ||
* **OpenEMS Backend** runs on a (cloud) server, connects the decentralized Edge systems and provides aggregation, monitoring and control via internet | ||
|
||
## Features | ||
|
||
The OpenEMS software architecture was designed to leverage some features that are required by a modern and flexible Energy Management System: | ||
|
||
* Fast, PLC-like control of battery inverters and other devices | ||
* Fast, PLC-like control of devices | ||
* Easily extendable due to the use of modern programming languages and modular architecture | ||
* Wide range of supported devices - (battery) inverters, meters, etc. - and protocols | ||
* Modern web-based real-time user interface | ||
* Reusable, device independent control algorithms due to clear device abstraction | ||
* Wide range of supported devices and protocols | ||
|
||
## OpenEMS UI Screenshots | ||
![alt text](./doc/modules/ROOT/assets/images/ui-screenshots.png "OpenEMS UI Screenshots 1") | ||
![alt text](./doc/modules/ROOT/assets/images/ui-screenshots2.png "OpenEMS UI Screenshots 2") | ||
|
||
![alt text](./doc/modules/ROOT/assets/images/ui-live.png "OpenEMS UI Live View") | ||
![alt text](./doc/modules/ROOT/assets/images/ui-history.png "OpenEMS UI History View") | ||
|
||
## System architecture | ||
|
||
|
@@ -36,16 +46,16 @@ OpenEMS is generally used in combination with external hardware and software com | |
|
||
## Documentation | ||
|
||
Indepth documentation is currently in progress. Please find the latest documents here: | ||
|
||
* [Latest version of documentation](https://openems.github.io/openems.io/openems/latest/introduction.html) | ||
* [Javadoc](https://openems.github.io/openems.io/javadoc/) | ||
* [Latest version of documentation](https://openems.github.io/openems.io/openems/latest/introduction.html) | ||
* [Javadoc](https://openems.github.io/openems.io/javadoc/) | ||
|
||
## Open Source philosophy | ||
|
||
OpenEMS development was started by [FENECON GmbH](https://www.fenecon.de), a German company specialized in manufacturing and project development of energy storage systems. It is the software stack behind [FEMS - FENECON Energy Management System](https://fenecon.de/page/fems) and widely used in private, commercial and industrial applications. | ||
The OpenEMS project ist driven by the [OpenEMS Association e.V.](https://openems.io/association), 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. | ||
|
||
In 2019 governance of the OpenEMS project was taken over by the newly founded "OpenEMS Association e.V. (i.Gr.)". We are inviting third parties - like universities, hardware manufacturers, software companies, commercial and private owners,... - 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 our development team would be glad to hear from you at [email protected]. | ||
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 [OpenEMS Community forum](https://community.openems.io). | ||
|
||
OpenEMS development was started by [FENECON GmbH](https://www.fenecon.de), a German company specialized in manufacturing and project development of energy storage systems. It is the software stack behind [FEMS - FENECON Energy Management System](https://fenecon.de/page/fems) and widely used in private, commercial and industrial applications. | ||
|
||
OpenEMS is funded by several federal and EU funding projects. If you are a developer and you would like to get hired by one of the partner companies or universities for working on OpenEMS, please send your motivation letter to [email protected]. | ||
|
||
|
@@ -54,14 +64,14 @@ OpenEMS is funded by several federal and EU funding projects. If you are a devel | |
* OpenEMS Edge | ||
* OpenEMS Backend | ||
|
||
Copyright (C) 2016-2020 FENECON GmbH. | ||
Copyright (C) 2016-2020 OpenEMS Association e.V., FENECON GmbH. | ||
|
||
This product includes software developed at FENECON GmbH: you can | ||
redistribute it and/or modify it under the terms of the [Eclipse Public License version 2.0](LICENSE-EPL-2.0). | ||
|
||
* OpenEMS UI | ||
|
||
Copyright (C) 2016-2020 FENECON GmbH. | ||
Copyright (C) 2016-2020 OpenEMS Association e.V., FENECON GmbH. | ||
|
||
This product includes software developed at FENECON GmbH: you can | ||
redistribute it and/or modify it under the terms of the [GNU Affero General Public License version 3](LICENSE-AGPL-3.0). |
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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
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 |
---|---|---|
|
@@ -5,30 +5,37 @@ image::OpenEMS-Logo.png[the Feneco - OpenEMS Logo,400, align="left"] | |
|
||
== Open Energy Management System | ||
|
||
OpenEMS is a modular platform for energy management applications. | ||
It was developed around the requirements of controlling, monitoring and integrating energy storage systems together with renewable energy sources and complementary devices and services. | ||
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[]]. | ||
|
||
=== OpenEMS in »Local Energy Management« | ||
image::local-energy-management.png[Local Energy Management] | ||
|
||
=== OpenEMS in »Areal Energy Management« | ||
image::areal-energy-management.png[Areal Energy Management] | ||
|
||
== OpenEMS IoT stack | ||
|
||
The OpenEMS 'Internet of Things' stack contains three main components: | ||
|
||
* **OpenEMS Edge** runs on-site and actually controls the devices | ||
* **OpenEMS UI** is the generic user interface | ||
* **OpenEMS Edge** runs on site, communicates with devices and services, collects data and executes control algorithms | ||
* **OpenEMS UI** is the real-time user interface for web browsers and smartphones | ||
* **OpenEMS Backend** runs on a (cloud) server, connects the decentralized Edge systems and provides aggregation, monitoring and control via internet | ||
|
||
== Features | ||
|
||
The OpenEMS software architecture was designed to leverage some features that are required by a modern and flexible Energy Management System: | ||
|
||
* Fast, PLC-like control of battery inverters and other devices | ||
* Fast, PLC-like control of devices | ||
* Easily extendable due to the use of modern programming languages and modular architecture | ||
* Wide range of supported devices - (battery) inverters, meters, etc. - and protocols | ||
* Modern web-based real-time user interface | ||
* Reusable, device independent control algorithms due to clear device abstraction | ||
* Wide range of supported devices and protocols | ||
|
||
== OpenEMS UI Screenshots | ||
image::ui-screenshots.png[OpenEMS UI Screenshots] | ||
image::ui-screenshots2.png[OpenEMS UI Screenshots] | ||
|
||
image::ui-live.png[OpenEMS UI Live View] | ||
image::ui-history.png[OpenEMS UI History View] | ||
|
||
== System architecture | ||
|
||
|
@@ -44,19 +51,21 @@ image::system-architecture.png[OpenEMS system architecture] | |
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[]]. | ||
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 `2018.4.0` is the result of the fourth sprint in 2018. | ||
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[]]. | ||
|
||
== Open Source philosophy | ||
## 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. | ||
|
||
OpenEMS development was started by https://www.fenecon.de[FENECON GmbH icon:external-link[]], a German company specialized in manufacturing and project development of energy storage systems. It is the software stack behind https://fenecon.de/page/fems[FEMS - FENECON Energy Management System icon:external-link[]] and widely used in private, commercial and industrial applications. | ||
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]. | ||
|
||
In 2019 governance of the OpenEMS project was taken over by the newly founded "OpenEMS Association e.V. (i.Gr.)". We are inviting third parties - like universities, hardware manufacturers, software companies, commercial and private owners,... - 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 our development team would be glad to hear from you at [email protected]. | ||
OpenEMS development was started by https://www.fenecon.de[FENECON GmbH], a German company specialized in manufacturing and project development of energy storage systems. It is the software stack behind https://fenecon.de/page/fems[FEMS - FENECON Energy Management System] and widely used in private, commercial and industrial applications. | ||
|
||
OpenEMS is funded by several federal and EU funding projects. If you are a developer and you would like to get hired by one of the partner companies or universities for working on OpenEMS, please send your motivation letter to [email protected]. | ||
|
||
|
@@ -65,14 +74,14 @@ OpenEMS is funded by several federal and EU funding projects. If you are a devel | |
* OpenEMS Edge | ||
* OpenEMS Backend | ||
|
||
Copyright (C) 2016-2020 FENECON GmbH. | ||
Copyright (C) 2016-2020 OpenEMS Association e.V., FENECON GmbH. | ||
|
||
This product includes software developed at FENECON GmbH: you can | ||
redistribute it and/or modify it under the terms of the https://github.com/OpenEMS/openems/blob/develop/LICENSE-EPL-2.0[Eclipse Public License version 2.0]. | ||
|
||
* OpenEMS UI | ||
|
||
Copyright (C) 2016-2020 FENECON GmbH. | ||
Copyright (C) 2016-2020 OpenEMS Association e.V., FENECON GmbH. | ||
|
||
This product includes software developed at FENECON GmbH: you can | ||
redistribute it and/or modify it under the terms of the https://github.com/OpenEMS/openems/blob/develop/LICENSE-AGPL-3.0[GNU Affero General Public License version 3]. |
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
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-1.8"/> | ||
<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,2 @@ | ||
/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.controller.generic.jsonlogic</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> |
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,19 @@ | ||
Bundle-Name: OpenEMS Edge Controller Generic JsonLogic | ||
Bundle-Vendor: FENECON GmbH | ||
Bundle-License: https://opensource.org/licenses/EPL-2.0 | ||
Bundle-Version: 1.0.0.${tstamp} | ||
|
||
-includeresource.jsonlogic: \ | ||
@lib/json-logic-java-1.0.0.jar; lib:=true | ||
|
||
-buildpath: \ | ||
${buildpath},\ | ||
io.openems.common,\ | ||
io.openems.edge.common,\ | ||
io.openems.edge.controller.api,\ | ||
io.openems.edge.ess.api,\ | ||
io.openems.edge.io.api,\ | ||
lib/json-logic-java-1.0.0.jar;version=file,\ | ||
|
||
-testpath: \ | ||
${testpath} |
Binary file added
BIN
+53.4 KB
io.openems.edge.controller.generic.jsonlogic/lib/json-logic-java-1.0.0.jar
Binary file not shown.
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,60 @@ | ||
= Generic JsonLogic | ||
|
||
The JsonLogic-Controller is a very generic Controller that allows the definition of a complex logic as a configuration at runtime, e.g. via Apache Felix Web Console. | ||
|
||
It is based on the JsonLogic specification (http://jsonlogic.com[jsonlogic.com]). Logics can be defined by a rule: | ||
|
||
[source,json] | ||
---- | ||
{ | ||
"if":[ | ||
{ | ||
"<":[ | ||
{ | ||
"var":"_sum/EssSoc" | ||
}, | ||
50 | ||
] | ||
}, | ||
[ | ||
[ | ||
"ess0/SetActivePowerEquals", | ||
5000 | ||
] | ||
], | ||
[ | ||
[ | ||
"ess0/SetActivePowerEquals", | ||
-2000 | ||
] | ||
] | ||
] | ||
} | ||
---- | ||
|
||
The input data that is referenced via `var` is automatically provided from OpenEMS Channels - e.g. as | ||
|
||
[source,json] | ||
---- | ||
{ | ||
"_sum/EssSoc": 40 | ||
} | ||
---- | ||
|
||
This example would result in: | ||
|
||
[source,json] | ||
---- | ||
[ | ||
"ess0/SetActivePowerEquals", | ||
5000 | ||
] | ||
---- | ||
|
||
i.e. the Controller will require a set-point of 5000 W discharge on ess0. | ||
|
||
It is also possible to write to multiple channels, by adding more arrays to the result. | ||
|
||
Try yourself: http://jsonlogic.com/play.html[http://jsonlogic.com/play.html] | ||
|
||
https://github.com/OpenEMS/openems/tree/develop/io.openems.edge.controller.generic.jsonlogic[Source Code icon:github[]] |
Oops, something went wrong.