Skip to content

Releases: OpenEMS/openems

2020.23.0

05 Nov 22:17
Compare
Choose a tag to compare

Highlights

  • Implement SMA Sunny Home Manager 2.0 Meter; thanks @martingruening (#1275) (#1280)
  • FENECON Mini Energy Storage System: add write-mode for remote-control (#1266)
    • Thanks to the power of Open-Source, this adds new exciting (after-market) possibilites for a system, that is already a couple of years old
    • add write-mode: allows remote control of the system as ManagedSymmetricEss
    • move "TheCommunicationWireToAmmeterBreak" to Mini Grid-Meter
    • calculate energy from power values for Ess, Grid-Meter and PV-Meter
    • implement everything in State-Machines with proper documentation
    • add JUnit tests
    • plus:
      • Improve visualization of Enums in OpenEMS test framework
      • SymmetricEss-Api: fix GridMode javadoc

Bug Fixes and Other Changes

  • Add predefined workingsets for Eclipse IDE

  • see https://bnd.bndtools.org/instructions/workingset.html

  • UI: add french translation; thanks @denis-jidovtseff-jc (#1265)

  • Ess-Power class: add distribution of ReactivePower (#1274)

  • Add JUnit tests for Modbus protocol definitions (#1278)

    • defineModbusProtocol() now throws an OpenemsException if addresses are wrong
    • added simple JUnit tests on all modbus devices to test the modbus protocol definitions
    • modified all activate() calls in AbstractOpenemsModbusComponent to return on configuration update
    • Fix modbus protocols in
      • Soltaro Version A SingleRack
      • Sinexcel ESS
      • and some more
    • Appy autoformat on touched files
    • Update OSGi templates for modbus devices
  • Simulator Datasources: improve handling of values (#1282)

    • CSV heading can now be full Channel-Address ("Component-ID/Channel-ID") or only the Channel-ID
  • RRD4j: Implement QueryHistoryEnergyPerPeriod; thanks @ahummelsberger (#1269)

  • Fix various typos in the code; thanks @luzpaz #1260 #1277 #1276 #1270 #1281 #1284 #1285)

  • Fix UI widgets parsing of with number inputs #1256

  • Fix UI History Charts (#1273)

    • Hotfix for kWh-Value Chart to show regular data if no kWh data is available
  • Fix mindischargeperiod .project file; thanks @denis-jasselette-jc (#1271)

  • Fix ComponentManager CreateComponentConfigRequest handling of empty arrays 881048f

  • Fix Excel Export: Consumption values and date-string for one day (#1283)

  • Fix KACO 92 battery inverter + charge/discharge power for EssCluster; thanks @pooran-c (#1286)

    • Add special handling for KACO 92 battery inverter:
      • has no display and as such SunSpec-Model 64203 is not available
      • allow disabling of the Watchdog function
    • Also add AllowedCharge/-Discharge power to EssCluster
  • KACO50: improve watchdog handling (#1217)

  • Update UI dependencies ecd2baf

2020.22.0

22 Oct 18:01
Compare
Choose a tag to compare

Highlights

  • UI: add kWh as bar chart for energymonitor in history (#1250)

grafik

  • Fixes:

    • remove deprecated npm packages
    • update to latest npm packages
    • adjust live energymonitor to be shown correctly
    • replace ngOnInit with ionViewWillEnter in components where it is needed
      (ngOnInit fires only once with ion-router-outlet, independently of visiting the component again)
  • Minor Features:

    • set language on startup dependend of browser language
    • remove redundancy in history energymonitor component
    • better visibility for history energymonitor components legend
    • show month when a month is picked via 'other period' in history component
    • add real time detection that determines if user uses a device with smartphone resolution (<577px width)
    • use whole width for history energymonitor component if smartphone resolution is used
  • Main Feature:

    • if kWh are enabled via service component
    • add bar chart for kWh values in history energymonitor
    • bar chart shows energy per day including direct consumption
    • on smartphone devices: kWh bar chart is enabled when period is > 1 day
    • on non smartphone devices: kWh bar chart is enabled when period is > 7 days
    • production and consumption values are opt in via legend
    • realtime adjustment of chart when resolution changes from/to smartphone resolution
    • add month to pickdate component

Bug Fixes and Other Changes

  • Modbus/TCP and REST-Apis: log active write requests dfab9ef
    • Requests are logged in the new ApiWorker Channel as String of the form "ess0/SetActivePowerLessOrEquals:2000|ess0/SetActivePowerGreaterOrEquals:-2000"
  • Generic ESS: improve calculation of allowed power(#1254)
    • improve calculation of allowed charge/discharge power based on voltage
    • add static constraints to block power, when ESS is not started
  • Fix InfluxDB bundle and EdgeConfigWorker (possible NullPointerException) 768adc6
  • Fix XLSX report for Modbus/TCP Api 8ae8a57
  • UI: translated login page (#1257) - thanks @denis-jasselette-jc for your first contribution!
  • GenericManagedSymmetricEss: add Modbus table for Modbus/TCP Api (#1262)
    • Added the modbus slave table in generic Ess
    • Changed the chargeEnergy and DichargeEnergy channels in battery inverter
  • OpenemsComponent: add helpful error message on missing 'State' Channel (#1264)
  • Update dependencies e4d4f10 ac67cc1 a527020 71586bc 3746ce6

2020.21.0

08 Oct 19:50
Compare
Choose a tag to compare

Highlights

  • BMW Batteries: implement Start-Stop feature (#1240)
  • BYD Battery-Box Commercial: implement Start-Stop feature (#1222)
  • REFU88k battery inverter: add channels for charge/discharge energy 493e1bf
  • KACO 50/92 battery inverter: add channels for charge/discharge energy 21cc130
  • KEBA Wallbox: add state channels for all possible mistakes in the Dip-Switch settings (#1235)
  • ESS Delayed Sell-To-Grid Controller: new implementation (#1239, #1246)
    • this new Controller controls an energy storage system so, that it delays the sell-to-grid power e.g. of a photovoltaics system.
    • It charges the battery, when sell-to-grid power exceeds the configured "Sell-To-Grid power limit" and discharges when sell-to-grid power is falling below "Continuous Sell-To-Grid power".
  • Continuous Integration: enable JUnit tests in Travis CI (#1242)
    • this enables automated unit tests on each commit to the OpenEMS repository
    • Fix all existing JUnit tests with latest version of OpenEMS Unit test Framework
    • Use ComponentManager for mocked Clock everywhere
    • Add unit tests to bundle templates
    • and also: apply Checkstyle & fix deprecated warnings on build
  • UI: add widget to show digital input states (#1195)

Bug Fixes and Other Changes

  • UI:
    • add missing subscribe for Grid Mode (#1245)
    • improve responsive design for history a690266
    • update dependencies; update names to "OpenEMS Edge"; always allow kWh values b46743c
  • Discovergy Meter: avoid error on non-available values (#1230)
  • Janitza UMG604 meter: fix active/reactive power sum 220b7d3
  • Ess Power Solver: fix possible NullPointerException e4f807a
  • Fix OSGi:
    • "Constructor with 0 arguments not found" error + apply code improvements 9562c97
    • constructors must be public 9ef244d
  • FixedOrderScheduler: fix JUnit test b76f743
  • EssSinexcel:
    • apply coding style; cleanup state-channels e6fbe9c
    • fix typecasting error 2344023

2020.20.0

24 Sep 18:34
Compare
Choose a tag to compare

Highlights

  • Enable Gitpod cloud IDE (#1227)

    • Original comment by Gitpod:
      This commit implements a fully-automated development setup using Gitpod.io, an online IDE for GitHub and GitLab that enables Dev-Environments-As-Code. This makes it easy for anyone to get a ready-to-code workspace for any branch, issue or pull request almost instantly with a single click.
    • The Gitpod workspace automatically builds and runs instances of OpenEMS Edge, Backend and UI. They are preconfigured to simulate an energy system with two photovoltaics systems, an energy storage system, simulated consumption, self-consumption optimization and some controllers that act on simulated I/Os.
    • To open a Gitpod workspace, follow the links in the main README.MD file or directly https://gitpod.io/#https://github.com/OpenEMS/openems/tree/master. To open any other branch in Gitpod adjust the link accordingly, like https://gitpod.io/#https://github.com/OpenEMS/openems/tree/feature/XYZ
  • Massive performance improvements on Energy Storage Systems Power-Solver (#1232)

    • The Ess Power Component is responsible for distributing power requirements to one or more energy storage systems, while considering arbitrary constraints and optimizing for certain targets. These updates improve the performance of this solver by more than 400 % on large systems
    • SymmetricLimitActivePower: optionally disable validation of Constraints to improve performance fa6bafc
    • If Symmetric-Mode is activated in the config (=default), all L1, L2 and L3 coefficients are dropped now
    • Improve perfomance of "ReduceNumberOfUsedInverters" optimizer by applying an algorithm similar to binary tree search
    • Restructure file hierarchy. Reduce file lengths and use functional interfaces or static methods were appropriate
    • Improve JUnit test coverage and use the OpenEMS Unit-Test framework where possible

Bug Fixes and Other Changes

  • Update to Angular 10 and more UI updates (#1229)

    • Updated Node Packages
    • Updated to Angular 10
    • Use of Ion-Router-Outlet
    • Use of NGX-Spinner
    • Show single energy values in history view (like in live view)
    • Set TotalChart in history consumption chart view if there are more than one evcs'
    • Different Colors for EVCS in total consumption chart
  • Improve OSGi-Validate-Worker

    • This worker validates that all configured Components are activated properly. If not, it can announce two error states:
    • FAULT: Configuration has duplicated Component-IDs
      • Component-IDs have to be unique per definition.
      • Sets Channel "_componentManager/DuplicatedComponentId"
      • Also prints "Duplicated:ess0,meter0" in the debug log
    • WARNING: A configured OpenEMS Component was not activated
      • Sets Channel "_componentManager/ConfigNotActivated"
      • Can have multiple reasons (see "org.osgi.service.component.runtime.dto.ComponentConfigurationDTO.state")
      • Also prints in the debug log
        • Unsatisifed Reference: "Defective:ess0[Unsatisfied reference for battery,batteryInverter]"
        • Missing required configuration: "Defective:ess0[Missing required configuration]"
        • Failed activation: "Defective:ess0[Failed activation ]"
        • Missing Bundle: "Defective:rrd4j0[Missing Bundle0]"
  • Add JSON-RPC Request for Energy-Per-Period (#1218): Define QueryHistoricTimeseriesEnergyPerPeriodRequest and Implement it for InfluxDB

    • This new timeseries request will be used for an upcoming improvement on UI historic charts for energy
  • Fix QueryHistoricEnergyPerPeriod for Simulator-App (#1218)

  • Fix Circular reference on OpenEMS startup: Downgrade Apache Felix SCR to 2.1.20 a60d9f2

    • The error is "Circular reference detected trying to get service" followed by a "java.lang.Exception: stack trace". Per definition the Circular references in OpenEMS should be fine the way they are, as they are always "optional" from one side. No clue, why this is now suddenly happening in SCR.
  • Improve Checkstyle check for Javadocs (#1232)

  • Add/rename generic functional interfaces that throw exceptions: ThrowingBiConsumer, ThrowingBiFunction, ThrowingConsumer, ThrowingFunction, ThrowingRunnable, ThrowingSupplier (#1232)

  • Fix Core.Cycle trigger config update on modified (#1232)

  • Core.Cycle Worker: measure minimally required Cycle-Time in "_core/MeasuredCycleTime" Channel. (#1232)

2020.19.0

10 Sep 14:34
Compare
Choose a tag to compare

Highlights

  • Improvements to OpenEMS Simulator-App #1151
    • NOTE: The Simulator-App is a very specific component that needs to be handled with care. It provides a full simulation environment to run an OpenEMS Edge instance in simulated realtime environment. After you ran a Simulation, you will receive the simulation result as a JSON. Also the simulation result can be viewed in OpenEMS UI.
    • Breaking changes in JSONRPC Request for simulation
    • Implement Timedata service: it can now provide the simulation results to OpenEMS UI
    • See readme at: https://github.com/OpenEMS/openems/tree/develop/io.openems.edge.simulator
  • Migrate Refu88K from ESS to BatteryInverter (#1216)
    • The implemenation for REFU 88k Battery-Inverter now uses the recently added "BatteryInverter" Nature in combination with the "GenericEss" implementation.
    • https://www.refu.com/speicherloesungen/

Bug Fixes and Other Changes

  • Fix UI Energy Request for more than one day cee02fa
  • B-Control EM300 meter #1176 9a2c8cd
    • refactoring and application of latest coding guidelines
    • fix scale-factor for energy channels and invert
  • Fix Energy Storage Systems: set capacity values from battery (#1196)
  • Fix Property-Channels for Enum configuration properties 174b78a
    • Enums are now converted to OptionsEnum, so that they can be properly used inside Property-Channels.
  • Fix Commercial40: trigger AllowedCharge/DischargePower calculation at onUpdate event c06720a
    • Because of the fix in 2f58826 (2f58826), the allowed power was not anymore calculated correctly.
  • PV-Inverter Sell-To-Grid-Limit: update documentation ef99573
  • Predictive-Delay-Charge: Change LocalDateTime to ZonedDateTime to avoid time zone problems in prediction service. (#1214)
  • Soltaro Cluster C: change modbus task priority (#1215)
  • Update dependencies #1223 3be955c

2020.18.0

27 Aug 19:30
Compare
Choose a tag to compare

Highlights

  • UI: Improve Excel export (#1194), 98c7b61, aa7e523
    • grafik
  • UI: Show detailed field description for component install and update 7a4e87a
    • grafik
  • Balancing Schedule Controller (#1207): this refactoring of the existing "Balancing Schedule Controller" comes with
  • Soltaro Battery Rack Version B: Add Start/Stop Feature (#1202)
  • UI: Optimize Performance and Subscribes (#1211)

Bug Fixes and Other Changes

  • Fix Generic State-Machine: Behaviour with multiple instances of same Component (#1203)
    • The former implementation of State-Machines, using enums with StateHandlers being defined directly at construction time, lead to static StateHandlers that were shared by all instances of the same Component. This could cause unpredictable behaviour.
    • This commit fixes this by providing a local instance of each StateHandler for each instance of a Component.
  • Update dependencies: rrd4j (#1206), postgresql (#1205, #1210), moshi (#1213), fastexcel (#1212), pax-logging (#1204), UI dependencies and gradle 2061227
  • Fix UI 'null' alias 5573d9b
    • ignore 'null' values for install component
    • before this fix, if no 'alias' was provided in the component install dialog, it would create an alias with the string "null".
  • Fix PID Filter: increase limit factor for error sum from 2 to 10.
    • On very low P, I or D factors, the error sum can become quite big before the target is reached. We still need to limit it at some point to avoid it becoming too much. Tests showed that a factor of 10 is a good compromise.

2020.17.0

13 Aug 18:51
Compare
Choose a tag to compare

Highlights

  • Improvements on energy values (#1187)
    • Adjust driver components for GoodWe, Sinexcel, Carlo Gavazzi, KACO blueplanet gridsave, Janitza UMG96RME and all the Simulators
    • Improve handling throughout the stack in OpenEMS Edge and OpenEMS UI
  • Implement BMW battery (#1199)
    • as used in the award winning FENECON Industrial energy storage platform
  • Implement historic energy with local timeseries database RRD4J (#1198)
  • Implement SOCOMEC Countis E23 meter 60519cc

Bug Fixes and Other Changes

  • Fix BackendApp.bndrun: Update & resolve 7aa7be7
  • Fix Backend-UI: Show 'no edges' warning only after connection was fully established c18f6dd
  • Fix AbstractReadChannel: detection of changed values. This avoids unnecessary calls to the onChangeCallbacks 2f58826
  • Fix StartStoppable: calls to start() and stop() fab676d
  • Fix behaviour for optional configuration parameters f032667
    • An optional configuration parameter is a parameter that is defined as 'required = false' within the @AttributeDefinition in Config.java.
      Before the behaviour for optional 'int' parameters used to be, that they would default to '0' if they were not provided. Now - maybe caused by an update to Apache Felix Configuration Admin - they default to an empty String which causes a NumberFormatException.
  • Fix Controller.Api.Websocket: subscribe topic for event handler b019ee5
    • Fixes the error on startup: WARN [org.apache.felix.eventadmin ] EventAdmin: Invalid EVENT_TOPICS : Missing - Ignoring ServiceReference
  • Fix Soltaro.Single.VersionA: implement SoltaroBattery interface 3ed6dac
  • Fix RRD4j: fix last timestamp check
  • Fix Generic.Ess: mixed up handlers for StopBatteryInverter and StopBattery cc8d30b
  • Fix SDM630 meter: modbus registers 4988750
  • Event Admin: disable timeout 0ffd25e
  • Antora docs: update versions for dependencies 3497e23

2020.16.0

30 Jul 19:54
Compare
Choose a tag to compare

Common

Edge

  • Improve RRD4j implementation (#1185):
    • fix local timezone handling, use rrd4j db pool, always close() RrdDb files; otherwise the pool fills up and no more files can be opened and apply coding best practices and Checkstyle
    • avoid and silently ignore error "Bad sample time" 5e5ebaa
  • Fix inverse logic in Ess Sell-To-Grid Limit Controller aa1ebb1
  • Improve log message on activate/deactivate/modify of an OpenemsComponent b9dcaf0
  • OneWire: avoid blocking initialization of components 772d85c
    • activate() of OneWire components was waiting for synchronized access to the tasks list
  • Controller.Api.Rest: apply AcceptRateLimit and ConnectionLimit to avoid strain on the system 3e398a5

UI

  • Update Widget for Controller.CHP.SoC: allow 0 to 100 % thresholds (#1189)
  • add warning if there is no permission no any Edges via Backend 61ac56b
  • add Renault ZOE button to evcs widget (#1172)
    • enables special handling required for charging of Renault ZOE

Backend

  • Fix cookie HTTP header field name being case sensitive (#1190) Thanks @fgarlin for your first contribution!

Future

A lot of big new features did not yet make it into this release, but Pull-Requests are one the way:

2020.15.0

16 Jul 19:54
Compare
Choose a tag to compare

Common

Edge

  • Implement Generic JsonLogic Controller (#1148)
    • The JsonLogic-Controller is a very generic Controller that allows the definition of a complex logic as a configuration at runtime, e.g. via Apache Felix Web Console. It is based on the JsonLogic specification (http://jsonlogic.com[jsonlogic.com]).

2020.14.0

03 Jul 19:56
Compare
Choose a tag to compare

Common

  • Update UI and Java dependencies

Edge

  • Implement Shelly Plug S and Shelly 2.5 WiFi Switches (#1156)
  • Controller IO Heating-Element: apply default Level in manual mode c6bab9b
    • Migrate JUnit tests to new JUnit test framework
    • Add JUnit tests for manual mode
  • Work on Energy Storage System power distribution optimizer (#1167)
    • Allow modification of configuration without reloading of component
    • Add limit on "Integral" part of PID filter c143b05
    • Add option to disable PID filter db467ea
  • FENECON Pro 9-12 fix MaxApparentPower (#1167)
  • Soltaro Single B: add missing Api Channels (#1164)
    • write necessary component channels to api channels, fix isUndefined() for state machine
    • Avoid 'SuppressWarnings'
  • Do not handle events if component is disabled. ab02d46
    • Add missing if-clause to break-early the event handling of multiple components.