Skip to content

Releases: OpenEMS/openems

2026.8.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 12:19

Release Highlights

  • New implementations:
    • Bitcoin Miners with Braiins OS
    • Fix-Reactive-Power App
    • App for German EEG 2025 (avoid feed-in during negative spot prices)
  • Improved implementations:
    • ENTSO-E
    • Fix-Active-Power Controller and UI
    • Askoma Electric Heater
    • my-PV Electric Heater
    • Mennekes Wallbox
    • Hardy Barth Wallbox
    • FENECON Home, Commercial 50, Commercial 100, Commercial 92, Hybrid 10, 9-10, GW & Mini
    • Siemens Meter
    • ESS Grid-Optimized-Charge Controller
    • SG Ready Heat-Pump
    • Victron
    • Simulator for EVSE ChargePoint
    • REFU Battery Inverter
    • KACO Battery Inverter
    • Clever PV
    • SOCOMEC Modbus/TCP Meter
  • UI improvements:
    • Set ENGLISH as fallback language
    • New-UI improvements
  • Core improvements:
    • Modbus Bridge
    • Power Distribution for ESS Cluster
    • Energy Scheduler v2
    • Apply prettier formatting for UI
    • Update to Angular 22
    • Improve IntelliJ compatibility
    • Integrate AI review & vibe coding skills

Details

