Skip to content

FEMS Backports 2026-02-18#3568

Merged
sfeilmeier merged 46 commits intodevelopfrom
feature/fems-backports
Feb 18, 2026
Merged

FEMS Backports 2026-02-18#3568
sfeilmeier merged 46 commits intodevelopfrom
feature/fems-backports

Conversation

@sfeilmeier
Copy link
Contributor

@sfeilmeier sfeilmeier commented Feb 17, 2026

  • Backend

    • [Backend] BackendEdge: Update readme + create new gradle tasks Commit
    • [Backend] Gradle and Docker builds for Backend-Edge-Manager Commit
  • UI

    • [UI] JSCalendar: refactor Commit
    • [UI] "Location validator" section in Profile Commit
    • [UI] Set fixed version for angular/cdk Commit
    • [UI] replaced outdated links and added language placeholder Commit
    • [UI] Offline + Time-of-Use new icon Commit
    • [UI] fix rerouting for non admins Commit
    • [UI] rm runtime warnings Commit
    • [UI] Prevent vehicle-id Error from showing outside the vehicle settings Commit
    • [UI] fix local UI Commit
    • [UI] Reduce GetEdgesRequests Commit
    • [UI] fix ci build Commit
    • [UI] fix local monitoring Commit
    • [UI] fix for app center vehicles Commit
    • [UI] Websocket.ts: add missing promise reject callback Commit
    • [UI] Timeslot PeakShaving: fix string to number conversion Commit
    • [UI] implement wcag 1.4.4 Commit
    • [UI] Adjustments for Manual Commit
    • [UI] EVSE: fix car update Commit
  • Edge

    • [Edge] Hardy Barth: EVSE Implementation and Switch Architecture Commit
    • [Edge] TimeOfUseTariff.Ews: migrate to Http-Bridge Commit
    • [Edge] EVSE: Add Lost Line Commit
    • [Edge] AppCenter: Add P30 EVSE to switch Commit
    • [Edge] App Center EVSE: Switch with existing Vehicle Commit
    • [Edge] ESv2: fix charging during DELAY_DISCHARGE Commit
    • [Edge] ESHv2 GoC: use MaximumGridFeedInLimit Commit
    • [Edge] Controller.Ess.SoH.Cycle: IsRunning instead of mode Property Commit
    • [Edge] EnergyScheduler v2: improvements Commit
    • [Edge] EnergyScheduler v2: improvements Commit
    • [Edge] ChannelDoc: Add a way to set text dynamically Commit
    • [Edge] Plot GlobalOptimizationContext with JFreeChart Commit
    • [Edge] App.Ess.SohCycle: set dependency for FENECON Home & Commercial Commit
    • [Edge] RunOptimizerApp: Plot SimulationResult with JFreeChart Commit
    • [Edge] Edge2Edge: fix handling of hashes Commit
    • [Edge] TimeOfUseTariff.ENTSO-E: add bidding zone Lithuania Commit
    • [Edge] EVCS-to-EVSE: fix CanSwitchArchitecture for Systems that do not yet have READ_ONLY Commit
    • [Edge] Controller.Ess.SoH.Cycle: improving balancing logic and add more channels Commit
    • [Edge] App.Ess.SohCycle: SoH Cycle App Commit
    • [Edge] IO.Fenecon.MasterBox2V0.Relay: Implemented Commit
    • [Edge] App.Prediction.Default: add new app "Default Prediction" Commit
  • Common

    • [Common] Update Docker Commit
    • [Edge/UI] App Center: Fix Keba Toggle Switch Errors Commit
    • [Common] Java-WebSocket Wrapper: include JavaDoc Commit
    • [Common] Gradle: lazy configuration for all tasks Commit

sfeilmeier and others added 30 commits February 17, 2026 21:31
- Problem: Existing predictor persistence models, which are used for fallback, are not added to the PredictorManager
- Solution:
  - The PersistenceModel is now packed into the app "Default Prediction", which is installed automatically
  - It is also added with the lowest priority to the PredictorManager during installation

Reviewed-by: Michael Grill <59126309+michaelgrill@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Co-committed-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
- Improve test coverage
- Reuse logic from EVCS for EVSE implementation
- No implementation for Phase-Switching yet
- Switch Architecture via App Center

