Releases: OpenEMS/openems
Release list
2026.8.0
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/EssSocCommit - [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
fromdown 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...
2026.7.0
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
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
GetScheduleCommit - [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
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
- FEMS Backports 2026-05-15 in #3729
- [Common] IntelliJ IDEA run configurations [Commit](https://githu...
2026.5.0
Release Highlights
- We celebrated 10 years of OpenEMS since the first hello-world commit
- See blog post on https://openems.io/2026/04/24/10-years-of-openems/
- Discuss at https://community.openems.io/t/10-years-of-openems/10828
- 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:
Details
OpenEMS Edge
- FEMS Backports 2026-04-04 by @fenecon in #3667
- [Edge] Simplify OSGi Reference by Component-ID: replace
updateReferenceFilterCommit - [Edge] Websocket ClientReconnectorWorker: circumvent possible deadlock Commit
- [Edge] JSCalendar: enforce an explicit
ClockCommit - [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
- [Edge] Simplify OSGi Reference by Component-ID: replace
- 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
- FEMS Backports 2026-04-04 by @fenecon in #3667
- [Common] Gradle: avoid Mockito warning Commit
- Docker: Add attestations and sbom by @da-Kai in #3675
- Update setup-ide.adoc: removed consollino UI by @sjjh in #3690
- Update readme.adoc: typo by @sjjh in #3701
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....
2026.4.0
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:
- Improved Device & Service documentation and Docs navigation; example: https://openems.github.io/openems.io/openems/latest/edge/device_service.d/io.openems.edge.meter.carlo.gavazzi.html
- Updated IntelliJ IDEA guide
- 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)
- For Energy Storage Systems
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()andgridSellHardLimit()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
- Local UI: Use browser Language as Default by @da-Kai in #3415
- AppComponent: fix missing onActivate method (#3591) by @rishabhvaish in #3597
- FEMS Backports 2026-03-21 by @fenecon in #3624
- New Navigation: desktop tree view Commit
- EVSE: show charge power Commit
- SoH Cycle Controller: show ESS Modal Commit
- Time-of-Use-Tariff: show Peak-Shaving mode [Commit](https://github.com/OpenEMS/openems/commit/
cf62ec6) - Add support for JSCalendar Scheduler Commit
- NUI: align tree view to top Commit
- NUI: Refactor production Commit
- SoH-Controller: fix channel subscribe Commit
- fix subscribe bug Commit
- Fix missing User.language Commit
- remove duplicated evcss in consumption [Commit](https://github.com/OpenEMS/op...
2026.3.0
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
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
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
- @timo-schlegel made their first contribution in #3547
- @alexbelkedev made their first contribution in #3554
Full Changelog: 2026.2.0...2026.3.0
2026.2.0
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
-
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
Instantinstead ofZonedDateTimeCommit - [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
nthOfPeriodfor 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
_metaCommit - [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-keysCommit - [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
2026.1.0
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
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
getTaskandgetOneTasksCommit - 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
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...
2025.12.0
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
- Docs: fix broken link and typos by @deining in #3398
- CI: Fix antora build by @da-Kai in #3418
- Gradle: Fix
buildBackendby @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/repositoriesby @Sn0w3y in #3368
OpenEMS Backend
- FEMS Backports 2025-11-09 in #3403
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
invertCommit - 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...
2025.11.0
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."
- CI:
- 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
- Use fixed DateTime reference, instead of
- BridgeModbusTcpImplTest: delete JUnit test failing in CI
- Introduced in #2879
- 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
EnergySessionLimitwas 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_REACHEDstate; 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
- Add State-Machine to EVSE Single Controller:
- 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 [[]]
- UDP tests sometimes fail with
- Tibber: switch to QUARTER_HOURLY prices
- Change GraphQL to QUARTER_HOURLY resolution, update parsing of prices and JUnit tests
- See https://developer.tibber.com/docs/changelog for details
- 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
invertconfig 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
- Apply
- 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...
- Migration to Angular 20