Releases: OpenEMS/openems
Releases · OpenEMS/openems
2021.9.0
Highlights
-
Implement MQTT (#1395)
- This adds support for the MQTT protocol in OpenEMS Edge. The new "Controller.Api.MQTT" publishes data to an MQTT broker.
- It uses the following MQTT topics:
edge/{OpenEMS-Edge-ID}/channel/{Component-ID}/{Channel-ID}
- Data of Channels is published on change and at least every 5 minutes to these topics.
- Example:
edge/edge0/channel/_sum/GridActivePower
edge/{OpenEMS-Edge-ID}/channel/lastUpdate
- Timestamp of the latest data update on any of the Channel topics above.
- Example:
edge/edge0/channel/lastUpdate
edge/{OpenEMS-Edge-ID}/edgeConfig
- Configuration of the OpenEMS Edge instance is published to this topic as a JsonObject.
- Example:
edge/edge0/edgeConfig
- The implementation is built on version 5 of the MQTT protocol and was tested with Eclipse Mosquitto (https://mosquitto.org).
- Be aware that this implementation only marks the start of MQTT support in OpenEMS. Therefor implementation details might change with future versions.
-
Improved Login and Session-Handling (#1013)
- New User-Area in UI
- Allow login on Backend
- Dummy and File Metadata services store sessions in memory
- Odoo Metadata service uses Odoo sessions
- Add option for logout
- Always explicitly authenticate via JSON-RPC Request (not via http headers)
Bug Fixes and Other Changes
- Add Compatibility with IntelliJ and Amdatu Plugin (#1460), thanks @DerStoecki/Consolinno
- Update dependencies #1455, #1456, #1457, #1458, #1459
- CHP Controller: Fix possible NaN-error #1013
- Fix "Factory definition for [*] is missing." error in UI #1013
- UI Cleanup for websocket state + resubscribe #1013
- Update UI with a little bit better state-machine; should switch NgRx eventually #1013
- Bridge.OneWire: add readme for JSON-RPC methods 49af2ab
- UI: FlatWidget for Storage (#1445), thanks @lukasrgr
- GoodWe: update calculation of DC and AC Power and Energy 700b0e3
- SystemdNetworkd: improve parsing of configuration files c4ca421
- SymmetricBatteryInverter: add missing PersistencePriority 8e142f9
- this fixes issues with energy values for GenericEss
- Add Hostname Channel "_host/Hostname" 1d1aea3
2021.8.0
Highlights
- Downgrade apache.felix.scr to 2.1.20 (#1438)
- It seems like apache/felix-dev@4102a86 was breaking empty target filters
- See https://community.openems.io/t/unsatisfied-reference-for-datasource/486
- We are in the process of restructuring the software architecture of the UI. Thanks @lukasrgr for this contribution!
- Targets are:
- better modularization and generalization, e.g. automated subscribe and unsubscribe of channels
- much simpler development of new Widgets, with less boiler-place code
- align naming of Components with OpenEMS Edge
- Generic wigets in the Live view for the OpenEMS Edge Components "Controller.IO.FixDigitalOutput" and "Controller.Ess.FixActivePower (#1414)
- UI: Flat-Widget for autarchy, fix bug in Fix.DigitalOutput (#1443)
- Targets are:
- Refactor ESS Linear Power Band Controller (#1437)
- migration to modern bundle layout
- configurable start direction, i.e. start with charge or discharge ramp
- Channels for StateMachine and TargetPower to simplify tracing
- add JUnit test
- OpenEMS Backend: significantly optimize ThreadPools (#1440)
- Reduce the total number of ThreadPools (before there was one ThreadPool per WebSocket. Now it's one per Component.)
- Set namespace for ThreadPools to simplify debugging
Bug Fixes and Other Changes
- Battery Soltaro
- FENECON Home Battery: add Battery Protection (#1425)
- ConfigurationAdmin: avoid NullPointerException (#1441)
- GoodWe-Battery-Inverter:
- fix calcuation of MaxAcImport Channel 442263f
- Refactor User classes for Backend and Edge (#1442)
- Create a more logical common structure for Users in OpenEMS Backend and Edge.
- OneWire-Bridge: GetDevicesRequest reads all connected OneWire devices (#1442)
- Fenecon Mini: improve handling of MaxApparentPower (#1442)
- Fix Jsonrpc layout between Edge, UI and Backend da6a42e
- UI - Header: changed state 'info' for every non-admin to 'checkmark' (#1454)
- EdgeWebsocket: fix broadcast send of EdgeConfigNotification 1943c7b
- Use ThreadPoolUtils.shutdownAndAwaitTermination() throughout the project ade210b
- EdgeConfigWorker: avoid ConcurrentModificationException on dynamic Channels 6d44a6c
- Sum: fix reference to Timedata 2c53e20
- This had caused the Sum-Component to activate, deactivate and activate again on startup, resulting in a RejectedExecutionException in Controller.Backend.Api
- Update gradle to 7.0 324ce54
- Update UI dependencies 24741b4
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)