Releases: OpenEMS/openems
Releases · OpenEMS/openems
2021.7.0
Bug Fixes and Other Changes
- Battery-Protection: Fix Force-Charge/-Discharge in Block-State (#1436)
- add link from Block to Force states
- add statemachine diagram for documentation
- Update dependencies
- Bump org.apache.felix.scr from 2.1.20 to 2.1.26 in /cnf (#1398)
- Bump HikariCP from 4.0.2 to 4.0.3 in /cnf (#1406)
- Bump org.eclipse.osgi from 3.16.100 to 3.16.200 in /cnf (#1415)
- Bump org.apache.felix.http.jetty from 4.1.4 to 4.1.6 in /cnf (#1416)
- Bump jna from 5.7.0 to 5.8.0 in /cnf (#1417)
- Bump moshi from 1.11.0 to 1.12.0 in /cnf (#1431)
- Bump Java-WebSocket from 1.5.1 to 1.5.2 in /cnf (#1434)
- Fix various typos (#1429)
2021.6.0
Bug Fixes and Other Changes
- Update Angular to version 11 1698c8e
- Update to latest Ionic template e0753f4
- using
ionic start
command and applying all files to OpenEMS UI
- using
- RRD4j: fix default step seconds; improve post-processing 831c04d
- default step seconds had been accidentially left at 1 second; should be 5
- update datafile migration
- improve data post-processing for uneven split
- Continuous Integration:
- Docs: Fix Component Communication page ab69747
- Bump fastexcel from 0.12.3 to 0.12.7 in /cnf (#1418)
- Fix Fenecon Home Battery Capacity Calculation (#1421)
2021.5.0
Highlights
- Implement GoodWe as Battery-Inverter for Generic-ESS (#1323)
- Be aware, that configuration paramaters for GoodWe Chargers need to be updated!
- Implement KMTronic 4-Port Relay Board (#1410)
- Update RRD4j Local Timeseries database (#1402)
- Add 'PersistencePriority' to Channels
- "VERY_HIGH" for Sum-Channels
- "HIGH" for Nature-Channels
- "MEDIUM" for local Channels that might be important - like Relay-Status of WAGO Fieldbus
- ...
- RRD4j only persists Channels with at least the configured priority
- Write RRD4j databases very seldomly, approx. every 5 minutes
- Reduce the size of RRD4j databases
- Migrate last 30 days of old databases
- To manually delete RRD4j databases of Channels that do not have sufficient persistence priority, execute in the RRD4j directory:
- Add 'PersistencePriority' to Channels
find . -type f -size +700k -exec rm -rf {} \;
-
Improve Controller.Backend.Api (#1403)
- simplify worker
- collect in sync with Cycle; send async
- add JUnit tests
-
Backport FEMS Backend improvements (#1404)
- Battery-Protection: Set Persistence-Priority
- Backend Bundle-Names:
- move APIs to common
- rename remaining backend bundles
- Metadata-API
- add callback for isInitialized
- add AbstractMetadata
- Start Edge+UI-Websocket only after Metadata is initialized
- Rename OdooMetadata to be in line
- WebSocket:
- use ThreadPoolExecutor for handling messages
- add debug-mode: prints regular debug log status
- make MaximumPoolSize configurable
- use bounded queue and fixed size pool
- Timedata improvements
- EdgeCache: apply Cache only once per minute
- Influx: Use bounded ThreadPool to get backpressure when writing data (because we are not able to update to latest InfluxDB library, that has this feature out-of-the-box)
- Apply renamings on GoodWe
- Fixes in UI
-
Add JSON-RPC Requests: add timeout parameter (#1412)
- This non-standard extension of the JSON-RPC protocol adds a "timeout" parameter in seconds. This is the maximum time that we wait for a JSON-RPC Response. Timeout is defined as an
Optional
:- timeout > 0: use the given timeout in seconds
- timeout <= 0: apply no timeout, i.e. wait forever
- no timeout: use default timeout of 60 seconds
- This non-standard extension of the JSON-RPC protocol adds a "timeout" parameter in seconds. This is the maximum time that we wait for a JSON-RPC Response. Timeout is defined as an
Bug Fixes and Other Changes
- Battery-Protection: apply to more Battery implementations (#1407)
- drop deprecated implementation
- ComponentManager: remove 'Null'-Properties in Update-Request c209ab3
- GoodWe Battery-Inverter: fix possible NullPointerException 5a7ddaa
- Backend EdgeWebsocket: fix possible NullPointerException if no UiWebsocket exists 839a471
2021.4.0
Highlights
- Implementation of Advanced Battery Protection algorithms (#1376)
- The "Battery-Protection" implementation serves as an addition to low-level battery management systems (BMS). It allows a fine grained definition of battery protection parameters and handles logics that are shared between different BMS implementations.
- Implementation of a new Prediction architecture (#1327)
- This new Predictor architecture uses modular
Predictors
, e.g. implementation of thePredictor24Hours
. These Predictors can announce for which channels they allow a prediction and provide aPrediction24Hours
result. - The entire process of getting a prediction is handled by the
PredictorManager
. It knows which actual Predictors to ask for their prediction, post-processes these predictions and returns them either directly in code via thePredictor::get24HoursPrediction()
method or via aget24HoursPrediction
JSON-RPC request to the_predictorManager
component. - developed within the EMSIG project: https://openems.github.io/openems.io/openems/latest/randd.html#_emsig
- This new Predictor architecture uses modular
Bug Fixes and Other Changes
- Simulator: BatteryDummy - add missing StartStoppable channels (#1392) Thanks @clehne
- Migrate from Travis CI to GitHub Actions (#1397)
- This fixes our continuous integration. On every push the entire source code gets built automatically and checked for JUnit test errors.
- On push to
develop
the OpenEMS docs and Javadoc get rebuilt: https://openems.github.io/openems.io/openems/latest/introduction.html
- Improve OpenEMS documentation (#1399)
- Integrate some documentation that was created within the EASY-RES research project: https://openems.github.io/openems.io/openems/latest/randd.html#_easy_res
- Update dependencies:
- BatteryProtection definition for Soltaro Single B (#1376); also:
- Add new features to PolyLine for type safe and fluent calls
- Add TypeUtils
min
andmultiply
for type Double - Add custom Callbacks to ComponentTest-Framework
- Add TypeUtils to convert safely from Integer/Float to Double
- TypeUtils.assertNull() throws an IllegalArgumentException; adapt OperatingSystemDebianSystemd-Service accordingly
- Cleanup and apply autoformat
- improve null-handling in OpenemsComponent
- Improve State-Machine logging
- Sinexcel: ignore active power < 100 W
- Reuse AllowedChargeDischargeHandler for Sinexcel-ESS
- Evcs cluster SelfConsumption Patch 354e874
2021.3.0
2021.2.0
Highlights
- Add Zenodo Digital Object Identifier (DOI) for scientific referencing
If you use OpenEMS in your scientific research, please use our Zenodo Digital Object Identifier (DOI) as reference: - UI: Add Delayed Sell To Grid Widgets (#1369)
- Lots of improvements on Batteries, Battery-Inverters and Generic-ESS (see below for details)
Bug Fixes and Other Changes
- UI: Historiy Consumption Fix 7e9a9e1: show correct energy values for other consumption
- Fix controller behaviour in case of unavailable values (#1365)
- This commit replaces
orElse()
method calls withgetOrError()
.
In case of unavailable (UNDEFINED) values, e.g. because an external meter is not available, this causes the Controller to throw an Exception instead of assuming the value is zero.
An exception in a Controller sets theRunFailed
Fault-channel.
Specifically for control of energy storage systems: if no set-point is given, charge/dischare with zero Watt is set as default.
Set ActiveConsumptionEnergy of the EVCS. (#1362)
- This commit replaces
- Set ActiveConsumptionEnergy of the EVCS.
- Adapted unit tests due to changes on the Dummy classes.
Changed the energy channel acconrding to @StefanFeilmeier 's comments.
Set the KEBA hardware maximimum current depending on the dip-switch settings and no longer on the "curr hw" value. - Adjust missing corrections.
Set State to Not ready for charging if there is no propper connection to the EV and EVCS.
- Adapted unit tests due to changes on the Dummy classes.
- UI: History Bug Fixes + General Fixes (#1369)
- history label time unit adjusts automatically
- show alias for fixactivepower live widget + disable browser translate
- remove unsed imports and sort
- Remove default configurations for JSON/REST and Modbus/TCP Api (#1377, #1272). Thanks @denis-jasselette-jc for bringing that up
- Lots of improvements and bug fixes for Batteries, Battery-Inverters and Generic-ESS:
- Soltaro C: replace dummy characteristic (#1364)
- Fix Generic ESS ErrorHandler: explicitely unset Fault-Channels (#1368)
- KACO battery inverter: interprete standby mode as stopped state (#1373)
- Soltaro Battery: fix temperature channels (#1374) change temperature values to signed
- Battery: improve handling of allowed charge/discharge currents (#1367)
- implements allowed charge/discharge logic for all soltaro systems including force charge/discharge mode
- move CellCharacteristic interface to battery api
- update docs folder
- move setAllowedCurrents class to Battery API package, create settings for different behaviour
- add read register for number of modules, add register for setting soc, add cell voltages to debuglog
- integrate battery protection (allowed currents), adapt modbus protocol, checkstyle
- Soltaro Single B: fix register address
- ESS KACO 50: update handling of battery data (#1378)
- Fix SunSpec: rounding issues with ScaleFactors (#1380)
- The SunSpec protocol definition uses integer registers with separate scalefactor-definitions in separate registers. Due to the way OpenEMS is setting a register from a Write-Channel, the value was rounded to integer before the scalefactor was applied.
- This pull request fixes the behaviour by using FloatWriteChannels instead of IntegerWriteChannels for SunSpec registers with scalefactor.
- Battery-Inverter KACO: improve watchdog handling c9e9e08
- increase watchdog timeout to 60 seconds
- trigger the watchdog every 10 seconds
- ESS Generic: improve handling of force charge/discharge corner cases 81dcb84
- Fix various typos (#1361)
2021.1.0
Highlights
- Implement SOCOMEC Countis E44 (#1345)
- Implement Janitza Meter UMG 511 (#1349)
- Implement ESS Delayed Sell to Grid Controller (#1355)
- Several improvements in the REST API (#1352), thanks @martingruening!
- Debug-Log-Controller: allow wildcards for ignore components + non-condensed output (#1329)
Bug Fixes and Other Changes
- FENECON Commercial 40: cleanup states (#1343)
- Add compatibility with different BYD Battery-Box Commercial versions (#1353)
- move readElementsOnce()-method to new "ModbusUtils" class (#1353)
- update Sunspec and Socomec implementations to use new ModbusUtils (#1353)
- Improvements on UI widget for "Hochlastzeitfenster" 7829a7f
- Battery Protection Algorithm for Soltaro.Single.B (#1329)
- All Battery-Protocol Errors to Warnings to avoid GenericEss Stop
- set "0" limit when no data is available
- reduce retry attempts to avoid race condition with Generic-ESS
- Disable ALARM_LEVEL_1_SOC_LOW Warning
- Improvements on Generic-Ess (#1329)
- Generic-Ess: apply ramp for allowed charge/discharge power
- KACO battery inverter: do not set possibly negative charge/discharge current
- ManagedSymmetricEss: avoid "Given LowLimit is higher than HighLimit" exception on rounding error
- Internal framework improvements (#1329):
- Improve ApiWorker logs
- Improve Logging in StateMachines: Add AbstractContext that takes a parent Component and handles logging
- Fix Fenecon Mini State-Machine
- Improve ESS Sinexcel Battery-Handling
- Apply startup ramp for Allowed Charge/Discharge Power
- Fix handling of negative values for Current [A] limits; i.e. on force charge/discharge
- ESS Sinexcel: identify state as "Automatic Standby-Mode"
2020.26.0
Highlights
- Implement the Hardy Barth "Salia" Electric Vehicle Charging Station (#1337)
- Massive improvement for the Maschinenfabrik Reinhausen GRIDCON PCS implementation (#1294). Thanks @wgerbl
- Energy Storage System: Fix-Active-Power-Controller: Refactor + add UI Widget (#1325)
- SG-Ready HeatPump control: add History Wdiget for UI (#1311)
- Timeslot Peak-Shaving ("Hochlastzeitfenster") control: add Live and History Widget for UI (#1326)
Bug Fixes and Other Changes
- Various documentation improvements and fixes (#1330). Thanks @bantu for your contribution
- Generic Energy Storage System: add the Modbus-Slave table. (#1328)
- Fix more various source and comment typos (#1317, #1332). Thanks @luzpaz
- Bump rrd4j from 3.7 to 3.8 in /cnf (#1331)
- Add improvements for old FENECON energy storage systems + minor changes (#1324)
- Scheduler: improve handling of errors (#1333)
- KEBA Electric Vehicle Charging Station: added two state channels, to react on a missing energy meter and incompatible product-series. (#1334)
- UI: History add metered consumption to total consumption chart (#1342)
2020.25.0
Highlights
-
Add UI widget for Smart-Grid-Ready Heatpump control (#1291)
-
Implement FENECON Home Battery (#1268)
-
OpenEMS Component test framework: validate the implemented Channel-IDs (#1321)
Bug Fixes and Other Changes
- Improvements to RRD4j (#1314)
- Add 'resolution' to RRD4j fetch request
- Fix possible miss of a Cycle in RecordWorker
- Improvements to ComponentManager workers (#1312)
- DefaultConfigurationWorker: add logging on action
- OsgiValidateWorker: search for duplicated Component-IDs in all configurations, not only enabled ones
- EdgeConfig: allow setting ".target" properties
- GoodWe fixes (#1313)
- fix identification of GoodWe battery inverter if there was no modbus connection initially
- fix nullpointerexception due to late setting of 'this.config'
- Name property "modbusUnitId" according to standard naming convention
- Fix various source typos (#1315)
- OsgiValidateWorker: do not complain if defective components are disabled (#1316)
- UI: fix of ion-toggle (#1320)
- Update dependencies #1318, c8dcccb
2020.24.0
The OpenEMS Conference 2020 was held this week. The videos will soon be available on https://openems.io/
Highlights
- Implement Asymmetric Active Power Voltage Characteristic and Symmetric Reactive Power Voltage Characteristic Controllers (#1258) Thanks @huseyinsaht and @venu-sagar
- These Controllers actively help to support grid stability with an energy storage system. Tested in research projects like EASY-RES and actual customer projects with European grid operators
- This pull-request also adds a generic PolyLine implementation
- Improve GoodWe ET + BT battery inverters implementation (#1201) Thanks @venu-sagar
- This pull-request brings full control for the GoodWe ET and BT battery inverters
- ATTENTION: Renaming bundle to GoodWe instead of GoodWe.ET; this will break existing configurations!
- Implement Controller for a SG-Ready Heat Pump (#1289) Thanks @sebastianasen
- Controls a heat pump that implements the SG-Ready standard via two Relay contacts, depending on surplus power and battery state-of-charge.
- Improve Debug-Log-Controller 47cbae5
- This adds useful features to the Debug-Log-Controller for developers and technical users
- add configuration options:
additionalChannels
: add additional Channels to the logignoreComponents
: ignore the output of certain Components
- Implement Virtual Subtract Meter (#1290)
- _This adds a virtual meter. Example use-case: create a virtual Grid-Meter from Production-Meter, Consumption-Meter and Energy Storage System (ESS):
- by definition Consumption is defined as `Consumption = ESS + Grid + Production (AC)
- or: `Grid = Consumption - ESS - Production (AC)
- this can be achieved by configuring the Consumption-Meter as Minuend and Production-Meter and ESS as Subtrahends.
- _This adds a virtual meter. Example use-case: create a virtual Grid-Meter from Production-Meter, Consumption-Meter and Energy Storage System (ESS):
- Add support for Socomec e27 e28 meters (#1303) Thanks @greemo
- Further development and rework of the EVCS (Electric Vehicle Charging Station) components (#1263) Thanks @sebastianasen
Bug Fixes and Other Changes
- Socomec: fix detection of threephase meter db61532
- OsgiValidateWorker: Delay announcement of defective Components; this hides non-critical errors due to time delay on activate 32ca90a
- Core.Host: persist configuration of network and USB devices in EdgeConfig (#1292)
- Avoid resolve errors in EdgeApp and BackendApp.bndrun (#1297), Fix #1296
- Let Travis fail if resolving changes the existing bndrun files
- Always update EdgeApp + BackendApp bndrun files in prepare-commit script
- Fix existing resolve error in BackendApp.bndrun
- FENECON DESS: fix calculation of State-of-Charge value c3cb0c1
- PredictiveDelayCharge-Controller: fix class variables bug (#1299)
- Improve WAGO Fieldbus implementation (#1301)
- DebugLog-Controller: sort Components also by Component-ID number
- Before it would sort: _sum[foo:bar|EssSoc:50 %] dummy1[def:uvw] dummy10[jkl:opq] dummy2[ghi:rst]
- Now it sorts: _sum[foo:bar|EssSoc:50 %] dummy1[def:uvw] dummy2[ghi:rst] dummy10[jkl:opq]
- Add invert configuration for Schneider smartlink (#1302) Thanks @greemo
- Fix typos #1288 #1287 #1307 #1308 Thanks @luzpaz