Skip to content

FEMS Backports 2025-12-17#3471

Merged
sfeilmeier merged 50 commits intodevelopfrom
feature/fems-backports
Dec 17, 2025
Merged

FEMS Backports 2025-12-17#3471
sfeilmeier merged 50 commits intodevelopfrom
feature/fems-backports

Conversation

@sfeilmeier
Copy link
Copy Markdown
Contributor

@sfeilmeier sfeilmeier commented Dec 11, 2025

  • Backend

    • [Backend] Add settings to GetEdges Commit
  • UI

    • [UI] EVSE: manual energy schedule Commit
    • [UI] Edge Settings Commit
    • [UI] New status icons and adjustments for other icons Commit
    • [UI] Charts: hide unused axes; bugfix Commit
    • [UI] EN-Buttons translation Commit
    • [UI] Manual UI backport Commit
    • [Edge/UI] Switch E Mobility Architecture Commit
  • Edge

    • [Edge] App.Evcs.Keba: fix ReadOnly in EVSE Commit
    • [Edge] App.System.Fenecon.Home: Control State-LED Commit
    • [Edge] Battery.Fenecon.Home: Change Prio for Softwareversion and NumberOfModulesPerTower Commit
    • [Edge] App.FENECON.Commercial.50.Gen3: add compatibility with App.PeakShaving.* Commit
    • [Edge] GoodWe.BatteryInverter: improvements to MaxAcImport/Export Commit
    • [Edge] Core.AppManager: force updating configs of components Commit
    • [Edge] Core.Energy: handle TimeOfUse-Reference is null Commit
    • [Edge] App.FENECON.Commercial.92: add missing property default value Commit
    • [Edge] Energy Scheduler v2: handle non available prices & predictions Commit
    • [Edge] Fix Eclipse Infos and Warnings Commit
    • [Edge] Controller.Ess.Time-Of-Use-Tariff: fix PID filter fluctuation in DELAY_DISCHARGE Commit
    • [Edge] Evse.Controller.Single: implement getTask and getOneTasks Commit
    • [Edge] Battery.BMW: Improvements to go-stopped-handler Commit
    • [Edge] Energy Scheduler v2 with EVSE Commit
    • [Edge] Ess.Power: improve "Keep all near equals" solver Commit
    • [Edge] AppCenter: remove has ac meter (Home 10, 20 & 30) Commit
    • [Edge] IO.Shelly.*: validate compatibility with hardware type Commit
    • [Edge] EVCS App Center: hide ARCHITECTURE_TYPE Commit
    • [Edge] GoodWe.BatteryInverter: fix writing WBMS_DISCHARGE_MAX_CURRENT Commit
    • [Edge] GoodWe.Charger.Mppt.Two-String: MPPT 5-8 available in components Commit
    • [Edge] EVSE JSCalendar JSON-RPC: Add properties lastChangeAt and lastChangeBy Commit
    • [Edge] Tribuo: Allow only severe logging Commit
    • [Edge] Fix develop branch Commit
    • [Edge] Energy Scheduler v2 with EVSE Commit
    • [Edge] Switch EVCS to EVSE and back via App Center Commit
    • [Edge] Add "App.Prediction.UnmanagedConsumption" Commit
    • [Edge] Predictor Production Regression Model v2 Commit
    • [Edge] Industrial L: product update Commit
    • [Edge] Industrial: Janitza GridMeter for Industrial L and XL Commit
    • [Edge] Predictor.ProfileClusteringModel: fix daylight saving time change error Commit
    • [Edge] Energy Scheduler v2: remove internal Cache Commit
    • [Edge] Improvements to EVSE and JSCalendar Commit
    • [Edge] Controller.Clever-PV: fix for readOnly error Commit
    • [Edge] Improve Ancillary Services Commit
    • [Edge/UI] Switch E Mobility Architecture Commit

sfeilmeier and others added 22 commits December 11, 2025 14:49
- Add null check for Clever-PV API

