Skip to content

Releases: OpenEMS/openems

2021.9.0

06 May 16:36
39886a1
Compare
Choose a tag to compare

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

22 Apr 19:26
Compare
Choose a tag to compare

Highlights

  • Downgrade apache.felix.scr to 2.1.20 (#1438)
  • 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)
  • 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
    • Single B: calculate capacity automatically (#1428)
      • Read number of modules from Modbus
      • Module-Type still needs to be configured
    • adjust battery-protection for 3.5 kWh battery module (#1420)
  • 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

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)