Co-authored-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Victor Nagy <11665068+v-nagy@users.noreply.github.com>
Co-authored-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
Co-committed-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
Co-authored-by: Leon Blenk <168936274+LaBlanko@users.noreply.github.com>
Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Leon Blenk <168936274+LaBlanko@users.noreply.github.com>
Co-committed-by: Leon Blenk <168936274+LaBlanko@users.noreply.github.com>
- added contentHeight to form
- added additional request and check for the specific car
- added notification if there is an error with configuration

Co-authored-by: DerMuaaa <102706922+Andreas Mur@users.noreply.github.com>
Reviewed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Co-committed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Co-authored-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Reviewed-by: Michael Grill <59126309+michaelgrill@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Co-committed-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Reviewed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Hanna Späth <198875998+HaSp97@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Anas Shetla <141644226+AnasShetla@users.noreply.github.com>
Co-committed-by: Anas Shetla <141644226+AnasShetla@users.noreply.github.com>
https://docs.gradle.org/current/userguide/lazy_configuration.html

Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
Co-committed-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
- Improve visibility of chart views for [WCAG 1.4.4](https://www.w3.org/WAI/WCAG21/Understanding/resize-text.html)
- fix height calculation throughout ui
- use `oe-footer-subnavigation` in charts, to enable dynamic scaling of chart canvas and stop overflowing content

Co-authored-by: DerMuaaa <102706922+Andreas Mur@users.noreply.github.com>
Co-authored-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Hanna Späth <198875998+HaSp97@users.noreply.github.com>
Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Pooran Chandrashekaraiah <46567310+pooran-c@users.noreply.github.com>
Reviewed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Sagar Venu <32655208+venu-sagar@users.noreply.github.com>
Co-committed-by: Sagar Venu <32655208+venu-sagar@users.noreply.github.com>
…e channels

### Purpose
Add diagnostic channels to SOH cycle controller for better visibility into battery state of health:
- **SOH_PERCENT** - State of Health percentage (0-100%)
- **SOH_RAW_DEBUG** - Raw SoH value (may exceed 100%, for debugging)

Additionally, add battery balancing diagnostic channels to help identify null value issues:
- **BALANCING_DELTA_MV_DEBUG** - Cell voltage delta (mV)
- **BALANCING_REASON** - Explains balance check failures (BASELINE_MIN_MISSING, MAX_VOLTAGE_UNDEFINED, DELTA_NEGATIVE, etc.)

### Changes
- New enum: `BatteryBalanceReason` with 7 diagnostic states
- Enhanced: `CheckBalancingHandler` to track and persist diagnostic reasons
- Updated: `Context.java` to calculate and set diagnostic channels
- **Improved voltage tracking**: Changed cell voltage delta calculation. Now it captures maximum values for the maximum and minimum cell voltages and compare them in the Check Balancing Cycle.
- Tests: 5 test cases covering all balance check failure paths

### Impact
- ✅ Backward compatible
- ✅ No behavior changes
- ✅ Diagnostics persist after cycle completion
- ✅ Enables root cause analysis without log parsing

Co-authored-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Co-committed-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
- Noticed during refactoring of charts, that not all exceptions are catched

Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Hanna Späth <198875998+HaSp97@users.noreply.github.com>
Reviewed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Sagar Venu <32655208+venu-sagar@users.noreply.github.com>
Co-committed-by: Sagar Venu <32655208+venu-sagar@users.noreply.github.com>
…t yet have READ_ONLY

- If a Charging Station does not yet have "READ_ONLY" yet, default to false to allow older systems to switch architecture

Reviewed-by: Michael Grill <59126309+michaelgrill@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
Co-committed-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
- Add Chart Plotter to `RunOptimizerFromLogApp` and `RunOptimizerApp`
- Simplify inheritance;  GlobalOptimizationContext: add Periods class
- Add `consumptionRiskAdjusted` by Risk Factor
- More conservative predictions
- Higher target-SoC per RiskFactor

Co-authored-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Co-authored-by: Andreas Mur <102706922+Andreas Mur@users.noreply.github.com>
Reviewed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Co-committed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Co-authored-by: Sagar Venu <32655208+venu-sagar@users.noreply.github.com>
Co-committed-by: Sagar Venu <32655208+venu-sagar@users.noreply.github.com>
- Casting to `short` lead to non identified hashes
Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
Co-committed-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
Reviewed-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
- Add library JFreeChart for plotting
- Use JFreeChart to plot SimulationResult

Co-authored-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Co-committed-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Co-authored-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Reviewed-by: Michael Grill <59126309+michaelgrill@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
- fix local monitoring not calling `getEdges` and not being rerouted to `/live`

Reviewed-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
SoH Cycle dependency was added to Fenecon Home and Commercial Apps:

- Home
  - FeneconHome10
  - FeneconHome10Gen2
  - FeneconHome15
  - FeneconHome20
  - FeneconHome30
  - FeneconHome6

- Commercial
  - FeneconCommercial100
  - FeneconCommercial50Gen3

Reviewed-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Co-committed-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Add build files for BackendEdge
* add gradle build task
* remove unnecessary bundle dependencies
* Use io.openems.core.logger
* add docker image build

Co-authored-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Reviewed-by: Michael Grill <59126309+michaelgrill@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
Co-committed-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Co-committed-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Reviewed-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
Reviewed-by: Michael Grill <59126309+michaelgrill@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Co-committed-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
- Made it possible to include parameters to other data in channelDoc text.
- It does not inform the UI about the text update, but that should not be relevant for error messages and it was not implemented in the old goodwe dynamic text as well.
- Implemented to include detected and expected model names in "The device type you selected does not match the discovered Shelly model ..." state message

Reviewed-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Franz Reiter <1498918+Howaner@users.noreply.github.com>
Co-committed-by: Franz Reiter <1498918+Howaner@users.noreply.github.com>
- Consumption prediction:
  - Fix wrong method call in consumption prediction
- RiskLevel:
  - Change RiskLevel to Environment (BETA, PRODUCTION and TEST (stable environment for unit tests))
- Optimization:
  - Punish CHARGE_GRID when ess is full
  - Add mode preference ranks, to prefer specific modes when there is no difference in costs

Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
Co-committed-by: Leonhard Anderle <132663596+leonhardanderle@users.noreply.github.com>
- car now gets identified via query parameters

Co-authored-by: DerMuaaa <102706922+Andreas Mur@users.noreply.github.com>
Reviewed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Co-committed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
sfeilmeier and others added 16 commits February 17, 2026 22:25
# Problem

Switching the KEBA app between EVCS (legacy) and EVSE (new architecture) could leave the system in an inconsistent state.

Observed issues:

- App marked as “Defekte App erkannt”
- Missing controllers after switch (e.g. ctrlEvseSingle0, cluster controller)
- Validation errors due to mixed architectures:
  - expected `Evse.ChargePoint.Keba.Modbus`, got `Evcs.Keba.P40`
  - missing required property `wiring`
- Scheduler still referencing removed controllers (`ctrlEvcs0`)
- Rollback (Toggle OFF) could permanently break the app configuration

Root cause was a non-atomic architecture switch in SwitchArchitecture, including:

- incorrect lifecycle ordering (config deleted while scheduler/controllers still active)
- incomplete EVCS → EVSE migration (missing components & properties)
- unsafe rollback path

# Solution

- Fixed the EVCS ↔ EVSE migration logic in SwitchArchitecture
- Ensured atomic and consistent architecture switching
- Corrected lifecycle order:
  - scheduler/controller dependencies are updated before configuration removal
- Ensured all required EVSE components are created:
  - EVSE ChargePoint
  - EVSE Single Controller
  - EVSE Cluster Controller
  - Vehicle App instance
- Initialized required EVSE properties (e.g. wiring)
- Extracted migration logic into a static, testable method
- Added unit test reproducing the previous failure and validating the fix

**Question**: Why does SwitchArchitecture line 658 explicitly set wiring = "THREE_PHASE" when EvseProps.wiring() already has .setDefaultValue(Wiring.THREE_PHASE)?

**Answer**: The default value in EvseProps is only used when creating components through the normal app installation flow, not during migration.

Fixed "[object Object]" error messages appearing in snackbars when errors occur during app operations. Implemented proper error message extraction from various error object structures.

Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Co-committed-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
- Replace the **MODE** with **isRunning** logic for more convenience
- When Controller during running would be set to **IsRunning** **false** it immediately stops and returns to **IDLE** state. (_This can be used as cancel/stop button_)

Fixed errors:

- Reset SOH_PERCENT and SOH_RAW_DEBUG by starting new cycle
- show error logs if power details are not available

Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
Co-committed-by: Alex Belke <233420507+alexbelkedev@users.noreply.github.com>
- rm runtime warnings
- refactor component class names and selectors to avoid

Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
- Use `MaximumGridFeedInLimit` from `_meta`; required for Industrial
1. Fix hostnames
Adhere to [RFC1035](https://datatracker.ietf.org/doc/html/rfc1035)

2. Update default config

Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
Co-committed-by: Kai Jeschek <99220919+da-Kai@users.noreply.github.com>
- fixes rerouting after refresh for users which are not authenticating per oauth

Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
- adding new icons for Offline status, Time of use "dynamischer Stromtarif"

Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Hanna Späth <198875998+HaSp97@users.noreply.github.com>
Reviewed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Anas Shetla <141644226+AnasShetla@users.noreply.github.com>
Co-committed-by: Anas Shetla <141644226+AnasShetla@users.noreply.github.com>
DELAY_DISCHARGE mode stops discharging the battery, but allows charging. (i.e. ESS::DcDischargePower <= 0);
unless peak-shaving to "gridSoftLimit" is required, then it also allows discharging.

For Energy Scheduler v2: Switching from DELAY_DISCHARGE to charging (with BALANCING) did not work properly for hybrid systems.
- enabled getCurrentLanguage for doc links mapping and update offline firewall description link
- enable german and english docs pages

Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Victor Nagy <11665068+v-nagy@users.noreply.github.com>
Co-committed-by: Victor Nagy <11665068+v-nagy@users.noreply.github.com>
- Use Next Available Id to avoid exceptions with existing components

Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Co-authored-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Reviewed-by: Leon Blenk <168936274+LaBlanko@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
Co-committed-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
- added P30 to EVSE Configuration of App.Evcs.Keba
- added P30 Components to SwitchArchitecture and removed only P40 check from canSwitch

Co-authored-by: Sebastian Asen <47855186+sebastianasen@users.noreply.github.com>
Reviewed-by: Michael Grill <59126309+michaelgrill@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
Co-committed-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
- Improving Scheduler for EVSE, adding option for monthly tasks
- includes `Controller.Evse.Single` ui-implementation for js calendar
- adds `monthly` to `Controller.Evse.Single` (also daily available)

Co-authored-by: Andreas Mur <102706922+Andreas Mur@users.noreply.github.com>
Reviewed-by: Fabian Brandtner <10850256+fabian94533@users.noreply.github.com>
Reviewed-by: Andreas Mur <102706922+DerMuaaa@users.noreply.github.com>
Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
Co-committed-by: Lukas Rieger <73471197+lukasrgr@users.noreply.github.com>
- Readded line to delete second evcs

Reviewed-by: Stefan Feilmeier <3515268+sfeilmeier@users.noreply.github.com>
Co-authored-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
Co-committed-by: Johann Kaufmann <165755282+johannk24@users.noreply.github.com>
@codecov
Copy link

codecov bot commented Feb 17, 2026

Codecov Report

❌ Patch coverage is 78.31325% with 432 lines in your changes missing coverage. Please review.

Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #3568      +/-   ##
=============================================
- Coverage      59.41%   58.59%   -0.81%     
  Complexity       105      105              
=============================================
  Files           3069     3091      +22     
  Lines         133076   134005     +929     
  Branches        9815     9882      +67     
=============================================
- Hits           79049    78508     -541     
- Misses         51045    52590    +1545     
+ Partials        2982     2907      -75     
🚀 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 sfeilmeier merged commit a1f49e9 into develop Feb 18, 2026
5 of 7 checks passed
@sfeilmeier sfeilmeier deleted the feature/fems-backports branch February 18, 2026 20:13
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

Comments