Co-authored-by: DerMuaaa <102706922+Andreas [email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Victor Nagy <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Andreas Mur <[email protected]>
Co-committed-by: Andreas Mur <[email protected]>
- Evse.Controller.Single: simplify Mode Enum; New order of priorities:
  - OneShot configuration (to be implemented)
  - JSCalendar configuration (will be SMART or MANUAL)
  - Mode configuration (default/fallback)
- JsonUtils: add handling of UUID
- JSCalendar: always provide UID for Task and OneTask
  - UID will be required for operations like `delete`
Due to recent performance improvements, it is not anymore required to Cache result.
Caching too much data was causing OutOfMemory Exceptions.
- adding missing english translation keys for the buttons Open, Back, Report

Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Hanna Späth <[email protected]>
Reviewed-by: Lukas Rieger <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Anas Shetla <[email protected]>
Co-committed-by: Anas Shetla <[email protected]>
- Fix a bug where unused axes are not displayed when the dataset is no longer hidden
- Change the labels on the percentage axes to whole numbers

Reviewed-by: Lukas Rieger <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
…nge error

- The days on which the daylight saving time change occurs have more or less than 96 quarterly values per day, which led to an error that has now been fixed
- Moreover, the training window was modified to the last 60 days, yet it still queries 90 days; Consequently, if days are filtered out, it will still use 60 days

Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Jan Thäter <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Fabian Brandtner <[email protected]>
Co-committed-by: Fabian Brandtner <[email protected]>
* GenericManagedSystemmetric: Update voltage regulation

Co-authored-by: Fabian Brandtner <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Hueseyin Sahutoglu <[email protected]>
Co-committed-by: Hueseyin Sahutoglu <[email protected]>
Co-authored-by: Michael Grill <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
- Add the PredictorProfileClusteringModel as an app, which is installed by default
- Update the priorities of the predictors in the PredictorManager

Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
- merged apps for evcs and evse into evcs app
- added request to switch architecture
- added request handler to handle request
- fallback deletes all relevant apps and components to avoid half and half installed

Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Johann Kaufmann <[email protected]>
Co-committed-by: Johann Kaufmann <[email protected]>
- EVSE
  - Change order of priorities: One-Shot -> Manual Schedule -> Smart Schedule -> Fallback Mode
  - Adjust JSCalendar configuration to support both Manual and future Smart mode
  - Handle and apply Manual charging Schedule
  - Single-Controller Debug-Log: show 'ActualMode' instead of statically configured mode
- JSCalendar
  - Fix Bug with overlapping start/end
  - JSONRPC-Requests/Reponses for
    - `AddTask`
    - `UpdateTask`
    - `DeleteTask`
    - `GetAllTasks`
- Energy Scheduler v2
  - Introduce `Modes` class to handle available/optimizable modes
  - `InitialPopulation` use `Set` to multiple equal entries
  - Add `EnergyScheduler::setPreProcessor` to exchange a Mode of a Period before Simulation, i.e. replace with fixed or manually planned Mode.

Co-authored-by: Leonhard Anderle <[email protected]>
- Fix OSGi wrapper
  - tribuo
  - olcut
- EnergyScheduler v2
  - Fix ModeCombinations when no optimizable modes are available
  - Set `SimulationsPerQuarter` channel
  - Log current and total number of simulations
- Only enable severe logging and disable informational logging, such as 'Building model 1'

Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
…ChangeBy

- Add 'lastChangeAt' and 'lastChangeBy' properties to the component configuration after the JSON-RPC request

Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
Co-authored-by: Leon Blenk <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Sebastian Asen <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leon Blenk <[email protected]>
Co-committed-by: Leon Blenk <[email protected]>
Co-authored-by: Sebastian Asen <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Sebastian Asen <[email protected]>
Co-committed-by: Sebastian Asen <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Johann Kaufmann <[email protected]>
Co-committed-by: Johann Kaufmann <[email protected]>
Add shelly type validation for newly installed apps

Reviewed-by: Johann Kaufmann <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Michael Grill <[email protected]>
Co-committed-by: Michael Grill <[email protected]>
Co-authored-by: Sebastian Asen <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Michael Grill <[email protected]>
Co-committed-by: Michael Grill <[email protected]>
This PR Adds some fall back , tolerance, and
- Added many unit test cases.
- No results logic,
- Tolerance
- Verification of the solution from the solver

Co-authored-by: Pooran Chandrashekaraiah <[email protected]>
Reviewed-by: Fabian Brandtner <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Pooran Chandrashekaraiah <[email protected]>
Co-committed-by: Pooran Chandrashekaraiah <[email protected]>
@codecov
Copy link
Copy Markdown

codecov bot commented Dec 11, 2025

Codecov Report

❌ Patch coverage is 68.75461% with 848 lines in your changes missing coverage. Please review.

Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #3471      +/-   ##
=============================================
+ Coverage      59.60%   59.79%   +0.20%     
+ Complexity       112      105       -7     
=============================================
  Files           2922     2956      +34     
  Lines         126328   128139    +1811     
  Branches        9412     9576     +164     
=============================================
+ Hits           75285    76614    +1329     
- Misses         48185    48611     +426     
- Partials        2858     2914      +56     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

sfeilmeier and others added 7 commits December 16, 2025 18:18
- add settings to `GetEdgesResponse`

Co-authored-by: Michael Grill <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: [email protected] <[email protected]>
Co-committed-by: [email protected] <[email protected]>
- Energy Scheduler
  - Improve Switching between v1 and v2
  - Improve Thread execution for Quick and Regular Optimization
- EVSE
  - Handle missing payload in Task (NPE)
  - Fix Params Serializer

Co-authored-by: Johann Kaufmann <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
Co-authored-by: Pooran Chandrashekaraiah <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Fabian Brandtner <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Pooran Chandrashekaraiah <[email protected]>
Co-committed-by: Pooran Chandrashekaraiah <[email protected]>
- added new status icons
- added new partly-cloudy-day icon
- optimised svgs for other browsers
- removed unused icon

Co-authored-by: DerMuaaa <102706922+Andreas [email protected]>
Reviewed-by: Hanna Späth <[email protected]>
Reviewed-by: Lukas Rieger <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Andreas Mur <[email protected]>
Co-committed-by: Andreas Mur <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
…in DELAY_DISCHARGE

+ add FORCE modes for easier debugging

Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Sagar Venu <[email protected]>
Co-committed-by: Sagar Venu <[email protected]>
- Added to first App.Evcs.Keba instance in update page a button to send switchEvcsEvse Request

Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Lukas Rieger <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Johann Kaufmann <[email protected]>
Co-committed-by: Johann Kaufmann <[email protected]>
sfeilmeier and others added 21 commits December 16, 2025 21:16
- Eclipse 2025-12 is stricter on Deprecation warnings. See release notes https://eclipse.dev/eclipse/markdown/?f=news/4.38/jdt.md -> "Changes Concerning Deprecation Warnings"
- This PR fixes Warnings and Infos in Eclipse IDE
- Before Energy Scheduler v2 always required a time-of-use tariff and consumption prediction.
- To be able to use the Energy Scheduler without these requirements, this PR introduce Period `WithPrediction`, `WithPrice`, `Complete` to distinguish different cases
- property did not exists the whole time so a default value is required for existing systems

Reviewed-by: Johann Kaufmann <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Michael Grill <[email protected]>
Co-committed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leonhard Anderle <[email protected]>
Co-committed-by: Leonhard Anderle <[email protected]>
- new property "forceUpdate" in the Configuration of ComponentDef and in the Property in ComponentProperties
- method "checkForceUpdating" in the class ResolveDependencies, that will be called in the run method
- runs through all components of the appConfigs and checks for the property forceUpdate and rewrites the config if it's true

Co-authored-by: Leon Blenk <[email protected]>
Co-authored-by: Michael Grill <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leon Blenk <[email protected]>
Co-committed-by: Leon Blenk <[email protected]>
- GoodWe Max Import/Export power was calculated based on WbmsChargeCurrent. The tests would work with negative inputs, but the read register behind could never be negative.
- At the same time, this was also used for old goodwe systems, so the inputs for the old systems (essGoodWe) are not changed for now.

Co-authored-by: Sebastian Asen <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Sebastian Asen <[email protected]>
Co-committed-by: Sebastian Asen <[email protected]>
…kShaving.*

- add priority of properties to for e. g. core components
- refactored SelfConsumptionOptimization to use "new" props
- add flag if key is free based on a dependency of another app
- working with peakshaving & phaseaccuratepeakshaving

Reviewed-by: Victor Nagy <[email protected]>
Reviewed-by: Johann Kaufmann <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Michael Grill <[email protected]>
Co-committed-by: Michael Grill <[email protected]>
…erOfModulesPerTower

As the softwareversion is no longer used for calculating the Number of Towers, these Modbus Tasks can be Prio LOW.
At the same time, the register "NumberOfModulesPerTower" could be HIGH to reduce the time between startup and reading of the SerialNumbers.

Co-authored-by: Sebastian Asen <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Sebastian Asen <[email protected]>
Co-committed-by: Sebastian Asen <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Hanna Späth <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: [email protected] <[email protected]>
Co-committed-by: [email protected] <[email protected]>
- Page Home -> overview screen without setting ability of anything
- Page Mode -> for setting modes
- Page Schedule -> shows all tasks in overview
- Page Task -> shows one task (navigation has to be dynamic)

Co-authored-by: Leonhard Anderle <[email protected]>
Co-authored-by: DerMuaaa <102706922+Andreas [email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Andreas Mur <[email protected]>
Reviewed-by: Victor Nagy <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Johann Kaufmann <[email protected]>
Co-committed-by: Johann Kaufmann <[email protected]>
- State-LED on all Home Systems except the Home 10 Gen 1 Version, now lights up blue when the system is working fine and blinks blue with a intervall of one second when the connection to the backend is off, but the system is still working fine

**Technical description**
- new App State-LED that creates a the SystemFeneconHome component, that only Admins can see
- the gets a dependency for a relay
- all Fenecon Home Apps except the Home 10 Gen 1 gets a dependency for the State-LED, if a hardware relay is already installed
- new Component Modus SystemFeneconHome
- new enum SystemLed with properties of a state, color, channelname and a boolean value isPermanent and two values BLUE and BLUE_DOTTED
- the Config has references of the three channel addresses of the digital outputs of a relay
- the Impl, that implemts a EventHandler, determines the correct enum value depending on other channel values and switches the digital outputs after the process image is switched
- if the state of the sum has no warnings or errors it determines the enum value BLUE
- if the backend is not connected it determines the enum value BLUE_DOTTED

Co-authored-by: Leon Blenk <[email protected]>
Co-authored-by: Sebastian Asen <[email protected]>
Co-authored-by: Michael Grill <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Michael Grill <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Leon Blenk <[email protected]>
Co-committed-by: Leon Blenk <[email protected]>
Co-authored-by: Stefan Feilmeier <[email protected]>
Reviewed-by: Stefan Feilmeier <[email protected]>
Co-authored-by: Johann Kaufmann <[email protected]>
Co-committed-by: Johann Kaufmann <[email protected]>
@sfeilmeier sfeilmeier changed the title FEMS Backports 2025-12-11 FEMS Backports 2025-12-17 Dec 17, 2025
@sfeilmeier sfeilmeier merged commit 16387dd into develop Dec 17, 2025
7 checks passed
@sfeilmeier sfeilmeier deleted the feature/fems-backports branch December 17, 2025 09:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant