Sn0w3y
October 2, 2025, 11:32pm
1
Hi @stefan.feilmeier ,
before i open an Issue on GitHub i just wanted to report, that many of the Styles in OpenEMS are broken after merging FEMS Backports. Steps to Reproduce:
Go to History and see the Pickdate
Go to Channels and see the ComponentPicker List
I will continue the List if wanted and if i find more “Style-Bugs”.
Greetings
Yes please, collect the issues. This backport includes a major update to Angular 20 which might be responsible for little issues here and there.
Regards,
Stefan
(@lukasrgr FYI)
1 Like
Sn0w3y
October 3, 2025, 11:49pm
3
I will Edit this Post as I find more:
Pickdate in History :
Go to Channels and see the ComponentPicker List - also broken
Style was centered before - do not know if intentional?
toggle button seems not right-padded anymore
The “arrow-forward-outline” Buttons in Settings Component are too small
@Sn0w3y Thank you again! I backported some fixes and merged to develop. Could you please test again?
develop ← feature/fems-backports
opened 08:26AM - 08 Oct 25 UTC
* Edge
* App.Meter.PqPlus available for OWNER
* Weather.OpenMeteo: add ran… dom 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
* UI
* TimeOfUseTariff: display only two decimals on history chart
- set a fixed amount of decimal places for currency value
* General improvements
* Improve performance
- removes unneccesary evaluating of getter `modalComponent` which has been evaluated every second and leads to slowing down the monitoring
* Angular 20 Update: additional visual changes
- See OpenEMS Community: https://community.openems.io/t/fems-backports-broke-many-css-styles/10527/3
* Fix unsubscribe of channels
- problem: too many channels unsubscribed on modal close
1 Like
Sn0w3y
October 8, 2025, 1:12pm
5
Sn0w3y:
Go to Channels and see the ComponentPicker List - also broken
Sn0w3y:
All fixed - these 2 are still missing
1 Like
Sn0w3y
October 9, 2025, 9:32am
6
committed 01:07PM - 02 Oct 25 UTC
* Common
- CI:
* Update Unit Tests
* Reduce Java build Log output: Re… duce 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."
* UI
* Migration to Angular 20
* Apply `ng generate @angular/core:control-flow`
* VSCode: fix html formatting issues with new control flow syntax: [Reference](https://www.reddit.com/r/Angular2/comments/1j71x20/how_to_format_angulars_new_controlflow_syntax_in/)
* 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 data generation in all views
* fix Consumption flat widget
* New Navigation: add check for isEnabled on component
- prevent disabled components to be shown for new navigation
* LiveDataService currentData: fix not refreshing bug
* History Storage: add fallback channels for non hybrid ess
- use active power for non hybridEss and subnavigation for phase details only for hybridEss
* Unified icons for “Error” status
* Settings: refactor to lazy loaded module
- decrease size of init app bundle, this PR is focused on migrating Settings to standalone and lazy-loaded.
- fixing changelog component not showing back-arrow when inistialising, improved back button behavior in header component by using Navigation services for dynamic visibility.
- Ensured consistent back navigation across all routes, including when changelog.component is nested or reused.
* Improve keyboard accessibility
- Apply keyboard accessibility according to WCAG (Web Content Accessibility Guidelines)
* GridOptimizedCharge: fix time format for live
- displaying the endTimeDetailedDescription in Netzdienliche Beladung as 24h or 12h format depending on User's browser's language.
* Warning Status: consistent usage of warning icon
- changing display of warning status to have a warning sign / icon. where previously Fault & Warning statuses were displaying
`alert-outline` sign / icon .
* Add Weather Widget
- Added new Weather Widget in Live View below the Energy Monitor
- Displays current weather, 6-hour forecast, and daily forecast for the next 6 days
- Shows temperature, general weather condition, and sun hours
- Weather data is retrieved from the Edge using coordinates stored in Meta configuration
- Forecasts are retrieved in quarter-hourly, hourly, and daily resolution for the next 7 days
- Linear prediction model adapted to handle the new weather data format
- Forecasts are cached on the Edge and the UI fetches only the data it currently needs
* Settings: fix missing buttons
- Added missing import for FlatButtonComponent
* Widget for EnerixControl/Clever-PV
* Ripple Control Receiver (Rundsteuerempfänger)
* Edge
* 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
- Introduced in https://github.com/OpenEMS/openems/pull/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 `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
- 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 `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
* Backend
* Dummy AppCenter Metadata
* Remove UiWebsocketValidator
* MetadataOdoo: handle uncached Edges
- Solves throwing an Exception when an Edge is missing in EdgeCache
---------
Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-authored-by: Michael Grill <59126309+michaelgrill@users.noreply.github.com>
Co-authored-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Co-authored-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Hueseyin Sahutoglu <34771592+huseyinsaht@users.noreply.github.com>
Co-authored-by: Sagar Venu <32655208+venu-sagar@users.noreply.github.com>
Co-authored-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
Co-authored-by: Fabian Brandtner <10850256+fabian94533@users.noreply.github.com>
Co-authored-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
Co-authored-by: Anas Shetla <141644226+AnasShetla@users.noreply.github.com>
Co-authored-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Co-authored-by: Leon Blenk <168936274+LaBlanko@users.noreply.github.com>
Co-authored-by: Victor Nagy <11665068+v-nagy@users.noreply.github.com>
Co-authored-by: Hanna Späth <198875998+HaSp97@users.noreply.github.com>
Theme Switcher also Disappeared :o