Releases: OpenEMS/openems
2020.13.0
Edge
-
Implement SMA Sunny Tripower PV Inverter (#1154)
- Tested on SMA SUNNY TRIPOWER 15000TL / 20000TL / 25000TL
- https://www.sma.de/produkte/solar-wechselrichter/sunny-tripower-15000tl-20000tl-25000tl.html
-
Implement OCPP-Server & more for electric vehicle charging (#1142) Thanks @sebastianasen - this is huge!
- Uses ChargeTimeEU OCPP server implementation: https://github.com/ChargeTimeEU/Java-OCA-OCPP
- Start implementation of electric vehicle charging stations by
- ABL
- IES Keywatt
- Numerous improvements on electric vehicle charging algorithms
-
Update Channel methods (#1165).
-
Update methods to access Channels as discussed in #1046 and started in #1099. This avoids calls to
setNextValue()
andsetNextWriteValue()
and should make the framework much more understandable and lower the learning curve. -
Each Read-Channel of a Nature Interface gets following methods: (example for a Channel
NAME
of type Integer)IntegerReadChannel getNameChannel()
Integer getName()
_setName(Integer value)
_setName(int value)
-
Write-Channels also get a method
setName(Integer value)
that internally calls thesetNextWriteValue()
method
-
-
Fix for Soltaro Cluster Version B 395e563
-
Fix for Socomec Diris A14 0a63657
-
Update for Carlo Gavazzi documentation f67c2c4
UI
2020.12.0
Edge
- Add generic implementation for State-Machines (#1099)
- Implementing logic of algorithms as State-Machines is a well established best-practice in OpenEMS Edge. The generic implementation provides a well-engineered template for implementing such State-Machines. See example: https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.ess.generic/doc/statemachine.md
- New OpenEMS Nature "BatteryInverter" (ManagedSymmetricBatteryInverter, SymmetricBatteryInverter) (#1099)
- Implement Generic ManagedSymmetricEss (#1099)
- This builds an energy storage system as a combination of a "Battery" with a "Battery-Inverter"
- New feature "Start-Stop" (#1099)
- Implementing the 'StartStoppable' interface marks a device or service that can be started or stopped
- Add JUnit Test-Framework for all kinds of OpenemsComponents (#1099)
- Before there was already a framework to conveniently create JUnit test cases for OpenEMS Controllers. The enhanced version allows testing all kind of components. See https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.ess.generic/test/io/openems/edge/ess/generic/symmetric/GenericManagedSymmetricEssTest.java#L27 for an example that tests the above mentioned State-Machine.
- Generic implementation of SOCOMEC meters (#1157, 25cfcd3)
- Just configure
Meter.Socomec.Singlephase
orMeter.Socomec.Threephase
. The actual type and modbus protocol of the Socomec meter is identified automatically. - Implemented singlephase meters:
- Socomec Countis E14
- Implemented threephase meters:
- Socomec Countis E24
- Socomec Diris A10
- Socomec Diris A14
- Socomec Diris B30
- Just configure
- Apply Getters and Setters for Nature-Channels: see #1046 (comment)
- Refactoring of "Battery" interface (#1099)
- Improvements for FENECON Mini implementation 32b7d57, 0921cf1
- GoodWe ES: Add configuration for Capacity #1152
- DcPredictiveDelayCharge-Controller: allow multiple chargers (#1153)
UI
- Show Metered Consumption + FixDigitalOutput History Charts (#1155)
- add metered consumption as history chart
- add chart for fixdigitaloutput component
- Update dependencies aed3fc0
Backend
- JSONRPC: enable subscribe to Channels of multiple Edges f99ebcd
2020.11.0
Common
- Drop unused git revision information in manifest files 876771b
- This avoids problems for newcomers and was not used anyways. See https://community.openems.io/t/problem-in-run-openems-edge-and-start-simulator/205/6
- Update dependencies
Edge
- WAGO: compatibility with newer fieldbus couplers + all kinds of digital output modules (#1136)
- Tries to read old 'ea-config.xml' and new 'io_config.xml'
- Dynamically reads the number of output channels from xml file for WAGO 750 5xx-modules
- Meter Carlo Gavazzi EM300: add invert config setting (#1140)
- Improvements to GoodWe ET implementation (#1141)
- Added the max apparent power reading from ModBus register. and also few code refactoring.
UI
- Collected UI improvements (#1143)
- add possibility to pick level when heatingelement is set to MANUAL_ON in heatingelement advanced widget
- add help button which links to openems.io docs for chpsoc, evcs, singlethreshold, heatingelement and fixdigitaloutput
- add metered consumption to consumption flat and advanced widget
- remove workmode kwh from heatingelement advanced widget
2020.10.0
Edge
- Implement BYD Battery-Box Commercial C130 #1120, thanks @huseyinsaht
- Implement Janitza UMG 604 meter (#1116), thanks @pooran-c
- Add
_sum/EssDischargePower
Channel 286ab73- For AC coupled energy storage systems this is the same as EssActivePower; for DC coupled or hybrid ESS this is the EssActivePower minus ProductionDcActualPower, i.e. the power that is actually charged to or discharged from the battery.
- IO Heating-Element Controller:
- Add Modbus-Slave definition for ESS Sinexcel #1132
- Fix: InfluxDB data collection for WRITE_ONLY Channels 5a87113
- Fix: GoodWe apply power setpoints 0a5d741
- Fix: Discovergy implementation with latest API for Production meters #1130
- Fix: Pro 9-12 read-write Channel-IDs 28b2bf0
- Fix: Modbus-Api Controller access on Write-Only registers + improve Javadoc + apply Checkstyle
UI
- update pickdate period + minor changes (#1124)
- when next day or next week is reached pickdate will automatically switch to the next day/week
- no changes to custom dates made
- resubscribe when websocket is reestablished
- Update dependencies
Common
2020.9.0
Common
- Fix severe bug caused by an old version of PAX Logging. See #1104 and https://community.openems.io/t/cannot-activate-template-controller/198/10
- Update dependencies, add explicit version dependencies for core OSGi libraries
- Improve Checkstyle to require 'this' #1101
Edge
- Improve logging outputs. 6b7ac51, ceab6dd, 32d2df5
- Fixes for IO Heating-Element Controller #1106, 72bc2ea, 03f2fd5
- Fix possible NullPointerException in OutOfMemoryHeapDumpWorker 162cab1
- Update "_Property"-Channels on @Modified-event 18f4670
- Fix Soltaro Single-Rack Version B d89c5ce, 3b6279d
- Implement Soltaro Rack Version C (#1101)
- Add Level::isAtLeast(Level) method #1101
- Implement REFUstore 88k Battery Inverter (#1115) Thanks @WolfgangMiethaner
UI
- Fix showing widget twice a9a37f4
- Add check if nature ist defined in getFactoriesByNature() (#1113). Thanks @ahummelsberger
- Add charts and other small changes (#1107)
- change of phase 1 color to orange (red is too much in use for charge values)
- small code fixes
- add chpsoc history chart
- add heating element chart
- adjustments on heating element widget
- automatic value update for history widgets and charts
2020.8.0
Common
Edge
-
IO Heating Element Controller (#794): Controls a three-phase heating element via Relays, according to grid active power
-
Add Port configuration to Modbus/TCP bridge eefcb96
-
Improvements for FENECON Commercial 40, Pro 9-12 and Mini systems 106f04a 46f5286
UI
- Combined update #1100
- re-adjust side menu
- exchange library of pickdatecomponent
- add current day highlighten + popup animation to pickdatecomponent
- second rate widget class error fix
- full angular 9 update
- singlethreshold history widget: exchanged y-axis of chart
- singlethreshold history chart: correct use of yAxis if there are only % values
- fixIO prevent sending updatecomponentconfig on init of advanced widget
- add charge/discharge to peakshaving history widgets
Backend
2020.6.0
Common
- Improve logging c875791
- start pax logging api as early as possible
- reduce default log level to INFO
- move logging configuration to DefaultConfigurationWorker
- Improvements in EdgeConfig handling (#1074) (#1076)
- remove "isEnabled"; it's already covered by the 'enabled' property
- improve "getAsText" method
- Websocket.Api: do not collect EdgeConfig if no websocket is connected
- Create EdgeConfigFactory that takes care of building and caching EdgeConfig
- Cache EdgeConfig and only incorporate ConfigurationEvents on Change; improves speed a lot
- Fix timing issue. Before it could happen, that EdgeConfigFactory would read an old configuration as the OpenEMS Component had not been initialized fast enough.
- Improve formatting of EdgeConfigDiff
- Fix handling of disappearing Components
- Use EventAdmin to distribute updated EdgeConfig
- Handle update of EdgeConfig by EdgeConfigWorker; this is required to get all available Channels
- Apply explicit version numbers for dependencies (#1078); also provide slf4j.api, gson and guava per default for every bundle
- Update Backend, Edge and UI dependencies c9c26ad 18a52aa
Edge
- Fix behaviour of PID filter in low-priority Controllers 3ac5c31
- This commit fixes a bug that would happen when a Controller that is using a PID filter has lower priority than another Controller; e.g. FixActivePower-Controller with higher priority than PeakShaving-Controller.
- 1st: there was an issue that low+high limit would not be applied when they are equal - which happens e.g. after FixActivePower
- 2nd: target value is now reduced to low+high limits before calculation starts; this avoids an always increasing error in above constellation
- 3rd: when input already equals target; stop early as we are already there
- also refactored "applyPidFilter" to use integers only; this is required for the "error = 0" clause to work properly
- Improvements to FENECON DESS (#1067)
- Set MaxApparentPower and Capacity Channels
- Fix B-Control meter implementation (#1069)
- Soltaro Battery Handling Controller (#1075)
- GoodWe ET write implementation (#1077)
- Add invert option to CHP-SoC-Controller (#1037)
UI
- improve layout in UI log view c875791
Backend
- Backport Backend improvements from fems (#1068)
- improve handling of FileTypeConflicts:
- Enable conversion of Float and Double to Integer
- Try again on error (this is required for _property channels)
- Configure pax logging only if it had not been configured before
- Reduce logs on startup: introduce "isInitialized" state in Metadata service
- Allow update of EdgeProductType
- Clear debug system out printlns
- improve performance to Postgres database: Use HikariCP: A solid, high-performance, JDBC connection pool https://github.com/brettwooldridge/HikariCP 141d605
2020.5.0
Edge
-
Add Asymmetric Peakshaving Controller (#1051)
-
Add Channel-Single-Threshold Controller (#979)
- Generic Controller that sets a digital output according to the value of given Channel - e.g. turn a Relay on or off, when configured input channel (e.g. State-of-charge) is above or below a given threshold respectively.
-
Add DefaultConfigurationWorker. Creates default configurations for deployment. (#1054), 88f8033, 6c8880c
- default config for Controller.Api.Rest.ReadOnly and Controller.Api.ModbusTcp.ReadOnly
-
Fixes and improvements on PID filter (#1059)
- Add Excel PID Simulator (see doc-folder)
- Add tests for PidFilter class (created using Excel PID Simulator)
- Add SetActivePowerEqualsWithPid Channel on ManagedSymmetricEss
- Fix PID behaviour when close to min/max limits: never reset ErrorSum
- Drop unused features from PidFilter class
- Use SetActivePowerEqualsWithPid in Symmetric PeakShaving, Asymmetric PeakShaving and Balancing Controllers
- Add and fix tests in Symmetric PeakShaving, Asymmetric PeakShaving and Balancing Controllers
-
EdgeConfig: default directory for Edge related files is now c:/openems/ 1ac7ae8
-
EdgeConfig: Fix NullPointerException "ocd.getAttributeDefinitions(filter)" returns an array of attribute definitions or null if no attributes are selected 1dd6734
UI
- Improvements for Symmetric Peakshaving
- Add Asymmetric Peakshaving Controller (#1051)
- General UI adjustments (#1050)
- hide widget if component is not enabled
- add charging target to modal evcs widget
- adjust unitvalue pipe for displaying '-' on null values
- UI: FEMS-Settings Adjustments (#1036)
- add button at beginning/middle of array in repeat component
- add alias to edit config component
- add icons to profile in fems settings
- add rework of install components
- UI Overhaul (7ef9dd4)
- fix of Expression has changed after it was checked error
- sorted modules etc.
- removed unnecessary subscribes
- reworked energy chart for better visibility
- reworked widgets to work with components instead of controllers as variable names
- reworked translation variables for constant notation (camelCase for variables)
- set edge port 8085 as default environment (#1064)
Common
- Add documentation for openems edge core bundle (#1054)
2020.4.0
Common
- Add information about R&D project MEMAP #1044 https://openems.github.io/openems.io/openems/latest/randd.html#_memap
- Fix readme for REST-Api Controller 71a05b9 https://openems.github.io/openems.io/openems/latest/edge/controller.html#_rest_api_controller
- Update UI and Java dependencies 9c283ab
Edge
- Improvements to Simulation capabilities
- Improve CSV datasource 5443338
- Move existing CSV Datasource with predefined CSV files to "Simulator DataSource: CSV Predefined"
- Add new "Simulator.Datasource.CSV.Direct". It allows configuring the CSV content directly in Apache Felix
- Allow CSV without titles
- Fix NRC (non-regulated-consumption) meter and Reacting GridMeter: this allows simulating Loads using a simulated NRC Meter 9de12ea
- Full documentation on this feature is still missing, but it alread proved to be helpful in a university lecture about energy flows. To create a simple, static enery flow with grid, pv production, storage and loads that can be visualized in OpenEMS UI, configure:
- to simulate a consumption of 5000 W, resulting in buy-from-grid 5000 W
- Simulator DataSource: CSV Direct
- Component-ID: "datasource1"
- Source: "5000"
- Simulator NRCMeter Acting
- Component-ID: "meter1"
- Datasource-ID: "datasource1"
- Simulator DataSource: CSV Direct
- Simulator GridMeter Reacting
- Component-ID: "meter0"
- to add a production of 10000 W to the simulation, resulting in sell-to-grid 5000 W
- Simulator DataSource: CSV Direct
- Component-ID: "datasource2"
- Source: "10000"
- Simulator ProductionMeter Acting
- Component-ID: "meter2"
- Datasource-ID: "datasource2"
- Simulator DataSource: CSV Direct
- to add a battery in self-consumption optimization mode to the simulation, resulting in 0 W grid exchange and battery charging of 5000 W
- Simulator EssSymmetricReacting
- Component-ID: "ess0"
- Controller Balancing Symmetric
- Component-ID: "ctrlBalancing0"
- Ess-ID: "ess0"
- Meter-ID: "meter0"
- Simulator EssSymmetricReacting
- to simulate a consumption of 5000 W, resulting in buy-from-grid 5000 W
- Improve CSV datasource 5443338
- Fix bug in RRD4j Timedata 586460c; thanks to @ahummelsberger
- Split API Controllers in Read-Only and Read-Write variants: This allows deploying an energy management system by default with a read-only apis
- ComponentManager: fix OsgiValidateWorker for defective components that get removed. Before OsgiValidateWorker would throw an exception, when a component configuration was removed, but the Component-ID was still considered 'defective' b5759b2
- Add UUID-helper: add helper function to provide a 'Nil' UUID. See https://en.wikipedia.org/wiki/Universally_unique_identifier#Nil_UUID ca0150a
UI
2020.3.0
Common
-
Travis: build with latest stable LTS node_js 59741aa
-
Add templates for bndtools and improve 'Implementing a Device' docs (#1040)
- Add templates for bndtools
- Adjust 'Implementing a Device' docs for new OSGi templates
- See https://openems.github.io/openems.io/openems/latest/edge/implement.html
-
Upgrade Gradle and UI dependencies
Backend
- B2bRest-Api: make sure JSON-RPC error is properly sent; (Unfortunately this requires to set Response code to OK (200)) f1432b7