OpenEMS Release 2020.20.0

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)