Releases: OpenEMS/openems
2022.5.0
Bug Fixes and Other Changes
- Fix Language NullPointerException (#1793)
- This bug had caused problems when logging in from OpenEMS UI to OpenEMS Edge. Thanks @michaelgrill for the fix!
- Fixed filter for influxdbv2 query (#1782)
- Use edge instead of fems keyword
- Bug had been introduced in a FEMS backport. Thanks @simonfey for the fix!
- Updates to system update feature (#1807)
- This is an incremental improvement to the feature. More to come soon. See pull-request for details. We are hoping for comments on this Beta feature.
- Thanks @lukasrgr!
- Improvements to App-Manager (#1813)
- This is an incremental improvement to the feature. We are hoping for comments on this Beta feature.
- Thanks @michaelgrill
- Implement Negative Alerting in Backend (#1814)
- Negative Alerting: sends notification when EMS stays disconnected from the backend for certain configured period
- This is currently implemented with Metadata.Odoo in mind. We are hoping for comments on this Beta feature.
- Thanks @da-Kai
- Events: change backend structure to use OSGis EventAdmin (#1814)
- Corrently: fix API calling parameter (#1806)
- Corrently has changed the call param zipcode to zip. Thanks @clehne for the fix!
- Improve calculation of
_sum/EssDcDischargePower
(#1800) - Sinexcel: calculate Energy from ActivePower (#229) (#1816)
- Seems the original values from modbus are not reliable; tested on fems
- Also: change DC_(DIS)CHARGE_ENERGY to LONG to avoid 'is not fitting in Integer range' exception
Dependencies
- Bump org.apache.felix.configadmin from 1.9.22 to 1.9.24 in /cnf (#1792)
- Bump d3 from 7.3.0 to 7.4.2 in /ui (#1791)
- Bump @angular from 13.3.0 to 13.3.1 in /ui (#1785, #1803)
- Bump moment from 2.29.1 to 2.29.2 in /ui (#1794)
- Bump postgresql from 42.3.3 to 42.3.4 in /cnf (#1805)
- Bump Java-WebSocket from 1.5.2 to 1.5.3 in /cnf (#1799)
- Bump jna from 5.10.0 to 5.11.0 in /cnf (#1775)
- Bump d3 from 7.4.2 to 7.4.4 in /ui (#1798)
2022.4.0
Highlights
- Add Fronius PV Inverter (via Modbus/SunSpec) (#1749)
- Add Kostal PV Inverter (via Modbus/SunSpec) (#1767)
- Code clean-up and modernization for Java 11 (#1757)
- Modernize code for features of Java 11; this is mainly applied by using the "Clean up..." feature of Eclipse IDE. The configuration XML file for "Clean up" can be found at
/cnf/clean-up.xml
- Modernize code for features of Java 11; this is mainly applied by using the "Clean up..." feature of Eclipse IDE. The configuration XML file for "Clean up" can be found at
- Add compatibility with InfluxCloud and InfluxDB 2.0 (#1581, #1768, #1769)
- Update InfluxDB Query Language to new Flux Language
- Improve 'round by resolution' behaviour
- Update to latest InfluxDB Client Java library (https://github.com/influxdata/influxdb-client-java)
- be aware that the configuration properties for Backend and Edge InfluxDB components was changed to reflect InfluxDB 2.0 terms
Minor improvements
- Modbus/TCP: Add GridMode to Sum (#204) (#1748)
- GridMode can now be read via Modbus Address
417
. - Additionally:
- Add new type
enum16
- Show
text
of Channels in Description - Improve texts for Channels
- Fix calculation of GridMode when there is no ESS.
- Add new type
- GridMode can now be read via Modbus Address
- Improve tutorial "Implementing a Device" (#1507)
- Controller IO HeatingElement: add cumulated active time (#1760)
- Add cummulated time channels & update them depending on the current level. Use these channels in the UI history.
- Add translation for Excel Export (#1778)
- Sinexcel Battery-Inverter: add debounce for channels (#1779)
- This fixes read problems with Sinexcel Battery Inverters.
- Also: move debounce feature from StateChannel to all BooleanChannels
Bug Fixes and Other Changes
- Required change for Fronius PV Inverter (via Modbus/SunSpec) (#1749)
- AbstractOpenemsSunSpecComponent readNextBlock() function change to complete when all expected blocks have already been read.
- Odoo: store and authenticate username/email in lower case (#1750)
- Update Gradle v7.4.2 56adc15 74720da
- FENECON Home Battery: add Component deactivate (#1766)
- Bugfix
isProducer()
method (#1770)- Fixes a bug that had been introduced by #1749
- Under certain circumstances this bug would cause Production meters to be not displayed.
- Thanks danielco for pointing it out in the OpenEMS Community forum: https://community.openems.io/t/trying-to-simulate-pv-production/838
- Gitpod live demo: fix branch name for odoo-openems (#1771)
- _Gitpod is unfortunately broken right now because of some Odoo module incompatibility
- Fix SDM 630 modbus addresses for Reactive Power (#1772)
- FEMS-Backports for 2022.04 (#1773)
- Bugfix for InfluxDB v2 implementation:
- add missing runtime dependencies
- use ThreadPool for InfluxDB batch writes
- improve exception handling
- Add continuous debug output to Ui.Websocket and Edge.Websocket
- Add fallback for Resolution and Timezone for older UI versions
- Improvement on Generic.Ess ErrorHandler
- Bugfix for InfluxDB v2 implementation:
- Update core UI libraries (#1774)
- Angular v13
- Ionic v6
- ...
- Fix CI path to ng
- Improvements for Time-Of-Use Tariffs (#1776)
- Change TimeOfUseTariff to never return null
- Introduce TimeOfUsePrices.empty() instead
- Adjust Controller to handle the changed logic
- Awattar, Tibber, Corrently: throw Exception if HTTP GET result is empty
- Update JUnit tests to reflect new Exception handling
- UI: fix not displayed meters (#1780)
- Fixed not displayed meters and wrong displaying of labels in history/consumptionchartOverview
Thanks @DerWahreKlinki, @huseyinsaht, @mlang97, @sebastianasen, @lukasrgr, @venu-sagar, Michael Grill, @janseidemann for contributing to this Release!
2022.3.0
Bug Fixes and Other Changes
- Improve docs:
- "Getting Started: Implementing a Device" (#1732): https://openems.github.io/openems.io/openems/latest/edge/implement.html
- "Deploy OpenEMS Edge" (#1739): https://openems.github.io/openems.io/openems/latest/edge/deploy.html
- Bump postgresql from 42.3.1 to 42.3.3 in /cnf (#1731 and #1737)
- Bump slf4j-api and slf4j-simple from 1.7.35 to 1.7.36 in /cnf (#1736)
- Bump gson from 2.8.9 to 2.9.0 in /cnf (#1735)
- Bump guava from 31.0.1-jre to 31.1-jre in /cnf (#1745)
- Update copyright information for 2022 8e727e8
- ESS Power: add JUnit test for multilayer cluster 16f44fa
- Fix various typos (#1738)
- Update UI dependencies ec79e14
- FEMS-Backports 02/2022 (#1746)
- Channel: improve toString() and error logging
- TypeUtils: add helper methods for Float
- Predictor: fix naming
- Add Simulated Thermometer
2022.2.0
Highlights
- From now on we provide downloadable files for every release
- Release assets (and a Github draft release) are automatically created via Github Actions (#1696)
- Find the download links for
openems-edge.jar
,openems-backend.jar
andopenems-ui.zip
below - We are glad to hear your feedback on prebuilt release files on OpenEMS Community! (https://community.openems.io)
- We published a major update for the OpenEMS Getting Started guide: https://openems.github.io/openems.io/openems/latest/gettingstarted.html
- In rest this release focuses on updating and modernizing the code base for Java 11, updating external library dependencies and bug fixes
Bug Fixes and Other Changes
- Major update for OpenEMS Getting Started guide bb0e6f2
- Code Clean-Up and modernization for Java 11
- Clean-up code using Eclipse IDE
- Apply checkstyle
- Use Java 11 features - mainly the
var
keyword, where appropriate - OpenEMS Backend (#1692)
- OpenEMS Edge (#1695)
- Update io.openems.common
- Update io.openems.edge.application
- Update io.openems.edge.battery.api
- Update io.openems.edge.battery.bmw
- Update io.openems.edge.battery.bydcommercial
- Update io.openems.edge.battery.fenecon
- Update io.openems.edge.battery.soltaro
- Update dependencies
- UI edb287e 4ed9531
- Bump fastexcel from 0.12.12 to 0.12.13 in /cnf (#1703)
- Bump HikariCP from 4.0.3 to 5.0.1 in /cnf (#1701)
- Bump fastexcel from 0.12.13 to 0.12.14 in /cnf (#1712)
- Bump slf4j-api from 1.7.32 to 1.7.33 in /cnf (#1710); Closes #1709
- Bump d3 from 7.2.1 to 7.3.0 in /ui (#1698)
- Bump slf4j-api from 1.7.33 to 1.7.35 in /cnf 854e759
- Bump slf4j-simple from 1.7.33 to 1.7.35 in /cnf (#1725)
- Bump org.apache.felix.configadmin from 1.9.20 to 1.9.22 in /cnf (#1708)
- Battery: fix JUnit test 8927408
- Because of added
break
to avoid fallthrough, GoRunning now applies all checks properly, which takes one more Cycle: - d2eda2a#diff-fcb90384c5e6cfccb066d6a4aebf7f6f55174258152a200723743235891325bcR51
- Because of added
- EdgeConfig: try to parse JSON configurations (#1705)
- Fix OCPP dependencies for Java 11 (#1715)
- Add JavaBeans Activation Framework
- Fix typo in sdnotify wrapper
- Update EdgeApp.bndrun
- Simulator GridMeter: fix calculation of active power
- FEMS Backports (#1721)
- Continuous improvement of Odoo Backend and FENECON Home implementation
- Cleanup JsonUtils and EdgeConfig
- Add EnumUtils
- JsonrpcRequest: improve log messages on error
- JUnit tests
- Timeslot-Peakshaving ("Hochlastzeitfenster")
- Draft for App-Manager
- EssDcCharger and PV-Inverters: add modbus slave definition
- GoodWe:
- add config setting to disable MPP Tracking with external optimizers
- improvements to "SMART"-Mode
- Time-Of-Use Tariff Discharge controller Bug-Fix (#1716)
- Set active power for both AC and DC systems were the same, and it is changed now by recognizing if it is a DC or AC system and giving separate set points.
- Controller LimitTotalDischarge implementation is split into Interface and implementation.
- Reference for limit total discharge and emergency capacity reserves is updated with target filters for enabled/active Controllers
2022.1.0
Wishing all of you a happy and successful new year 2022!
Highlights
Bug Fixes and Other Changes
- Bump org.apache.felix.webconsole from 4.7.0 to 4.7.2 in /cnf (#1688)
- Switch to log4j2 (#1686)
- Backend Odoo: apply Checkstyle, fix taking database name from configuration 742af2d
- Tried to update j2mod/jSerialComm... #1602, 0f43c0a, #1689
- We have been trying a couple of times already to update j2mod and jSerialComm to there latest version, but it always fails, because jSerialComm somehow reconfigures the serial device and draws it unusable on our test systems. If anybody can help out, it will be much appreciated. Till then we will stay with the old version.
- Bump rrd4j from 3.8 to 3.8.1 in /cnf (#1690)
- Drop R&D page from docs
- It was moved to https://openems.io/research/ long ago.
- If you use OpenEMS for a research project, please give us a note and we will link you there.
- Update gradle to 7.3.3 4deba81
- Update docs for new, monthly release cycle fbce09e
2021.22.0
Bug Fixes and Other Changes
- Update pax-logging-log4j
- Bump org.apache.felix.http.jetty from 4.1.12 to 4.1.14 in /cnf (#1684)
- Bump org.apache.felix.framework from 7.0.1 to 7.0.3 in /cnf (#1679)
- Bump d3 from 7.1.1 to 7.2.1 in /ui (#1681)
- Bump date-fns from 2.26.0 to 2.27.0 in /ui (#1676)
- Fixes for Backend Metadata.Odoo
NOTE: see the discussion in OpenEMS Community forum regarding the Log4j issue (CVE-2021-44228): https://community.openems.io/t/schwachstelle-in-log4j-und-openems/707
2021.21.0
Highlights
- Switch to Java 11 (#1596)
- Switch from Java 8 to Java 11
- Update Github Actions workflow
- Update Gitpod Dockerfile (use Java 11.0.13-tem Eclipse Adoptium Temurin build)
- Update all
.classpath
files to use JavaSE-11 - Update EdgeApp and BackendApp.bndrun to use JavaSE-11
- Replace apache xmlrpc with aXMLRPC
- Apache ws-xmlrpc depends on javax.xml.bind, which was deprecated since Java 9 and was removed in Java 11
- Thank you @gturri for providing a nearly drop-in replacement for Apache ws-xmlrpc
- This also removes the dependency for Apache WebServices Common Utilities (
ws-commons-util
), which was also removed - Update OdooUtils to use aXMLRPC instead
- Replace deprecated methods in OneWire
- clazz.newInstance(): https://stackoverflow.com/questions/53257073/java-9-replace-class-newinstance
- new Long() by Long.valueOf()
- new Integer() by Integer.valueOf()
- new Integer() by Integer.parseInt()
- Remove InfluxDB config as it is not installed by default in Gitpod
- By default remove the
.settings
directory which is specific to Eclipse IDE (viatools/prepare-commit.sh
)
- Switch from Java 8 to Java 11
If you need a prepuilt Java Runtime Environment (JRE) for Java 11, please refer to https://adoptium.net/. Updated Debian Packages by the Eclipse Adoptium project are still work-in-progress (see adoptium/installer#330), but the ones by Adopt-OpenJDK are still available here: https://adoptopenjdk.jfrog.io/ui/native/deb/pool/main/a
Bug Fixes and Other Changes
- Bump jna from 5.9.0 to 5.10.0 in /cnf (#1662)
- Update UI dependencies d977003
- Waiting for Ionic v6 to update Angular to v13: https://forum.ionicframework.com/t/angular-13-support/217067
- Update gradle to 7.3 2c3f4a6
2021.20.0
Thank you to all the members of the OpenEMS Association for the networking at the yearly general meeting. And also thanks to the Community for joining us in the OpenEMS Conference 2021 on 16th November. The recordings will be available soon on https://openems.io/.
Highlights
- Time-Of-Use Tariff Corrently: switch to 15 minutes resolution
- Add Time-Of-Use Tariff Tibber (#1663)
Bug Fixes and Other Changes
- Ess-Cluster: fix calculation of channels (#1666)
- Certain Channels like 'Capacity' or 'ActivePowerL1/L2/L3' had not been calculated at all or correctly.
- Fix DESS Chargers: change Config1 to Config2 (#1665)
- Ess Cycle Controller Final Soc State Charge Bug Fix
- FEMS Backports #1658
- Improvements for Time-Of-User Tariffs
- Implement generic Time-of-Use tariff service.
- Implement Awattar TOU tariff provider implementation.
- Implement Corrently by STROMDAO TOU tariff
- Checkstyle: do not required Javadoc for build() method in builder pattern
- Add System-Update feature (if OpenEMS Edge is installed via Debian package)
- Add ExecuteSystemUpdateRequest and GetSystemUpdateStateRequest
- Add Password-only sudo authentication for system execute
- Add
exitcode
to ExecuteSystemCommandResponse - Add global .gitignore patterns
- Update gradle bnd version to 6.0.0
- Increase number of Threads in ThreadPools to avoid pending tasks
- Add handling of BundleContext in activate (without DummyBundleContext, because that had caused Resolve errors)
- UI: improve detection of isOnline
- Set default port 8085 in edge-dev.ts
- TypeUtils: fix conversion from Double to Float
- This fixes a bug where a double "0.0" could not be converted to float, with following error: "Cannot convert. Double [0.0] is not fitting in Float range."
- Also applied Checkstyle on TypeUtils.
- Keba KeContact: trim configured IP address
- This avoids "evcs0[Failed activation java.net.UnknownHostException: xxx.xxx.xxx.xxx]
- Introduce OpenemsOEM class which simplifies creating custom distributions of OpenEMS
- Soltaro Battery Improvement
- Sinexcel Battery Inverter New Modbus Protocol Implementation
- Allow SymmetricEss in EvcsClusterPeakshaving
- EvcsClusterPeakshaving was not able to start with a SymmetricEss like Fenecon Dess. (No Reference for component ess0 ...)
- UI register: Remove zip validator
- Austria has only 4 digits; other countries... who knows?!
- PQ Plus UMD96 Meter Implementation
- Remove Predictive Delay Charge Controller
- It was replaced by the more advanced "ESS Grid Optimized Charge" Controller (io.openems.edge.controller.ess.gridoptimizedcharge).
- Hardy Barth Salia: implementation improvements
- Small things like heartbeat were changed in the hardy barth software especially for the newer salia cpµ pro 2 (single charger).
- Another problem was the external meter that is used internally in the hardy barth to provide the current charge values.
- This meter also measures the standby consumption of the salia itself and is disabled by default - The function to enable it automatically is on hold for now, as we need a proper update process first.
- GoodWe: add missing Write-Registers
- Improvements for Time-Of-User Tariffs
2021.19.0
Bug Fixes and Other Changes
- Fixed Reactive power listener in AsyncMeter (#1646). Thanks @kscholty
- Update Getting Started-Docs for UI (#1650). Thanks @lukasrgr
- UI: Fix default Port in Environment (#1651). Thanks @lukasrgr
- InfluxDB: write data with milliseconds precision (#1644)
- The timestamp is rounded to the global configured Cycle-Time
- See discussion in OpenEMS Community: https://community.openems.io/t/arbeiten-mit-influxdb/637/12
- Dependency updates:
- Bump gson from 2.8.8 to 2.8.9 in /cnf (#1656)
- Bump postgresql from 42.3.0 to 42.3.1 in /cnf (#1655)
- Bump org.osgi.service.jdbc from 1.0.0 to 1.0.1 in /cnf (#1649)
- Bump date-fns from 2.24.0 to 2.25.0 in /ui (#1638)
- Bump d3 from 7.0.3 to 7.1.1 in /ui (#1632)
- Bump influxdb-java from 2.17 to 2.22 in /cnf (#1626)
2021.18.0
Highlights/New implementations
- Time-of-use-Tariff Discharge Controller
- Schedules the discharging of an AC or DC energy storage system in the night based on time-of-use prices, predicted production and consumption. Thanks @venu-sagar
- ESS Cycle Controller: executes charge/discharge cycles on an ESS. Thanks @huseyinsaht
- Generic Off-Grid ESS Implementation
- Similar to the existing Generic-ESS, this Off-Grid variant takes any off-gridable battery inverter (like Sinexcel), any battery and an external device that manages grid-switching and off-grid detection to seamlessly transfer between public- and micro-grid. Thanks @huseyinsaht
Bug Fixes and Other Changes
these improvements are mainly backports from FENECON Energy Management System (FEMS) #1637
-
Generic/Build/...
- Extract wrapper for OK HTTP library so that it can be used easier by other Components
- Improve Modbus Communication errorhandling
- In case of a modbus communication error there used to be a Fault state on the Modbus Bridge. This improvement moves the Fault state to the actual Modbus device instead.
- New Fault state ModbusCommunicationFailed inside the ModbusComponent Nature
- Properly implement ModbusComponent Nature in all Modbus device implementations
- In Modbus Bridge: use global Cycle-Time
- Add JUnit tests for Modbus-Bridge
- Channel: refactor handling of initial value
- Ramp-Filter: refactor
- State-Machine: store the previous state and make it available via getPreviousState() method
- Add feature to ignore Component Warnings and Faults in Sum
- If you are aware that certain Components currently have an error (e.g. a Modbus-Device is not connected, KEBA charging station is turned off, etc.) you can add the Component-ID to Sum, so that it does not appear in the overall system State (
_sum/State
) - Example without ignore:
[ctrlDebugLog0] _sum[State:Fault] ctrlApiRest1[State:FAULT: Unable to start REST-Api Server]
- Example with ignore configured:
[ctrlDebugLog0] _sum[State:Info|State:INFO: Component Warnings or Faults are being ignored] ctrlApiRest1[State:FAULT: Unable to start REST-Api Server]
- If you are aware that certain Components currently have an error (e.g. a Modbus-Device is not connected, KEBA charging station is turned off, etc.) you can add the Component-ID to Sum, so that it does not appear in the overall system State (
- TypeUtils: improve logic in case of null
- DebugLogController: add config setting to print Component Alias and implement @Modified to apply changed configuration faster
- Improve process of restarting defective Components via OsgiValidateWorker
- ESS Power-Constraints: improve log messages and avoid unnecessary tests
-
UI:
- Continue refactoring of Widgets
- many bug fixes
-
Batteries/Energy Storage Systems
- Battery-Protection: increase force-charge to 2 A by default
- FENECON Home: add startup procedure to Battery
- Soltaro Cluster B: Set StateChannels only if the corresponding racks are used
- Grid-Optimized-Charge: improve logic
- Implement Sinexcel as Battery-Inverter; drop ESS implementation
- GoodWe:
- implement smart-mode also for GoodWe ESS
- implement meter that measures emergency power
- Remove Predictive Delay Charge Controller (#1643)
- It was replaced by the more advanced "ESS Grid Optimized Charge" Controller (io.openems.edge.controller.ess.gridoptimizedcharge).
-
Input/Output
- IO Single Channel Threshold: refactor + allow multiple outputs
- JSON/REST-Api: improve permission handling
-
Dependencies