Releases: OpenEMS/openems
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
2021.17.0
With this release we add a production-ready Backend integration with the Odoo ERP system. It serves as an authentication provider as well as IoT device management platform.
Try it in the OpenEMS GitPod Demo: https://gitpod.io/#https://github.com/OpenEMS/openems/tree/develop
For more information see: https://openems.github.io/openems.io/openems/latest/backend/gitpod.html
The OpenEMS module for Odoo is located at https://github.com/OpenEMS/odoo-openems
Thank you @mlang97 for the contribution!
2021.16.0
This release comes with minor bug fixes and changes
Bug Fixes and Other Changes
2021.15.0
Highlights
Bug Fixes and Other Changes
- TypeUtils: fix conversion bugs and improve type safety (#1611)
- REST-Api: handle regex pattern syntax exception properly (#1616)
- Modbus/TCP Api Controller: improve error handling (#1613)
- FEMS Backports (#1617)
- Generic/Build/...
- Gradle: activate more detailed logs
- Host: allow Network Configuration for Role 'owner'
- Test-Framework and Simulator: improvements
- Controller SG Ready Heatpump: fix persistence priority
- Janitza meters: fix voltage and energy
- UI
- add support for theming
- refactoring
- Update Github Actions
- Backend
- Backend: handle User Language
- Batteries/Energy Storage Systems
- ManagedEss: add 'isManaged()' method for runtime detection
- Generic-ESS is now a Hybrid-ESS
- Battery Protection: require BMS data
- BYD Battery Box Commercial: set state levels
- FENECON Home Battery: numerous improvements
- Soltaro Batteries: numerous improvements
- Grid-Optimized-Charge-Controller: numerous improvements
- GoodWe: numerous improvements
- Electric Vehicle Charging
- EVCS Controller: bugfixes
- EVCS Hardy Barth: numerous improvements
- EVCS Keba: fix energy limit
- Generic/Build/...
- OpenEMS Backend as Docker container with InfluxDB preconfigured (#1298). Thanks @zoernert
- KACO blueplanet gridsave 50: drop obsolete ESS implementation (#1452)
- Update dependencies
- Bump OCPP-J and v1_6 from 1.0 to 1.0.1 in /cnf (#1598)
- Bump gson from 2.8.7 to 2.8.8 in /cnf (#1600)
- Bump jna from 5.8.0 to 5.9.0 in /cnf (#1601)
- Bump jsoup from 1.10.2 to 1.14.2 in /cnf (#1609)
- Bump pax-logging-log4j1 from 2.0.9 to 2.0.10 in /cnf (#1607)
- Bump org.apache.felix.webconsole from 4.6.2 to 4.6.4 in /cnf (#1608)
- Bump org.apache.felix.webconsole from 4.6.4 to 4.7.0 in /cnf (#1615)
- Fix compatibility with Apache WebConsole 4.7.0 (#1618)
- Bump org.apache.felix.http.jetty from 4.1.10 to 4.1.12 in /cnf (#1614)
- CI build fixes
2021.14.0
Highlights
- Similar-Day Predictor (#1573). Thanks @pooran-c
- Bosch BPT-S 5 Hybrid Energy Storage System (#1604). Thanks @waldtraut1981
Bug Fixes and Other Changes
- Refactor Channel-Source and Target information (#1595, #1597)
- Refactor Ess-Cluster (#1590)
- Refactor implementation, use ChannelManager for immediate updates to channel values, calculate weighted SoC and add JUnit tests
- Go-e Charger: Fix minimum and maximum hardware power calculation (#1582), Fixes #1580
- RevolutionPi improvements (#1562) Thanks @clehne
- improved debugLog() format, added some debug write channels and improved event process handling (read on BEFORE_PROCESS_IMAGE, write on EXECUTE_WRITE)
- also: Simulator BatteryDummy - added missing StartStoppable channels
- Backend implementation for installation assistent (#1589) Thanks @mlang97
- See also #1588 for UI development efforts for an OpenEMS installation assistant by @raphael-piller
- Improve handling of OSGi References and target filters (#1603). Thanks @sebastianasen for your valuable inputs
- Try to restart Components if they are unavailable
- Due to a race condition on startup, sometimes Components are unavailable to the ComponentManager. The related error message is
[Core.ComponentManager(1)] : Could not get service from ref
. We are fixing this by restarting (i.e. 'reconfiguring') the Component in such a case.
- Due to a race condition on startup, sometimes Components are unavailable to the ComponentManager. The related error message is
- Increase ComponentManager 'ConfigNotActivated' level to 'FAULT'
- On UpdateComponent via ComponentManager: reset target properties
- Before if a Component was referencing 'modbus0' and you would update it to 'modbus1', there were two possible behaviours. (1) if 'modbus0' was still existing, the update would work and the target filter would be set properly. (2) otherwise the target filter could not be set, because the Component would not reactivate. This would leave the Component in an error state. We are fixing this by always resetting the target properties.
- Set non-empty default target filter by default
- If the target filter is made available via 'Config.java' and the configuration property is left as an empty string, the error
Invalid syntax in target property for dependency
arises on activate, which showed to also cause wrong behaviour later. We fix this by setting a default target filter of(enabled=true)
- which is always true, but avoids the error
- If the target filter is made available via 'Config.java' and the configuration property is left as an empty string, the error
- Try to restart Components if they are unavailable
- Backports from FEMS (#1583)
- HybridManagedSymmetricBatteryInverter: set persistence priority for DC power/energy channels
- JsonUtils: add parser for JsonObject and JsonArray to OpenemsType.String:
- This fixes io.openems.edge.common.component.AbstractOpenemsComponent] ERROR : [ctrl0] Unable to parse Property [property] value [[""]] to [STRING]: JSON [[""]] is not a JSON-Primitive
- Array-Properties: handle datatype properly (#1586)
- Tries to extract 'one' value of the array, falls back to 'STRING' if there are more two or more values and handle 'IllegalArgumentException' instead of fail
- TypeUtils: fix possible NullPointerException 78f0b42
- Dependency updates
- Bump slf4j-api from 1.7.30 to 1.7.32 in /cnf (#1578)
- Bump date-fns from 2.22.1 to 2.23.0 in /ui (#1576)
- Update UI dependencies (#1584)
- Bump slf4j-api from 1.7.30 to 1.7.32 in /cnf (#1578)
- Bump d3 from 7.0.0 to 7.0.1 in /ui (#1594)
- Bump ngx-cookie-service from 12.0.2 to 12.0.3 in /ui (#1593)
- Bump angular-mydatepicker from 0.11.4 to 0.11.5 in /ui (#1592)
2021.13.0
Highlights
- Implementation of go-e Charger Home (#1541).
- Thanks @hogmoff for the effort as well as @nicoketzer and @sebastianasen for reviewing!
Bug Fixes and Other Changes
- Documentation: add SMA TRIPOWER 8 / 10 as compatible PV inverter (#1561)
- Add energy register mapping on Janitza UMG511 & UMG604 (#58)
- Update dependencies
- Bump org.eclipse.osgi from 3.16.200 to 3.16.300 in /cnf (#1536)
- Bump gson from 2.8.5 to 2.8.7 in /cnf (#1485)
- Bump postgresql from 42.2.22 to 42.2.23 in /cnf (#1567)
- Bump ng2-charts from 2.4.2 to 2.4.3 in /ui (#1565)
- Bump @ngx-formly/ionic from 5.10.21 to 5.10.22 in /ui (#1564)
- Bump angular-mydatepicker from 0.11.3 to 0.11.4 in /ui (#1559)
- Bump @types/uuid from 8.3.0 to 8.3.1 in /ui (#1555)
- Fix deprecation warnings for gson 204e7a7
- Switch to official eu.chargetime.ocpp via maven (#1574)
- eu.chargetime.ocpp now deploys artifacts to maven central repository. This commit switches to these libraries, instead of building them ourselves.
2021.12.0
Highlights
- Export Channels to Excel (#1526)
- This very helpful new feature adds a link in UI Profile to download an Excel file with all Channels and their current value. Also adds information about the 'source' of a Channel, e.g. the modbus register address. See #1526 for details
Bug Fixes and Other Changes
- UI: Flatwidget for selfconsumption (#1475)
- Backports from FENECON FEMS 4788e05
- ease implementation of @Modified with ModbusComponents
- improve Channels concurrency in AbstractOpenemsComponent
- improve error log message on updateReferenceFilter
- improve error log message in websocket OnNotification
- improve exception handling in websocket OnRequest
- improve exception handling in Rest-API handler
- Soltaro Single Rack battery: downgrade fault to warning
- TypeUtils: add fitWithin() and abs() methods
- ESS Fix Active Power Controller: apply new set-point faster using @Modified 77f872e
- Check duplicated Modbus Register to Channel mappings (#1543)
- This automatically checks and throws an error if there are multiple Modbus registers mapped to the same Channel
- Bump postgresql from 42.2.21 to 42.2.22 in /cnf (#1538)
- UI: drop deprecated angular2-uuid bf7d67d
2021.11.0
Highlights
- Implement Controller.Ess.GridOptimizedCharge 03ba135 988688a
- Combination of the PredictiveDelayCharge and the SellToGridPowerLimit controllers:
- Delays the charging of the AC or DC storage system based on predicted production and consumption given by the PredictorManager.
- Even during the delayed charging, the battery is able to force charge when the sell-to-grid power exceeds the configured "Sell-To-Grid maximum power limit".
- This is mainly used when only 70 percent of the maximum production is allowed to feed in to the grid.
Bug Fixes and Other Changes
- JsonUtils: improve parsing of Strings as booleans d2ba7b0
- UI: Flatwidget for consumption (#1472)
- SoC estimation improvement in simulator. (#1487)
- Improved the Soc calculation by using the double value instead of float and estimating the soc through current energy value in the battery.
- Upgrade to GitHub-native Dependabot (#1462)
- Fix parsing of empty string properties to Integer 2629601
- Simulator: remove obsolete min/maxActivePower config 39e76a1
- FENECON DESS: use unfiltered SoC value from Modbus 03022b4
- Update gradle to version 7.1 81c9f66
- Add ESS-Discharge-Power Channels to the Modbus registers (#1518)
- Merge Hybrid-Generic-ESS with Symmetric-Generic-ESS (#1519)
- This simplifies configuration in scenarios where you do not need to care if there is a DC-PV system connected to a Hybrid inverter or not. Example: GoodWe ET (hybrid) can be used without a DC-PV system.
- Bump org.apache.felix.http.jetty from 4.1.6 to 4.1.10 in /cnf (#1517)
- Bump postgresql from 42.2.20 to 42.2.21 in /cnf (#1515)
- Bump msgpack-core from 0.8.22 to 0.9.0 in /cnf (#1513)
- Drop obsolete bundles Refu.ESS and Streetscooter.ESS bb5c809
- Update UI dependencies (#1520)
- Bump fastexcel from 0.12.9 to 0.12.11 in /cnf (#1483)
- Bump org.apache.felix.inventory from 1.0.6 to 1.1.0 in /cnf (#1516)
- Bump org.apache.felix.webconsole from 4.6.0 to 4.6.2 in /cnf (#1514)