Skip to content

Releases: OpenEMS/openems

2021.7.0

08 Apr 19:02
Compare
Choose a tag to compare

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

25 Mar 16:30
Compare
Choose a tag to compare

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
  • 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:
    • update node version to 15; npm version to 7 5592e96
    • Fix UI build (#1419)
      • Make variables public that are used in templates
      • Clear warnings for "CommonJS or AMD dependencies can cause optimization bailouts"
      • Set strictInjectionParameters and strictTemplates to false
  • 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

11 Mar 16:28
Compare
Choose a tag to compare

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:
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

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

26 Feb 14:57
Compare
Choose a tag to compare

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 the Predictor24Hours. These Predictors can announce for which channels they allow a prediction and provide a Prediction24Hours 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 the Predictor::get24HoursPrediction() method or via a get24HoursPrediction JSON-RPC request to the _predictorManager component.
    • developed within the EMSIG project: https://openems.github.io/openems.io/openems/latest/randd.html#_emsig

Bug Fixes and Other Changes

  • Simulator: BatteryDummy - add missing StartStoppable channels (#1392) Thanks @clehne
  • Migrate from Travis CI to GitHub Actions (#1397)
  • Improve OpenEMS documentation (#1399)
  • Update dependencies:
    • Gradle fcc6540
    • pax-logging-log4j1 from 2.0.6 to 2.0.7 (#1396) to 2.0.8 (#1400)
    • postgresql from 42.2.18 to 42.2.19 (#1394)
    • HikariCP from 4.0.1 to 4.0.2 (#1390)
    • jna from 5.6.0 to 5.7.0 (#1386)
    • UI dependencies 656af5d
  • BatteryProtection definition for Soltaro Single B (#1376); also:
    • Add new features to PolyLine for type safe and fluent calls
    • Add TypeUtils min and multiply 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

11 Feb 20:59
Compare
Choose a tag to compare

This is a bugfix and maintenance release only.

Bug Fixes and Other Changes

  • Dependency Updates #1375 #1372 #1338 250bad6
  • Fix modbus registers for BMW Battery implementation
  • Main developments are currently done for Battery-Protection algorithms: Pull-Request #1376

2021.2.0

29 Jan 20:06
Compare
Choose a tag to compare

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: Cite via Zenodo
  • 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 with getOrError().
      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 the RunFailed 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)
  • 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.
  • 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

14 Jan 19:51
Compare
Choose a tag to compare

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

18 Dec 20:50
Compare
Choose a tag to compare

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

03 Dec 21:57
Compare
Choose a tag to compare

Highlights

  • Add UI widget for Smart-Grid-Ready Heatpump control (#1291)
    grafik

  • 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

19 Nov 22:06
Compare
Choose a tag to compare

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 log
      • ignoreComponents: 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.
  • 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