Repository navigation
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #4050 +/- ##
=============================================
+ Coverage 55.46% 55.51% +0.05%
- Complexity 19909 19913 +4
=============================================
Files 3931 3932 +1
Lines 180769 181070 +301
Branches 15078 15157 +79
=============================================
+ Hits 100253 100495 +242
- Misses 76541 76580 +39
- Partials 3975 3995 +20 🚀 New features to boost your workflow:
|
JonasE99
force-pushed
the
feature/ui-energyflow-monitor
branch
from
October 13, 2026 20:18
bc390b9 to
c2a6830
Compare
Sn0w3y
reviewed
Oct 13, 2026
| } | ||
|
|
||
| /** Estimated time until the storage is full (charging) or empty (discharging) */ | ||
| private calculateStorageEstimate(capacity: number | null): string | null { |
Collaborator
Contributor
Author
There was a problem hiding this comment.
Good point, thanks! The full/empty estimate now uses the predicted SoC from the energy schedule instead of the linear extrapolation.
Sn0w3y
reviewed
Oct 13, 2026
Sn0w3y
left a comment
Collaborator
There was a problem hiding this comment.
just wanted to note one thing :)
Sn0w3y
reviewed
Oct 13, 2026
Collaborator
Contributor
Author
There was a problem hiding this comment.
Thanks, you’re right. I removed the PV forecast box from this PR to keep it focused on the energy flow.
…V forecast box Addresses review feedback: the full/empty time now comes from the predicted state of charge of the energy schedule instead of a linear extrapolation, and the PV forecast box is removed because the forecast is already shown in the new UI.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


This replaces the ring-shaped energy monitor in the live view (new navigation only) with a node-based energy flow view.
I found the ring hard to read when several flows happen at the same time, e.g. PV charging the battery and feeding into the grid. I also wanted to see consumers and today's grid cost directly on the start page.
What's in it:
_energyschedule.A few implementation notes:
GridBuyActiveEnergyand split it over the quarter hours according to the average grid buy power (queryHistoricTimeseriesData, 15 min). Each share is then multiplied by theGridBuyPriceof that quarter hour. I first triedqueryHistoricTimeseriesEnergyPerPeriod, but the backend I tested against returned one value per day for a 15-minute resolution.fromis exactly 00:00, otherwise two days. The schedule is requested from 12:00 today, so that the SoC prediction also covers tomorrow.ionicons/iconsinstead of<ion-icon>in aforeignObject, because Safari on iOS placed them in the wrong position.--oe-energyflow-*. Neutral backgrounds usecolor-mix()on--ion-text-color, because the default theme's dark mode doesn't set--ion-text-color-rgb.It also fixes two small issues in the old ring monitor, which is still used without the new navigation. The grid price overlapped the grid icon, and the ring could be taller than the visible area.
Tested on my own FEMS system (dynamic tariff, one EVCS, three consumption meters) in Chrome and iOS Safari, in light and dark mode. Unit tests for the component are included. Lint, the full UI test suite and the production build pass.
The consumer category is currently guessed from the alias (e.g. "heat", "wärme"). If there's a better way to get the device type for generic meters, I'd be glad for a hint.