OpenEMS Edge

  • FEMS Backports 2026-07-06 in #3814
    • [Edge] Modbus-Bridge: add optional delay between unit id changes Commit
    • [Edge] Document the Power Distribution Commit
    • [Edge] Fix Reactive Power App Commit
    • [Edge] ENTSO-E: only use position 1 for Germany+Austria Commit
    • [Edge] FixActivePower: extend Controller capabilities Commit
    • [Edge] Askoma Heat: integration with Energy Schedule Commit
    • [Edge] Implement Braiins OS meter Commit
    • [Edge] E-Mobility: Mennekes Phase-Switch Commit
    • [Edge] New Grid Optimized Charge Commit
    • [Edge] my-PV writable Commit
    • [Edge] Reset UpdateHandlerTests.java Commit
    • [Edge] FENECON Commercial 92 App: Set Ramp Ess Protection Commit
    • [Edge] OpenemsComponent: add nullable method to get channel Commit
    • [Edge] ReferenceTarget: take default value if property isnt provided in config Commit
    • [Edge] Mennekes improvements Commit
    • [Edge] ManagedSymmetricEss Modbus-Table: expose AvailableChargeEnergy and AvailableDischargeEnergy Commit
    • [Edge] Fix-Active-Power-Controller: add Energy Scheduler v2 support for ONCE-Modes Commit
    • [Edge] BraiinsOS: add JUnit tests Commit
    • [Edge] FENECON Hybrid 10, 9-10, GW & Mini: add missing App properties Commit
    • [Edge] App Center: Siemens Meter app Commit
    • [Edge] GridOptimizedCharge: avoid warnings in combination with Time-of-Use-Ctrl Commit
    • [Edge] Energy Scheduler v2 Integration: Braiins BTC Miner Commit
    • [Edge] Masterbox: mplement GPIO with State Led Commit
    • [Edge] Power Distribution v2: improve reactive power Commit
    • [Edge] MasterBox: implement Modbus Slave Table Commit
    • [Edge] Mennekes App Release Commit
    • [Edge] App-Center: EnergyScheduler Version Task Commit
    • [Edge] Energy getSchedule-Request improvements Commit
    • [Edge] Fix reset of accumulated channels after system restart Commit
    • [Edge] Battery.Fenecon.Home: Fix serial number prefix Commit
    • [Edge] App.FENECON.Commercial.100: VDE4110 GridCode Commit
    • [Edge] App.TimeOfUseTariff: compatibility with FENECON Commercial 100 + EWS Schönau Commit
    • [Edge] App.Tariff.Manual.EEG2025.GridSell: App for German EEG 2025 Commit
    • [Edge] App Center EVCS/EVSE: Required App Version Commit
    • [Edge] Energy getSchedule-Request: add _sum/EssSoc Commit
    • [Edge] Add AppSafetyCountry mapping and Lithuania EN50549 support Commit
    • [Edge] Refactor ESS protection with selectable ramp/voltage modes Commit
    • [Edge] Add MasterBox2v0 and CM4S Gen3 hardware app integration Commit
    • [Edge] Energy Scheduler v2: Add custom constraints to Fitness Commit
    • [Edge] Energy Scheduler v2: Add evaluation step to simulation Commit
    • [Edge] Energy Scheduler v2: Add new hyperparameters Commit
    • [Edge] Energy GetSchedule: round from down to quarter Commit
    • [UI/Edge] Controller.Io.HeatPump.SgReady: add optional meter Commit
    • [Edge/UI] STS-Box: Adjustments to GenSet properties Commit
    • [Edge|Backend] App.Tariff.Manual.EEG2025.GridSell: installable as free App Commit
  • [Edge] Update readme.adoc: added link to referenced source code files by @sjjh in #3817
  • [Edge] io.openems.edge.victron: keep configured capacity when BMS reports 0 by @jankaifer in #3808
  • [Edge] ElectricityMeter: avoid divide-by-zero by @tsicking in #3777
  • [Edge] io.openems.edge.victron: drop all write tasks in Read-Only-Mode by @jankaifer in #3807
  • [Edge] ENTSO-E: add mathematical expression by @sfeilmeier in #3699
  • [Edge] Update readme.adoc: list formating by @sjjh in #3845
  • FEMS Backports 2026-07-15 in #3825
    • [Edge] AbstractWorker: performance fixes Commit
    • [Edge] DependencyUtil: fix potential memory leak Commit
    • [Edge] Energy Scheduler v2: improve Optimizer threads Commit
    • [Edge] AppValidateWorker: fix NPE Commit
    • [Edge] App Core Meta: fix translation Commit
    • [Edge] Tariff.Manual.EEG2025.GridSell: fix unit of fixedGridSellPrice Commit
    • [Edge] Simulator.Evse.ChargePoint: added simulator for EVSE ChargePoint Commit
    • [Edge] FENECON Home: fix wrong configuration of the RS485 interface port [Commit](htt...
Read more

2026.7.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 18:50
2e2792d

This is a pure maintenance release.

Details

Common/General

  • Update readme.adoc: improved formating by @sjjh in #3786
  • Update docker.adoc: link optimization by @sjjh in #3785
  • Update systemd.adoc: updated jar filename by @sjjh in #3768
  • Update readme.adoc: improved formatting by @sjjh in #3764

Version Upgrades

  • Bump actions/cache from 5 to 6 in /.github/workflows by @dependabot[bot] in #3791
  • Bump com.auth0:auth0 from 3.7.0 to 3.8.0 in /cnf in the auth0 group by @dependabot[bot] in #3772
  • Bump the squareup group in /cnf with 2 updates by @dependabot[bot] in #3770
  • Bump codecov/codecov-action from 6 to 7 in /.github/workflows by @dependabot[bot] in #3771
  • Update Gradle to 9.6.1 by @sfeilmeier in #3801
  • Bump biz.aQute.bnd:biz.aQute.bnd.gradle from 7.2.3 to 7.3.0 in /cnf by @dependabot[bot] in #3762
  • Bump org.apache.felix:org.apache.felix.http.jetty12 from 1.1.10 to 2.0.0 in /cnf by @dependabot[bot] in #3761
  • Bump actions/checkout from 6 to 7 in /.github/workflows by @dependabot[bot] in #3787
  • Bump the fastexcel group in /cnf with 2 updates by @dependabot[bot] in #3769

Full Changelog: 2026.6.0...2026.7.0

2026.6.0

Choose a tag to compare

@github-actions github-actions released this 01 Jun 21:29
30c98fb

Release Highlights

  • Improved implementations:
    • OpenDTU
    • Huawei PV-Inverter & PV-Inverter
    • SolarEdge ESS PV hybrid inverters
    • CHINT DDSU666 & DTSU666 meter
    • SOCOMEC e47/48 meter
    • KACO Battery Inverter
    • FENECON Energy Storage Systems
    • IO Weidmueller UR20
    • Hardy Barth Wallbox
    • Askoma Heating Element
    • Swisspower Time-Of-Use-Tariff
    • Controller ESS Limit Total Discharge
    • Controller ESS Prepare Battery Extension
    • Controller Api Modbus
  • UI improvements:
    • Work on New UI Navigation project ("NUI")
  • Core improvements:
    • Add support for Grid-Sell Prices
    • Continued update of JUnit tests to Jupiter
    • Improvements to EnergyScheduler v2
    • Better support for IntelliJ IDEA
    • Add AI agent instructions and Skills

Details

OpenEMS Edge

  • Implement OpenDTU meter by @sthhs in #3562
  • ESS Limit Total Discharge – handle Hybrid ESS by @timo-schlegel in #3640
  • Huawei Smart Logger and PV Inverter by @DerStoecki in #3545
  • Huawei PV-Inverter: Code cleanup by @sfeilmeier in #3710
  • OpenDTU Meter: Clean up code and implement ManagedSymmetricPvInverter by @sthhs in #3709
  • Add support for SolarEdge ESS PV hybrid inverters by @timo-schlegel in #3571
  • Adding edge meter package for chint ddsu666 by @ramaguruprakash in #3692
  • Implmenet socomec e47/48 by @Sn0w3y in #3388
  • Add DTSU666 support to Chint meter bundle by @tushabe in #3728
  • Controller Api Modbus: Fix Modify Method by @tsicking in #3743
  • Fix(Edge) Kaco BatteryInverter Sunspec Model Frequency: Unit by @TimStoecker in #3735
  • FEMS Backports 2026-05-01 in #3708
    • [Edge] App Center: automatically updating config with dependencies Commit
    • [Edge] Controller.Ess.PrepareBatteryExtension: add status info while in reference cycle Commit
    • [Edge] IO.Weidmueller.UR20: Refactor module handling and dynamic channel management Commit
    • [Edge] App.Evcs.IesKeywatt: installable for Admin only Commit
    • [Edge] GoodWe: Add Warning State whenever the GridMode becomes Undefined Commit
    • [Edge] Hardy Barth Wallbox: Use different limit set method Commit
    • [Edge] Energy Scheduler v2: Add Grid-Sell Prices Commit
    • [Edge] Evse.ChargePoint.Mennekes: change SetPoint to Watt Commit
    • [Edge] IOC.Fenecon.MasterBox Commit
    • [Edge] Heat.Askoma: schedule modes with JSCalendar Commit
    • [Edge] QuarterlyValues: fix NPE in toString-Method Commit
    • [Edge] Core.Sum: Optimizations Commit
    • [Edge] TimeOfUseTariff.Swisspower: update API url Commit
    • [Edge] GoodWe: fix internal filter limits for DC setpoint Commit
  • FEMS Backports 2026-05-15 in #3729
    • [Edge] GenerateTargetsFromReferences: improve docs Commit
    • [Edge] Controller.Ess.PrepareBatteryExtension: fix capacity expansion reference cycle got stuck Commit
    • [Edge] Energy Component: implement JsonRpc GetSchedule Commit
    • [Edge] Core.Energy Simulator: shift prices to avoid misbehaviour with negative prices Commit
    • [Edge] FENECON Commercial 92 App: fix meter dependency Commit
    • [Edge] EnergyScheduler v2: Fitness Refactoring Commit
    • [Edge] Add new unit types and test helper methods Commit
    • [Edge] GoodWe.Grid-Meter: read serial number Commit
    • [Edge] Implement battery firmware update and enhance protection logic Commit
    • [Edge] App Center: systemd network settings via App Commit
    • [Edge] Ess.Generic.ManagedSymmetric: Add ess fault due to battery/inverter faults Commit

OpenEMS UI

  • FEMS Backports 2026-05-01 in #3708
    • [UI] NUI: refactor heating element Commit
    • [UI] fix screenorientation not available Commit
    • [UI] EVSE App Center: add link to create Vehicle App Commit
    • [UI] Evse.ChargePoint.Mennekes: add chargepoint image Commit
    • [UI] NUI: Controller.Ess.FixActivePower Commit
    • [UI] add sumstate to every page Commit
    • [UI] Lock rotation on mobile and Tablet Commit
    • [UI] NUI: refactor time of use tariff Commit
  • FEMS Backports 2026-05-15 in #3729
    • [UI] Fix Heatingelement history not showing Commit
    • [UI] Remove extra value in grid modal (new and old UI) Commit
    • [UI] Update android.compileSdkVersion Commit
    • [UI] Refactor Storage Commit
    • [UI] fix wrong title for App Center Commit
    • [UI] Askoma Heat Commit
    • [UI] NUI: Controller.ChannelThreshold Commit

OpenEMS Backend

  • FEMS Backports 2026-05-01 in #3708
    • [Backend] User Settings of type JsonObject or String Commit
  • FEMS Backports 2026-05-15 in #3729
    • [Backend] Alerting: Update JUnit tests Commit

Common/General

  • Add documentation for running the prebuilt UI to the Getting Started guide by @mzenker in #3702
  • Fix link to GermanDSO.java in timeofusetariff.entsoe/readme.adoc by @janklostermann in #3713
  • Update modbus device template to new reference target system by @simon-lgb in #3717
  • fix documentation structure and links for UI. by @mzenker in #3712
  • FEMS Backports 2026-05-01 in #3708
    • [Common] CI: Add sonarqube scans Commit
    • [Common] CI: update sonarqube and gradle Commit
    • [Common] Tools: fix build-debian-package script if git repo is dirty Commit
  • FEMS Backports 2026-05-15 in #3729
    • [Common] IntelliJ IDEA run configurations [Commit](https://githu...
Read more

2026.5.0

Choose a tag to compare

@github-actions github-actions released this 01 May 14:35
7073a23

Release Highlights

  • We celebrated 10 years of OpenEMS since the first hello-world commit
  • Improved implementations:
    • Mennekes Wallbox
    • FENECON Commercial 92 Cluster
    • FENECON Commercial 100
    • FENECON Mini
    • KACO Battery-Inverter
    • ASKOMA Heating Element
    • Shelly
  • UI improvements:
    • New tree-based navigation is shaping
    • Localization for OEM distribution changelog
  • Core improvements:
    • There is a new way to manage OSGi References by Component-ID. See Commit
    • Websocket ClientReconnectorWorker: circumvent possible deadlock Commit

Details

OpenEMS Edge

  • FEMS Backports 2026-04-04 by @fenecon in #3667
    • [Edge] Simplify OSGi Reference by Component-ID: replace updateReferenceFilter Commit
    • [Edge] Websocket ClientReconnectorWorker: circumvent possible deadlock Commit
    • [Edge] JSCalendar: enforce an explicit Clock Commit
    • [Edge] Use TariffManager in Sum Commit
    • [Edge] Add Reference Cycle Support to Planned Battery Extension Commit
    • [Edge] GlobalOptimizationContext: fix possible NPE for no prices Commit
    • [Edge] JSCalendar: fix timezone handling Commit
    • [Edge] FENECON Commercial 100: App fix for always creating STS-Box Commit
    • [Edge] FENECON Commercial 100: Fix App for GenSet Commit
  • FEMS Backports 2026-04-19 by @fenecon in #3688
    • [Edge] CycleWorker: measure execution times Commit
    • [Edge] FENECON Mini: implement App Commit
    • [Edge] EVSE: add Consumption to Excel export Commit
    • [Edge] Add documentation for EVSE Commit
    • [Edge] KACO Battery-Inverter: add ErrorRestartBehaviourConfig Commit
    • [Edge] Add Annotation for Config Channel Persistence Priority Commit
    • [Edge] [Debian] Store special log files for firmware updates in /var/log/openems Commit
    • [Edge] App.Heat.Askoma Write Commit
    • [Edge] PT1-Filter: fix apply low/high limits Commit
    • [Edge] ManagedSymmetricEss: improve how filter is applied Commit
    • [Edge] Mennekes EVSE: Cleanup isReadyForCharging handling Commit
    • [Edge] Commercial 92 Cluster: set default power strategy Commit
    • [Edge] App.Meter.Shelly.Meter: allow installation for owner Commit
    • [Edge] GridOptimizedCharge: Apply no limit when the grid feed-in limit is almost zero Commit
    • [Edge] Add Grid-Sell-Price to SumImpl Commit
    • [Edge] Migrate JUnit test cases Commit
    • [Edge] Goodwe update fixes Commit
    • [Edge] Extend ManagedSymmetricEss Modbus List by actual power value channels Commit
  • [Edge] Controller.Evcs: fix awaitLastChanges checking INCREASING twice instead of DECREASING by @rishabhvaish in #3668

OpenEMS UI

  • FEMS Backports 2026-04-04 by @fenecon in #3667
    • [UI] Fix system overview for installer accounts Commit
    • [UI] NUI: fix recreating new navigation nodes after empty navigationtree Commit
    • [UI] add missing channel subscribe for emergency reserve controller Commit
    • [UI] fix get edges infinite scroll list Commit
    • [UI] EVCS Read-Only: fix modal Commit
    • [UI] fix chartheight Commit
  • FEMS Backports 2026-04-19 by @fenecon in #3688
    • [UI] Fix NumberUtils.divideSafely() Commit
    • [UI] various cleanups Commit
    • [UI] Adjust confirm button position on mobile Commit
    • [UI] General Improvements Commit
    • [UI] NUI: grid optimized charge Commit
    • [UI] JSCalendar: show tasks with no recurrenceRule Commit
    • [UI] GridOptimizedCharge: Visualisation for the new state Commit
    • [UI] fix heatpump history Commit
    • [UI] NUI: Refactor Heat Commit
    • [UI] Localization for changelog Commit
    • [UI] NUI: Improve new Widget navigation and fix help key Commit
    • [UI] Darkmode description colors Commit
    • [UI] fix history values Commit

OpenEMS Backend

  • FEMS Backports 2026-04-19 by @fenecon in #3688
    • [Backend] Metadata.Odoo: configurable login user Commit
  • Backend WebsocketServer: Reject invalid Apikey at handshake by @da-Kai in #3700

Common/General

Version Upgrades

  • Bump the bytebuddy group in /cnf with 2 updates by @dependabot[bot] in #3665
  • Bump pygments from 2.19.2 to 2.20.0 in /tools/integration_tests by @dependabot[bot] in #3662
  • Bump codecov/codecov-action from 5 to 6 in /.github/workflows by @dependabot[bot] in #3656
  • Bump com.auth0:auth0 from 3.3.0 to 3.4.0 in /cnf in the auth0 group by @dependabot[bot] in #3673
  • Bump io.openems:j2mod from 3.3.0-openems.1 to 3.3.0-openems.2 in /cnf by @dependabot[bot] in #3683
  • Bump com.google.guava:guava from 33.5.0-jre to 33.6.0-jre in /cnf in the guava group by @dependabot[bot] in #3682
  • Bump org.apache.felix:org.apache.felix.scr from 2....
Read more

2026.4.0

Choose a tag to compare

@github-actions github-actions released this 01 Apr 19:58
5787199

Release Highlights

  • Improved implementations:
    • Victron
    • Shelly
    • FENECON Home 6, 10 & 15, Commercial 50, 92 & 100
    • RRD4j
    • Hardy Barth
    • Mennekes
    • Controller.IO.ChannelSingleThreshold
    • Bosch.BPTS5Hybrid:
  • UI improvements:
    • New tree-based navigation is shaping
    • Time-of-Use-Tariff: support for Peak-Shaving mode
  • Documentation improvements:
  • Core improvements:
    • For Energy Storage Systems
      • PID- and PT1-Filter improvements
      • ESS.Power: faster Power Distribution v2
    • E-Mobility new architecture (EVSE)
    • Central location for grid buy & sell limits
    • TariffManager prepares for grid buy & grid sell tariffs
    • Support for grid-forming GenSet (as supported by FENECON Commercial 50 and 100)

Details

OpenEMS Edge

  • Victron ESS: Refactor AC-in setpoint calculation by @Sn0w3y in #3584
  • Bosch.BPTS5Hybrid: Update Jetty by @Sn0w3y in #3647
  • FEMS Backports 2026-03-21 by @fenecon in #3624
    • Shelly Pro 3EM: implement App Commit
    • Shelly: add support for more devices Commit
    • ManagedSymmetricEss/GoodWe: refactor how (PID-)filter is applied Commit
    • EVSE Electric Vehicle: add configurable battery capacity Commit
    • Ess.Power: distribution prepare for different handlers Commit
    • FEMS App EWS Schönau: public release Commit
    • Meta: add gridBuyHardLimit() and gridSellHardLimit() Commit
    • Meta: improve Grid-Buy-Soft-Limit Commit
    • Add new TariffManager Commit
    • Add Time-of-Use Feed-In Tariffs Commit
    • ENTSO-E: refactor + prepare fetch via Backend Commit
    • FENECON Commercial 50/100: Genset Component Commit
    • Cycle Worker: add Log Verbosity Commit
    • Meta: Refactor Grid-Feed-In-Limit Commit
    • Vehicle: Add Battery Capacity to component config Commit
    • Vehicle: Add Battery Capacity to App and Switch Commit
    • JSCalendar: fix problem with two overlapping fallback tasks Commit
    • Managed(As|S)ymmetricEss cleanup Commit
    • _Property-Channels: fix duplicated channels of component in same bundle Commit
    • handleExecuteSystemCommandRequest for Docker Commit
    • ModbusTcp: fix timeout config Commit
    • App Center: App for FENECON Pro Hybrid 9-10 Commit
    • FENECON Commercial 100: Add GoodWe 100 Type Commit
    • Energy Scheduler v2: Model production curtailment in EnergyFlow Commit
    • Commercial 92 Cluster (Master): set default power strategy Commit
    • App Center: Vehicle fix install always Commit
    • RRD4j: improve handling of unused files Commit
    • GoodWe and Kdk Grid-Meter Apps Commit
    • FENECON Commercial 50 VDE4110 Commit
    • App Center: fix scheduler order for switch EVSE/EVCS Commit
    • App Center: improve switching between EVCS and EVSE Commit
    • Hardy Barth: fix properties of second charge point Commit
    • EVSE: improve calculation of combined abilities Commit
    • Meta MaximumGridFeedInLimit & HardyBarth NPE Commit
    • EVSE Switch App: synchronize Apps with Backend after Fallback Commit
    • FENECON Home 6,10 (Gen2) & 15: "dynamischer Rundsteuerempfänger" Commit
  • Controller.IO.ChannelSingleThreshold: add configurable fallback for undefined state by @janklostermann in #3646
  • Controller.Ess.GridOptimizedCharge: fix IndexOutOfBoundsException in DelayCharge.calculateAvailEnergy by @rishabhvaish in #3645
  • Add ManagedEvcsCluster, make ESS optional, configurable guaranteed charge power by @chpoulter in #3084
  • Bosch.BPTS5Hybrid: refactor to HttpBridge by @Sn0w3y in #3650
  • Victron: fix link to source code in readme.adoc by @janklostermann in #3630
  • FEMS Backports 2026-03-28 by @fenecon in #3660
    • Ess.Power: add tree map solver to PowerDistribution v2 Commit
    • EVSE Mennekes: Improvements Commit
    • AppCenter: i18n for links Commit
    • FENECON Commercial 92: enable deinstallation of SelfConsumptionOptimization Commit
    • App.Evcs.HardyBarth: use Correct Alias for second CP Commit
    • Mennekes EVSE Implementation Commit
    • FENECON Commercial 50/100: Genset bugfixes Commit

OpenEMS UI

Read more

2026.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Mar 13:47

Release Highlights

  • Improved implementations:
    • EWS Schönau Time-of-Use-Tariff
    • ENTSO-E Time-of-Use-Tariff: support for Lithuania
    • Hardy Barth Wallbox EVSE
    • State-of-Health-Cycle Controller
    • Timeslot PeakShaving "Hochlastzeitfenster" Controller
  • UI improvements:
    • "Location validator" in UI System Profile
    • Standardise input of calendar events ("JSCalendar")
  • Core improvements:
    • Modbus-Bridge improvements
    • EnergyScheduler v2
    • E-Mobility EVSE

Details

OpenEMS Edge

  • Bridge Modbus: Fix task scheduling and simplify task handling by @timo-schlegel in #3547
  • FEMS Backports 2026-02-18 in #3568
    • Hardy Barth: EVSE Implementation and Switch Architecture Commit
    • TimeOfUseTariff.Ews: migrate to Http-Bridge Commit
    • E-Mobility EVSE: Add Lost Line Commit
    • E-Mobility EVCS-to-EVSE: fix CanSwitchArchitecture for Systems that do not yet have READ_ONLY Commit
    • AppCenter: Add P30 EVSE to switch Commit
    • App Center EVSE: Switch with existing Vehicle Commit
    • EnergyScheduler v2: fix charging during DELAY_DISCHARGE Commit
    • EnergyScheduler v2 GoC: use MaximumGridFeedInLimit Commit
    • EnergyScheduler v2: improvements Commit
    • EnergyScheduler v2: improvements Commit
    • ChannelDoc: Add a way to set text dynamically Commit
    • EnergyScheduler v2: Plot GlobalOptimizationContext with JFreeChart Commit
    • EnergyScheduler v2 RunOptimizerApp: Plot SimulationResult with JFreeChart Commit
    • Edge2Edge: fix handling of hashes Commit
    • TimeOfUseTariff.ENTSO-E: add bidding zone Lithuania Commit
    • Controller.Ess.SoH.Cycle: improving balancing logic and add more channels Commit
    • Controller.Ess.SoH.Cycle: IsRunning instead of mode Property Commit
    • App.Ess.SohCycle: set dependency for FENECON Home & Commercial Commit
    • App.Ess.SohCycle: SoH Cycle App Commit
    • IO.Fenecon.MasterBox2V0.Relay: Implemented Commit
    • App.Prediction.Default: add new app "Default Prediction" Commit

OpenEMS UI

  • EnergyMonitor: Update arrows by @da-Kai in #3375
  • Single Threshold: Add unit labels by @sthhs in #3515
  • Header: Fix title disappear from the header on first load. by @Jasonlee6789 in #3569
  • FEMS Backports 2026-02-18 in #3568
    • JSCalendar: refactor Commit
    • "Location validator" section in Profile Commit
    • E-Mobility EVSE: Prevent vehicle-id Error from showing outside the vehicle settings Commit
    • E-Mobility EVSE: Fix for app center vehicles Commit
    • E-Mobility EVSE: Fix car update Commit
    • Timeslot PeakShaving: fix string to number conversion Commit
    • Accessibility: Implement wcag 1.4.4 Commit
    • Set fixed version for angular/cdk Commit
    • Replaced outdated links and added language placeholder Commit
    • Offline + Time-of-Use new icon Commit
    • Fix rerouting for non admins Commit
    • Reduce GetEdgesRequests Commit
    • Websocket.ts: add missing promise reject callback Commit
    • Adjustments for Manual Commit

OpenEMS Backend

  • FEMS Backports 2026-02-18 in #3568
    • BackendEdge: Update readme + create new gradle tasks Commit
    • Backend-Edge-Manager: Gradle and Docker builds Commit

Common/General

  • Docker: Fix builds by @da-Kai in #3563
  • Intellij + Gradle: Setup Guide by @alexbelkedev in #3554
  • FEMS Backports 2026-02-18 in #3568
    • Update Docker Commit
    • App Center: Fix Keba Toggle Switch Errors Commit
    • Java-WebSocket Wrapper: include JavaDoc Commit
    • Gradle: lazy configuration for all tasks Commit

Version Upgrades

  • Bump org.jetbrains.kotlin:kotlin-osgi-bundle from 2.3.0 to 2.3.10 in /cnf by @dependabot[bot] in #3560
  • Bump com.auth0:auth0 from 3.0.0 to 3.1.0 in /cnf in the auth0 group by @dependabot[bot] in #3559
  • Bump the pax-logging group in /cnf with 2 updates by @dependabot[bot] in #3558
  • Bump com.auth0:auth0 from 3.1.0 to 3.2.0 in /cnf in the auth0 group by @dependabot[bot] in #3564
  • Bump org.postgresql:postgresql from 42.7.9 to 42.7.10 in /cnf by @dependabot[bot] in #3565
  • Bump org.junit.jupiter:junit-jupiter-api from 6.0.2 to 6.0.3 in /cnf by @dependabot[bot] in #3580
  • Bump org.postgresql:postgresql from 42.7.9 to 42.7.10 in /cnf by @dependabot[bot] in #3579
  • Bump net.bytebuddy:byte-buddy from 1.18.4 to 1.18.5 in /cnf by @dependabot[bot] in #3578
  • Bump org.jetbrains.kotlin:kotlin-osgi-bundle from 2.3.0 to 2.3.10 in /cnf by @dependabot[bot] in #3576
  • Bump com.auth0:java-jwt from 4.5.0 to 4.5.1 in /cnf in the auth0 group by @dependabot[bot] in #3575
  • Bump the pax-logging group in /cnf with 2 updates by @dependabot[bot] in #3574
  • Bump qs from 6.14.1 to 6.14.2 in /ui by @dependabot[bot] in #3567
  • Bump @modelcontextprotocol/sdk and @angular/cli in /ui by @dependabot[bot] in #3556
  • Bump swiper from 12.0.3 to 12.1.2 in /ui by @dependabot[bot] in #3582
  • Bump webpack and @angular-devkit/build-angular in /ui by @dependabot[bot] in #3557

New Contributors

Full Changelog: 2026.2.0...2026.3.0

2026.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Feb 14:39

NOTE: This release includes large changes to the OpenEMS Backend authentication flow to Odoo and KeyCloak. These changes are not yet included in the OpenEMS-Odoo-Addon and the Docker-Compose setups. For now it is recommended to use older OpenEMS Backend (namely 2026.1.0) to prevent problems and cyber security risks.

Release Highlights

  • New implementations:
    • Janitza UMG806 (via UMG604 Master)
    • Hager ECR380D
  • Improved implementations:
    • Shelly IOs
    • Edge-2-Edge
    • Single-Threshold-Controller
    • Kostal Piko
  • UI improvements:
    • Better visualization on small screens (like a Tablet)
    • Improved Pull-to-Refresh
  • Backend improvements:
    • Split services to multiple servers - allows load-balancing Edge connections
    • OAuth authentication via KeyCloak (and Odoo)
  • Core improvements:
    • Integration-Tests framework (in python)
    • ESS distribution strategy "Optimize by keeping all near equal"
    • Improvements to EVSE E-Mobility Architecture, Energy Scheduler v2 and JSCalendar
    • Grid-Buy-Soft-Limit (specifically for Sweden)

Details

OpenEMS Edge

  • Add support for Janitza UMG806 (via UMG604 Master) by @schiegg in #3449

  • [Edge] Meter.Janitza.UMG806: cleanup after #3449 by @sfeilmeier in #3502

  • Shelly Firmware: Check if stable version update is present by @sthhs in #3517

  • Edge2Edge: filter undefined integer modbus values by @tcdrop in #3479

  • Fix: Handle undefined SOC in solver strategy "Optimize by keeping all near equal" by @tsicking in #3516

  • ControllerIoChannelSingleThresholdImpl.java: Changed inputChannel fro… by @sjjh in #3510

  • Kostal Piko inverter: Corrected dayYield from kWh to Wh + Units of totalYield and dayYield by @sjjh in #3538

  • New energy meter of type Hager ECR380D by @hrohmer in #3336

  • FEMS Backports 2026-01-15 by FENECON in #3518

    • [Edge] Evse.Controller: implement "Minimum-with-Surplus" mode Commit
    • [Edge] App.Prediction.Weather: add components aliases Commit
    • [Edge] HTTP Bridge: improvements Commit
    • [Edge] JSCalendar: improvements Commit
    • [Edge] Battery.Fenecon.Home: update register types from INTEGER to LONG for energy channels Commit
    • [Edge] Evse.Controller: implement "Minimum-with-Surplus" mode Commit
    • [Edge] EnergyScheduler v2: Fix regular optimization schedule Commit
    • [Edge] JSCalendar: implement MONTHLY recurrence Commit
    • [Edge] BatteryProtection: support dynamic ForceCharge/Discharge current Commit
    • [Edge] XmlUtils: activate SECURE_PROCESSING feature Commit
    • [Edge] FENECON Commercial 100 App Commit
    • [Edge] JSCalendarApi: fix error Commit
    • [Edge] App.System.Fenecon.Home: Remove relay validation Commit
    • [Edge] EnergyScheduler v2 improvements Commit
    • [Edge] Move JSCalendar JSONRPC API-Routes to common Commit
    • [Edge] EnergyScheduler v2 improvements Commit
    • [Edge] QuarterlyValues: use Instant instead of ZonedDateTime Commit
    • [Edge] EnergyScheduler v2 improvements Commit
    • [Edge] Battery.Fenecon.Home: add registers Commit
    • [Edge] EnergyScheduler & TimeOfUseTariffController: resolve cyclic dependencies Commit
    • [Edge] EnergyScheduler: Add generations counter Commit
  • FEMS Backports 2026-01-24 by FENECON in #3540

    • [Edge] ESHv2: fix possible NPE Commit
    • [Edge] ESHv2 Time-of-Use-Tariff Ctrl DELAY_DISCHARGE fix charge from AC Commit
    • [Edge] Predictors: Implement better logging Commit
    • [Edge] Controller.Ess.SoH.Cycle: Implement State-of-Health Cycle Controller Commit
    • [Edge] JSCalendar: implement nthOfPeriod for monthly byDay Commit
    • [Edge] Implement Grid-Buy-Soft-Limit in _meta (2) Commit
    • [Edge] App.FENECON.Home*: Bugfix for LED Commit
    • [Edge] Implement Grid-Buy-Soft-Limit in _meta Commit
    • [Edge] JSCalendar: Add Api-Routes to existing Components Commit
    • [Edge] FENECON 100 battery inverter: add type Commit
    • [Edge] Battery.Fenecon.Home: fix register names Commit

OpenEMS UI

  • Adjust large screen widget size based on nav position by @Sn0w3y in #3354
  • Fix: Pull-to-Refresh not working by @Sn0w3y in #3531
  • [UI] Use Angular property binding for SVG fill attribute by @sfeilmeier in #3542
  • Fixed copy-paste bug - was subWeeks instead of subMonths/subYears by @Sn0w3y in #3541
  • FEMS Backports 2026-01-15 by FENECON in #3518
    • [UI] formly-range-type: set default value Commit
    • [UI] IBN: add configuration for alerting Commit
    • [UI] Add validator for first- and last-name fields Commit
    • [UI] eslint-rule json-no-duplicate-keys Commit
    • [UI] App Center: fix display of registered keys Commit
    • [UI] fix redirects Commit
    • [UI] improve oauth flow Commit
    • [UI] Fix user back button Commit
    • [UI] Settings | Systemlog: fix toggle Commit
    • [UI] OAuth for android app Commit
    • [UI] OAuth implementation Commit
    • [UI] Spinner for excel export Commit
  • FEMS Backports 2026-01-24 by FENECON in #3540
    • [UI] Fixed style issue with formly serial number fields. Commit
    • [UI] EVSE: Only show Phase-Switch for KEBA P40 Commit
    • [UI] fix channels subscribe Commit
    • [UI] Fixes for mobile UI Commit
    • [UI] fix for missing sum state on live page ...
Read more

2026.1.0

Choose a tag to compare

@github-actions github-actions released this 01 Jan 02:37
212490b

Release Highlights

  • New implementations: Victron, OpenWB, Janitza UMG801, SMA STP-10.0 SE Hybrid, SDM72D-M-2 meter, MQTT Bridge
  • Improvements: Controller Timeslot Peakshaving, Kostal Piko & Plenticore, Autodiscovery for Shelly devices
  • Core development efforts: Energy Scheduler v2, JSCalendar, New E-Mobility Architecture (EVSE), Predictors

Details

Common/General

  • [Docs] Move development environment setup from getting started to a separate page by @simon-lgb in #3268
  • Update docker.adoc: added hint & link to influxdb deployment by @sjjh in #3201

OpenEMS Backend

  • FEMS Backports 2025-12-17 in #3471
    • Add settings to GetEdges Commit

OpenEMS Edge

  • Implement OpenWB Series 2 EVCS by @sthhs in #3299
  • Add support for Janitza UMG801 by @schiegg in #3451
  • Janitza Meters: cleanup implementations by @sfeilmeier in #3454
  • Add MQTT bridge implementation for OpenEMS Edge by @Sn0w3y in #3458
  • Controller Timeslot Peakshaving: Avoid endless while loop by @tsicking in #3464
  • fixed Kostal Piko HTML parsing bug: kWh for Total Energy in HTML, instead of expected Wh in ActiveProductionEnergy by @janklostermann in #3465
  • Add Single Channel datasource for dynamic simulation input by @Sn0w3y in #3448
  • Kostal Plenticore: correct and simplify smartmode by @iseeberg79 in #3417
  • Refactor openwb mqtt by @Sn0w3y in #3467
  • Implement SMA STP-10.0 SE Hybrid ESS by @tsicking in #2618
  • [Edge] Update GermanDSO: zeitvariable Netzentgelte §14a Modul 3 for 2026 by @sfeilmeier in #3473
  • Implements VirtualMeter on PvInverterCluster by @chpoulter in #3085
  • [Edge] Add support for SDM72D-M-2 meter by @Sn0w3y in #3491
  • Add Victron Package by @Sn0w3y in #3457
  • Update bnd to 7.2.0 by @sfeilmeier in #3494
  • FEMS Backports 2025-12-17 in #3471
    • App.Evcs.Keba: fix ReadOnly in EVSE Commit
    • App.System.Fenecon.Home: Control State-LED Commit
    • Battery.Fenecon.Home: Change Prio for Softwareversion and NumberOfModulesPerTower Commit
    • App.FENECON.Commercial.50.Gen3: add compatibility with App.PeakShaving.* Commit
    • GoodWe.BatteryInverter: improvements to MaxAcImport/Export Commit
    • Core.AppManager: force updating configs of components Commit
    • Core.Energy: handle TimeOfUse-Reference is null Commit
    • App.FENECON.Commercial.92: add missing property default value Commit
    • Energy Scheduler v2: handle non available prices & predictions Commit
    • Fix Eclipse Infos and Warnings Commit
    • Controller.Ess.Time-Of-Use-Tariff: fix PID filter fluctuation in DELAY_DISCHARGE Commit
    • Evse.Controller.Single: implement getTask and getOneTasks Commit
    • Battery.BMW: Improvements to go-stopped-handler Commit
    • Energy Scheduler v2 with EVSE Commit
    • Ess.Power: improve "Keep all near equals" solver Commit
    • AppCenter: remove has ac meter (Home 10, 20 & 30) Commit
    • IO.Shelly.*: validate compatibility with hardware type Commit
    • EVCS App Center: hide ARCHITECTURE_TYPE Commit
    • GoodWe.BatteryInverter: fix writing WBMS_DISCHARGE_MAX_CURRENT Commit
    • GoodWe.Charger.Mppt.Two-String: MPPT 5-8 available in components Commit
    • EVSE JSCalendar JSON-RPC: Add properties lastChangeAt and lastChangeBy Commit
    • Tribuo: Allow only severe logging Commit
    • Fix develop branch Commit
    • Energy Scheduler v2 with EVSE Commit
    • Switch EVCS to EVSE and back via App Center Commit
    • Add "App.Prediction.UnmanagedConsumption" Commit
    • Predictor Production Regression Model v2 Commit
    • Industrial L: product update Commit
    • Industrial: Janitza GridMeter for Industrial L and XL Commit
    • Predictor.ProfileClusteringModel: fix daylight saving time change error Commit
    • Energy Scheduler v2: remove internal Cache Commit
    • Improvements to EVSE and JSCalendar Commit
    • Controller.Clever-PV: fix for readOnly error Commit
    • Improve Ancillary Services Commit
    • Switch E Mobility Architecture Commit

OpenEMS UI

  • UI bugfix: Fix Log auto unsubscribe + SystemExecute formatting by @da-Kai in #3378
  • Enhance breadcrumbs with pointer cursor style by @Sn0w3y in #3413
  • FEMS Backports 2025-12-17 in #3471
    • EVSE: manual energy schedule Commit
    • Edge Settings Commit
    • New status icons and adjustments for other icons Commit
    • Charts: hide unused axes; bugfix Commit
    • EN-Buttons translation Commit
    • Manual UI backport Commit
    • Switch E Mobility Architecture Commit

Version Upgrades

  • Bump org.apache.felix:org.apache.felix.http.jetty12 from 1.1.4 to 1.1.6 in /cnf by @dependabot[bot] in #3462
  • Bump net.bytebuddy:byte-buddy from 1.18.1 to 1.18.2 in /cnf by @dependabot[bot] in #3461
  • Bump the bouncycastle group in /cnf with 2 updates by @dependabot[bot] in #3460
  • Bump actions/setup-node from 5 to 6 in /.github/workflows by @dependabot[bot] in #3373
  • Bump de.bytefish:pgbulkinsert from 8.1.6 to 8.1.8 in /cnf by @dependabot[bot] in #3470
  • Bump @angular/common from 20.3.10 to 20.3.14 in /ui by @dependabot[bot] in #3446
  • Bump com.google.protobuf:protobuf-java from 4.33.1 to 4.33.2 in /cnf by @dependabot[bot] in #3469
  • Bump org.mockito:mockito-core from 5.20.0 to 5.21.0 in /cnf by @dependabot...
Read more

2025.12.0

Choose a tag to compare

@github-actions github-actions released this 30 Nov 19:56
3fddf96

Release Highlights

  • Shelly Plug S
    • New autodiscovery feature for Shelly Plugs via App Center via mDNS
    • Supports: Shelly Plus Plug S, Plug S Gen3, Outdoor Plug S Gen3
    • "FEMS App Shelly DIY": this app is available free-of-charge for FENECON users from version 2025.12.1
  • E-Mobility
    • New support for ABL eM4 charging station (read-only)
    • Implement forced Phase-Switching for KEBA P40 and P30+S10 (new EVSE architecture)
  • Time of Use Tariffs
    • Octopus Go and Heat now support ancillaryCosts (German: variable Netzentgelte)
    • New support for LUOX Energy
    • New support for EWS Schönau
  • Under the hood
    • Improved Docker support
    • Improvements to JSCalendar and Energy Scheduler v2

Details

Common/General

  • FEMS Backports 2025-11-09 in #3403
    • CI: Add explicit common_test command Commit
    • CI: Update build scripts Commit
    • VSCode: specify default indentation Commit
    • Update build scripts Commit
    • Update build scripts Commit
  • Docs: fix broken link and typos by @deining in #3398
  • CI: Fix antora build by @da-Kai in #3418
  • Gradle: Fix buildBackend by @da-Kai in #3424
  • Docs Architecture: Update Cycle component reference by @Eual11 in #3439
  • Docs Docker: improve documentation by @akshith30388 in #3412
  • Docker: prevent "Interrupted system call" when writing to /etc/apk/repositories by @Sn0w3y in #3368

OpenEMS Backend

  • FEMS Backports 2025-11-09 in #3403
    • Extend Odoo Filter Commit
    • Aggregated-InfluxDB: increase allowed Component-IDs for EVSE and EVCS Commit
    • Add ElectricityMeter Channels for ios Commit
    • OAuth2 Registry support Commit

OpenEMS Edge

  • FEMS Backports 2025-11-09 in #3403
    • App Manager: ComponentTask with Component Record Commit
    • DynamicDocText: fix failed Test Commit
    • Evcs.Abl: implement ABL eM4 charging station (read-only) Commit
    • TimeOfUseTariff.OctopusGo/Heat: add ancillaryCosts (variable Netzentgelte) Commit
    • Ess.Generic.ManagedSymmetric: Add State Runtime Channels Commit
    • Standardise ErrorAcknowledgeRpc & implement for Industrials Commit
    • fix component not found for default id Commit
    • Temporary fix for failing JUnit test Commit
    • Evcs.HardyBarth: improvements Commit
    • GoodWe.BatteryInverter: adjust notification in State Commit
    • update translation key Commit
    • JSCalendar for Time-of-Use-Tariffs: fix clock issue Commit
    • Controller.IO.HeatingElement: fix NPE in JUnit test Commit
    • EnergyScheduler v2: temporary fix for JUnit tests Commit
    • JSCalendar improvements Commit
    • FENECON Commercial 50: update grid mode mapping Commit
    • Weather.OpenMeteo: fix channel persistence after restart Commit
    • App.TimeOfUseTariff: add compatibility with App.FENECON.Commercial.92.ClusterMaster Commit
    • FENECON Industrial L: Extend System Component with Janitza Grid-Meter (TCP) Commit
    • TimeOfUseTariff.ENTSO-E: improve parsing Commit
    • EVSE + KEBA P40 / P30+S10: implement forced Phase-Switching Commit
    • App.Prediction.Weather: move to 'API' category + do not require owner role Commit
    • Core.AppManager: improve timeouts & error messages Commit
    • Predictor.ProfileClusteringModel: improve error handling Commit
    • TimeOfUseTariff.ENTSO-E: fix query for DE_LU and AT Commit
    • Core.SerialNumber: decrease timeout for persisting serial numbers Commit
    • GoodWe Max Charge/Discharge Power bugfix for old devices Commit
    • AppCenter: Weather App Commit
    • Improve App installation speed Commit
    • Energy-Scheduler v2: improvements Commit
    • Battery.Fenecon.Home: fix software versions Commit
    • Weather.OpenMeteo: fix timezone handling Commit
    • ENTSO-E: default to QUARTERLY resolution Commit
    • App.FENECON.ProHybrid.10 Commit
    • TimeOfUseTariff LUOX Energy Commit
    • Kostal + Samsung: update usage of HTTP Bridge Commit
    • OAuth2 Registry support Commit
  • EWS Schönau: TimeOfUseTariff implementation by @Bockhorn-IT in #3302
  • Predictor.LSTM: improve robustness and testing by @Sn0w3y in #3402
  • Ess.Power: fix possible problems in calculation of ApparentPower constraints by @Sn0w3y in #3401
  • OsgiValidateWorker: only validate OpenemsComponents by @Sn0w3y in #3419
  • FEMS Backports 2025-11-25 in #3440
    • Energy Scheduler v2: EVSE Cluster Commit
    • Shelly Plug: RelayContactFilter + smart invert Commit
    • FENECON Commercial 92: add GridCode setting Commit
    • Ess.Power: fixed PID filter Commit
    • Plus Plug S, Plug S Gen3, Outdoor Plug S Gen3 Commit
    • Energy Scheduler v2 improvements Commit
    • EnergyScheduler v2: refactor EnergyFlow Commit
    • EWS Schönau ToU: release for Admins Commit
    • Clever-PV / EnerixControl: code cleanup and refactorings [Commit](9d45d08b...
Read more

2025.11.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 08:26
e291ea0

Release Highlights

  • Time-of-Use-Tariff: App for Dynamic Ancillary costs
  • Time-of-Use-Tariff Tibber: switch to QUARTER_HOURLY prices
  • Compatibility with FENECON Commercial 50
  • New Predictor for Consumption forecasting based on historical load profiles
  • UI: Add Weather Widget in Live-View
  • KOSTAL PIKO PV inverter (via HTTP/HTML)
  • UI: Major Update and migration to Angular 20

Details

Common/General

  • FEMS Backports 2025-10-02 in #3339
    • CI:
      • Update Unit Tests
      • Reduce Java build Log output: Reduce the log output to make errors clearer.
      • Print test summaries
    • Gradle:
      • Allow more than 2 Tests to run in parrallel
      • Enable parallel build by default
      • Remove failOnNoDiscoveredTests = false
    • Fix 'Configuration file ... is marked executable'
      • Fix warnings like: "Configuration file /usr/lib/systemd/timesyncd.conf.d/fems.conf is marked executable. Please remove executable permission bits. Proceeding anyway."
  • Update Gradle + Plugins by @da-Kai in #3337
  • Extend auto Stale and Close messages by @da-Kai in #3345
  • Update Node.Js to 22 by @da-Kai in #3347
  • Update MyModbusDeviceImpl.java by @sjjh in #3315
  • Update MyConfig.java: removed import by @sjjh in #3318
  • Improve UI docker by @da-Kai in #3366
  • Change console output format from plan to colored in gradle build of ci by @miettal in #3364

OpenEMS Backend

  • FEMS Backports 2025-10-02 in #3339
    • Dummy AppCenter Metadata
    • Remove UiWebsocketValidator
    • MetadataOdoo: handle uncached Edges
      • Solves throwing an Exception when an Edge is missing in EdgeCache

OpenEMS Edge

  • FEMS Backports 2025-10-02 in #3339
    • my-PV + ASKOMA Apps: update names
    • KACO Battery Inverter: introduce SunSpec EnumField16
      • Sunspec channels are automatically created based on EnumField16 enums.
      • These channels are visible as StateChannels in the system.
      • Each channel’s status (OK, Warning, or Failure) is defined during setup—by default, channels are OK unless specifically configured as warnings.
    • FENCON Commercial 50 App
    • Time-of-Use-Tariff:
      • App.TimeOfUseTariff.AncillaryCosts: App for Dynamic Ancillary costs
    • OperatingSystemDebianSystemd: Fix parseIpJson for Debian 9
      • Before a IndexOutOfBoundsException was thrown, which caused App Center install to fail
    • AppCenter:
      • Added a new formly field which handles links and redirects
      • run deactivation async: fixed exception while deactivating multiple nested checkables in CheckOr
      • Add JSONRPC Request for getting App Instances by Filter
    • KEBA ChargePoint: fix JUnit-Test
      • Use fixed DateTime reference, instead of .now(), for reproducability
      • Remove duplicate ReadWorkerTest
    • BridgeModbusTcpImplTest: delete JUnit test failing in CI
    • PredictorProductionLinearModel: add channels to track prediction quality
      • Added new channels to track predicted production values from the PredictorProductionLinearModel
      • For each forecast run, predicted values at fixed horizons (1 hour, 6 hours, 12 hours, 24 hours, and 36 hours ahead) are stored in the respective channels
      • This enables precise monitoring and evaluation of the prediction accuracy over these time intervals
    • Meta-App: manage Maximum Grid Feed In Limit settings
      • Moves MAXIMUM_GRID_FEED_IN_LIMIT (GridOptimizeCharge) and FEED_POWER_PARA_SET (GoodWeBatteryInverter) to Meta Component
      • Both controllers use the same value as reference
      • Added a new formly field which handles links and redirects
    • New Predictor for Consumption forecasting based on historical load profiles
      • A new predictor model has been developed to forecast upcoming unmanaged consumption values.
      • The prediction is based on typical household daily load profiles.
      • Load profiles are determined by clustering historical daily consumption time series data.
      • The load profiles correspond to the cluster centres.
      • The upcoming profile is chosen using historical consumption patterns, such as the day of the week, whether the upcoming day is a working or non-working day, and the previous profile.
      • The model evaluates the prediction in real time. So, if during the day the model realizes that the wrong profile was chosen, a better-fitting one is selected for the rest of the day.
      • The forecasted quarterly values are determined by the predicted profile.
    • EVSE New Architecture
      • Add State-Machine to EVSE Single Controller:
        • EV_NOT_CONNECTED: EV is not physically connected to the charge point.
        • EV_CONNECTED: EV is physically connected but not yet charging.
        • CHARGING: Regular charging is ongoing. EV is drawing current according to configured limits and conditions.
        • FINISHED_EV_STOP: Charging finished by EV. EV is not drawing power even if it would be allowed to.
        • FINISHED_ENERGY_SESSION_LIMIT: Charging is finished by OpenEMS because the configured EnergySessionLimit was reached.
        • prepared for more...
      • Add Change-Limit for rising set-points (3 % per second)
      • Improve surplus distribution: recursive call makes sure everything is distributed to max power
      • Drop SESSION_LIMIT_REACHED state; replaced with State-Machine
      • Improve JUnit tests and coverage
      • KEBA: use Enum for setSetEnable() (applies also to EVCS)
      • Phase-Switch is currently not working. Needs to be added to State-Machine
      • Successfully tested with 2 x KEBA P30
      • Configurable minimum power for vehicle
        • Added min and max power in generic vehicle and generic vehicle app
    • KEBA UDP: disable flaky JUnit tests
      • UDP tests sometimes fail with java.lang.Exception: On TestCase [#1]: expected ReadValue [CHARGING] got [UNDEFINED] for Channel [Status] in Nature [Evcs] on Inputs [[]]
    • Tibber: switch to QUARTER_HOURLY prices
    • GoodWe:
      • use new Registers for GridFeedInLimit and FixedPowerFactor: Registers for FENECON Commerical 50 changed
      • allow only possible EmsSetPower limits and correct AcImport/AcExport
    • Controller.Ess.RippleControlReceiver: Rundsteuerempfänger
      • Controller for Ripple Control Receiver
      • Digital Input 2 - Digital Input 4 are used as signal
      • DI2 reduces to 0%, DI3 to 30%, DI4 to 60%
      • If there are more than one relay active, the "strongest" limitation is used => e.g. 0% and 30% are activated => reducing to 0% power
      • Currently only for GoodWe Inverters => Feed-To-Grid Power Limit is set to the lowest of the two options:
      • MaxApparentPower * Limitation or the own set limit
      • removed MaxGridFeedInLimit of GridOptimizeCharge and BatteryInverter and added it in Meta app => uniform using of limit
    • Weather Forecast: keep data in channels
      • The current weather and the forecast for the next 24 hours are now being written in channels
      • This is more efficient in UI
    • Shelly: add invert config property to all ElectricityMeters
    • App.Heat.HeatingElement: ignoring heat and evcs components in the extern meter list
    • KACO Battery Inverter: introduce SunSpec EnumField16
      • Sunspec channels are automatically created based on EnumField16 enums.
      • These channels are visible as StateChannels in the system.
      • Each channel’s status (OK, Warning, or Failure) is defined during setup—by default, channels are OK unless specifically configured as warnings.
    • Consistant Icons
      • changed icons and Buttons to be more consistently identified with functionality
  • Fix high and low price description for Octopus Heat TOU Tariff by @sthhs in #3344
  • Update timeofusetariff octopus heat Config.java: typo by @sjjh in #3346
  • FEMS Backports 2025-10-08 in #3353
    • App.Meter.PqPlus available for OWNER
    • Weather.OpenMeteo: add random jitter to API calls to reduce simultaneous load
    • App.PvInverter.SolarEdge: make Modbus Unit ID configurable
    • Phase Rotation for Heating Element & Eastron meter
      • outsource enum "Phase Rotation" to make it independent
      • changing translations
      • implementing "Phase Rotation" in modbus protocoll of the Eastron meter
      • added property "Phase Rotation" in the Eastron meter app
  • implement KOSTAL PIKO PV inverter via HTTP/HTML parsing by @Sn0w3y in #3297

OpenEMS UI

  • FEMS Backports 2025-10-02 in #3339
    • Migration to Angular 20
      • Apply ng generate @angular/core:control-flow
      • VSCode: fix html formatting issues with new control flow syntax: Reference
    • Settings | Channels: add option to select multiple channels
    • EVSE New Architecture
      • Extend Evse with navigation to app center update page
      • Refactored app center update pages to be usable with new navigation
      • fix german/english translation of power
    • Fix Helpbutton-component not working due to wrong property name being checked
    • Time-of-Use-Tariff Ancillary Costs: Fix possible input errors
    • Style fixes
    • EVCS Cleanup
      • Added class EvcsComponent to clean up historic...
Read more