Published July 1, 2025
| Version 2025.7.0
Software
Open
OpenEMS/openems: 2025.7.0
Creators
- Stefan Feilmeier1
- wgerbl
- ebakir
- fabianfnc
- Hüseyin Sahutoglu
- pooran-c2
- Max Obermeier3
- Sebastian Asen
- Hannes
- Sagar4
- da Kai5
- Lukas Rieger6
- Hiromasa Ihara7
- Kyle8
- Thomas Sicking9
- luzpaz
- Felix S10
- Christian Lehne
- dependabot-support
- Michael Grill
- DerWahreKlinki
- Lisa Kaindl2
- ahummelsberger11
- parapluplu
- lukas-bender-rodriguez
- Simon Fey
- iammahdi96
- greemo
- 1. FENECON GmbH, OpenEMS Association e.V.
- 2. FENECON GmbH
- 3. Apple Inc.
- 4. Fenecon
- 5. @OpenEMS
- 6. University Deggendorf
- 7. @girasolenergy
- 8. Microcare
- 9. opernikus GmbH
- 10. @opernikus-common
- 11. KATEK
Description
Release Highlights
- Implementation of MyPv AC-Thor9s and Askoma electric heaters
- Implementation of "Linear Model Production-Predictor" based on weather forecasts
- Standard interface for Weather API with reference implementation for Open-Meteo
- Controller Ess Balancing: allow setting target grid Setpoint via Modbus
Details
Common/General
- Docker: set execute permissions to 'run'-files by @da-Kai in https://github.com/OpenEMS/openems/pull/3166
- FEMS Backports 2025-07-01 in https://github.com/OpenEMS/openems/pull/3218
- XLSX Export: remove timezone validation
OpenEMS Backend
- FEMS Backports 2025-06-22 in https://github.com/OpenEMS/openems/pull/3206
- Add getProtocolsCoreInfo request
- add
getProtocolsCoreInfo
to get all protocols with{type: ProtocolType, id: number, create_date: Date}
- added
setupProtocolType
togetLatestProtocolCoreInforesponse
- add
- Add getProtocolsCoreInfo request
- FEMS Backports 2025-07-01 in https://github.com/OpenEMS/openems/pull/3218
- Update B2B Rest-Api to Jetty12
- Fix skipping debug metrics
- Add Heat ActiveProductionEnergy to AllowedChannels
OpenEMS Edge
- ESS GoodWe: Improved implementation of getSurplusPower() by @tsicking in https://github.com/OpenEMS/openems/pull/3171
- Fix JSCalendar without recurrence rule by @tsicking in https://github.com/OpenEMS/openems/pull/3197
- FEMS Backports 2025-06-22 in https://github.com/OpenEMS/openems/pull/3206
- EVSE KEBA UDP: fix stop charging session
- GoodWe: use extended grid meter values
- The meter values currently used, are limited to signed 16bit. This could cause an integer overflow - therefore goodwe added new S32 registers.
- UpdateManager: Generic updates
- added update manager which collects all Updateables
- currently no implementation of an Updateable exists
- Updateables are displayed in System view
- E-Mobility: P40-App Fix
- added check for HARDWARE_TYPE in KebaEvcs to make field readonly
- added readonlyIf Method that dynamically makes field readonly based on BooleanExpression
- KACO BatteryInverter: add "required" blocks
- Fix sunspec initialization for kaco inverters
- Kacos have a default modbus table with only common blocks when not configuration is not completed
- initialization completes to fast without all required models/channels
- Restart initialization until all required blocks are read
- GoodWe: add new SolarGo states
- Add SolarGo States when the corresponding register is not Undefined (0xffff)
- KEBA App: fix Scheduler for readonly
- Only add to Scheduler when not read only
- Weather API: Open-Meteo implementation
- Coordinates are stored in the Meta app and used as the basis for weather data retrieval
- An OSGi component was added to integrate with the Open-meteo API
- The component subscribes to the Open-meteo API for forecast data, polling every 6 hours
- Forecasts cover the upcoming two days
- The current weather is derived from the latest available forecast data
- For historical weather data, a separate API call is made
- This call supports a configurable start and end timestamp to define the time range
- AppCenter: clever-pv public available
- update roles to be installable by owner
- added datasecurity hint
- Power2Heat-Nature + MyPv AC-Thor9s and Askoma Read-Only implementation
- Introducing new power2Heat Nature.
- Read-Only implementations for MyPv AC-Thor9s and Askoma heating elements
- New App including the UI.
- FENECON Home Apps: add Dynamic and External limitation option for Feedintype
- Power2Heat: fixes for energy calculation, etc.
- Changed cycle to after process image
- Updated translations
- Added changes requested by previous review
- AppCenter: set min access role from installer to owner for app delete
- allow owner to deinstall apps
- AppCenter: fix displaying "max feed in power" field based on Feed-In Type
- FEMS Backports 2025-07-01 in https://github.com/OpenEMS/openems/pull/3218
- ToU: Addition of DSO providers and test cases
- Power2Heat: declare heatingelement as consumption metered
- Add dynamic to ips in
getNetworkInfo
- Add Channel Sum.UnmanagedProductionActivePower
- Specs:
- Interface: Sum (origin: ElectricityMeter and ESS DC Charger)
- Type: Integer
- Unit: W
- Range: should be only positive; greater than or equal to PRODUCTION_ACTIVE_POWER
- Note: this value represents the part of the active power production that is not actively managed or curtailed by OpenEMS or external regulations, i.e., it reflects the raw production before any control actions such as feed-in limitation due to grid constraints or new regulations on PV systems. This value can be used for forecasting or analysis of the unmanaged production.
- Currently identical to ProductionActivePower (direct copy)
- Future versions may decouple from controlled production values
- Specs:
- Implement "Linear Model Production-Predictor" based on weather forecasts
- A linear model was used, as a linear relationship between weather data and PV generation was identified
- The model is retrained every two days using the most recent two weeks of data
- Training features include solar irradiation data and time-of-day related features
- Forecasts are generated using weather forecast data as input
- The model is lightweight and computationally efficient
- Numerous potential edge cases, such as insufficient training data, are already handled gracefully
- Add optional Open-Meteo commercial API Key
- An API key has been added for FENECON systems
- Since it's only required for commercial use, the API remains functional without it
- Code cleanups
- Move Abstract SunSpec implementations for BatteryInverter, Meter and PV-Inverter to Modbus-Bridge bundle
- Move Phase-related enums
SingleOrAllPhase
andSinglePhase
toio.openems.edge.common/src/io/openems/edge/common/type/Phase.java
- Add static imports
- EVSE improvements
- Refactor Profiles to
Abilities
andActions
for Charge-Point and Electric-Vehicle - Implement StateMachine in Evse.Controller.Single
- Improve power distribution; considering "Steps" (Ampere vs MilliAmpere vs Watt)
- Refactor Profiles to
- Controller Ess Balancing: allow setting target grid Setpoint via Modbus
- Before: external EMS could only send charge/discharge information to ESS.
- This PR creates the option to also control the TargetGridSetPoint via Modbus ReadWrite
- New WriteChannel "SET_GRID_ACTIVE_POWER" in ControllerEssBalancingImpl: Negative value = Feed-in; Positive value = Grid-Draw
- Adapt ControllerEssBalancingImpl: Change priority so that SET_GRID_ACTIVE_POWER ist highest; 2nd (as up until now) config "targetGridSetPoint"
OpenEMS UI
- FEMS Backports 2025-06-22 in https://github.com/OpenEMS/openems/pull/3206
- New navigation & extend EVSE
- Improve breadcrumbs: hightlight current; fix wrong aliases
- EVSE Settings: only for admins; allow change
manualEnergySessionLimit
- clean up service directory
- EVSE Icon change
- changing icon for ( schnell ) button.
- Heat-pump Icon color history widget
- changing heat-pump historty flat widget icon color to "normal"
- Fix circular dependency/unsatisfied reference
- remove appRoutingProviders, due to being called before initialized -> unsatisfied reference
- fixes circulardep of time of use utils
- Rollout alerting fault for admin/installer
- Fix back arrow navigation
- Fixing hidden
back-arrow
issue in i.e. Changelog standalone component. using angular servicelocation.back()
to navigate back reliably, instead of using navigation tree.
- Fixing hidden
- Apply new linting rule
- reduce BOF empty lines to 0
- reduce EOF empty lines to 1
- reduce max empty consecutive lines to 2
- Custom "range" type picker in angular formly
- Fix missing help-button import
- Import of helpbutton component missing in modal module and settings module
- EVSE improvements
- remove duplicate fab-button for formly control submits on desktop
- change width of grid in evse shown on desktop resolution (size-md and higher)
- E-Mobility: Fix Help Key for Hardy Barth
- Changed help key in switch case
- Improve formly-select
- E-Mobility: Fix Rangebuilder
- Fix Range Slider in Evcs Modal
- Add missed changed min/max to tickMin/tickMax
- heatComponents are now correctly subtracted from other Energy
- Fix white flash on page refresh
- AppCenter-UI: add visible role
- Added Permissions object to getApps JsonRpc Request
- Added Permissions Interface to Apps in UI
- Added canSee (role) after name in appcenter ui
- Refactoring Storage-history
- Change reload behaviour live and history
- remove default reload behaviour on reentering app
- only views wrapped inside the
PullToRefreshComponent
are reloaded on reentering app
- New navigation & extend EVSE
- FEMS Backports 2025-07-01 in https://github.com/OpenEMS/openems/pull/3218
- App Center key for darkmode optimized
- badge background color change in app center key, relative to the selected theme.
- Fix Android view height
- Android view height was not recalculated when respecting android native navigation toolbar
- Fix IonRange PinFormatter in Heating element
- Network settings: show current DHCP IP & allow access for OWNER
- show dynamic ip to
/network
next to dhcp address - opening
/network
forRole.OWNER
, showing only eth0
- show dynamic ip to
- Fix EdgeConfig properties being stringified
- Fix object creation of EdgeConfig Components
- Due to casting objects to be instance of class
EdgeConfig.Component
, results in fake instances of these classes, and so it is not possible to call class functions
- Due to casting objects to be instance of class
- Fix lifecycles in live component
- fixing lifecycle events going from
/live
to/user
- refactoring currentValue to signal
- adding unsubscribes to effect contexts
- fixing lifecycle events going from
- App Center key for darkmode optimized
Version Upgrades
- Bump com.squareup.okio:okio-jvm from 3.11.0 to 3.12.0 in /cnf by @dependabot in https://github.com/OpenEMS/openems/pull/3164
- Bump com.google.protobuf:protobuf-java from 4.31.0 to 4.31.1 in /cnf by @dependabot in https://github.com/OpenEMS/openems/pull/3163
- Bump org.postgresql:postgresql from 42.7.5 to 42.7.6 in /cnf by @dependabot in https://github.com/OpenEMS/openems/pull/3162
- Bump org.apache.felix:org.apache.felix.http.jetty12 from 1.0.32 to 1.0.34 in /cnf by @dependabot in https://github.com/OpenEMS/openems/pull/3178
- Bump the bouncycastle group in /cnf with 2 updates by @dependabot in https://github.com/OpenEMS/openems/pull/3179
- Bump org.postgresql:postgresql from 42.7.6 to 42.7.7 in /cnf by @dependabot in https://github.com/OpenEMS/openems/pull/3185
- Fix OpenEMS translation texts by @sfeilmeier in https://github.com/OpenEMS/openems/pull/3187
- Bump com.squareup.okio:okio-jvm from 3.12.0 to 3.13.0 in /cnf by @dependabot in https://github.com/OpenEMS/openems/pull/3191
- Bump org.jsoup:jsoup from 1.20.1 to 1.21.1 in /cnf by @dependabot in https://github.com/OpenEMS/openems/pull/3209
- Bump org.jetbrains.kotlin:kotlin-osgi-bundle from 2.1.21 to 2.2.0 in /cnf by @dependabot in https://github.com/OpenEMS/openems/pull/3210
- Update Gradle to 8.14.1 by @sfeilmeier in https://github.com/OpenEMS/openems/pull/3168
- Update Gradle to 8.14.2 by @sfeilmeier in https://github.com/OpenEMS/openems/pull/3223
Full Changelog: https://github.com/OpenEMS/openems/compare/2025.6.0...2025.7.0
Files
OpenEMS/openems-2025.7.0.zip
Files
(77.2 MB)
Name | Size | Download all |
---|---|---|
md5:9ee54f8dd7a3538d9305b1a8f6a9402c
|
77.2 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/OpenEMS/openems/tree/2025.7.0 (URL)
Software
- Repository URL
- https://github.com/OpenEMS/openems