diff --git a/assets/js/components/Energyflow/Energyflow.stories.js b/assets/js/components/Energyflow/Energyflow.stories.js
index ed0fb9b9a..84b977b64 100644
--- a/assets/js/components/Energyflow/Energyflow.stories.js
+++ b/assets/js/components/Energyflow/Energyflow.stories.js
@@ -5,8 +5,9 @@ export default {
title: "Main/Energyflow",
component: Energyflow,
argTypes: {
- gridPower: { control: { type: "range", min: -5000, max: 20000, step: 100 } },
pvPower: { control: { type: "range", min: 0, max: 10000, step: 100 } },
+ gridPower: { control: { type: "range", min: -5000, max: 20000, step: 100 } },
+ homePower: { control: { type: "range", min: 0, max: 30000, step: 100 } },
loadpointsPower: { control: { type: "range", min: 0, max: 20000, step: 100 } },
activeLoadpointsCount: { control: { type: "range", min: 0, max: 5, step: 1 } },
batteryPower: { control: { type: "range", min: -4000, max: 4000, step: 100 } },
@@ -25,8 +26,9 @@ export const GridAndPV = Template.bind({});
GridAndPV.args = {
gridConfigured: true,
pvConfigured: true,
+ pvPower: 7300,
gridPower: -2300,
- pvPower: 7320,
+ homePower: 800,
loadpointsPower: 4200,
activeLoadpointsCount: 3,
batteryConfigured: false,
@@ -38,8 +40,9 @@ BatteryAndGrid.args = {
gridConfigured: true,
pvConfigured: true,
batteryConfigured: true,
- gridPower: 1200,
pvPower: 0,
+ gridPower: 1200,
+ homePower: 2000,
batteryPower: 800,
batterySoC: 77,
siteTitle: "Home",
@@ -50,8 +53,9 @@ BatteryCharging.args = {
gridConfigured: true,
pvConfigured: true,
batteryConfigured: true,
- gridPower: -1300,
pvPower: 5000,
+ gridPower: -1300,
+ homePower: 800,
loadpointsPower: 1400,
activeLoadpointsCount: 1,
batteryPower: -1500,
@@ -59,13 +63,14 @@ BatteryCharging.args = {
siteTitle: "Home",
};
-export const GridPvAndBattery = Template.bind({});
-GridPvAndBattery.args = {
+export const GridPVAndBattery = Template.bind({});
+GridPVAndBattery.args = {
gridConfigured: true,
pvConfigured: true,
batteryConfigured: true,
- gridPower: 700,
pvPower: 1000,
+ gridPower: 700,
+ homePower: 3300,
batteryPower: 1500,
batterySoC: 30,
siteTitle: "Home",
@@ -77,24 +82,25 @@ BatteryThresholds.args = {
pvConfigured: true,
batteryConfigured: true,
activeLoadpointsCount: 1,
- loadpointsPower: 7523,
- gridPower: -510,
- pvPower: 8740,
- batteryPower: -100,
+ pvPower: 8700,
+ gridPower: -500,
+ loadpointsPower: 7500,
+ batteryPower: -700,
batterySoC: 95,
siteTitle: "Home",
};
-export const PvThresholds = Template.bind({});
-PvThresholds.args = {
+export const PVThresholds = Template.bind({});
+PVThresholds.args = {
gridConfigured: true,
pvConfigured: true,
batteryConfigured: true,
activeLoadpointsCount: 2,
- loadpointsPower: 5621,
- batteryPower: 800,
- gridPower: 5555,
pvPower: 300,
+ gridPower: 5500,
+ homePower: 1000,
+ loadpointsPower: 5600,
+ batteryPower: 800,
batterySoC: 76,
siteTitle: "Home",
};
@@ -104,10 +110,11 @@ GridOnly.args = {
gridConfigured: true,
pvConfigured: false,
batteryConfigured: false,
- gridPower: -6230,
activeLoadpointsCount: 1,
- loadpointsPower: 4200,
pvPower: 0,
+ gridPower: -6200,
+ homePower: 1000,
+ loadpointsPower: 4200,
batteryPower: 0,
batterySoC: 0,
siteTitle: "Home",
@@ -118,9 +125,10 @@ LowEnergy.args = {
gridConfigured: true,
pvConfigured: true,
batteryConfigured: true,
- gridPower: -352,
- pvPower: 710,
- batteryPower: 86,
+ pvPower: 700,
+ gridPower: -300,
+ homePower: 300,
+ batteryPower: -100,
batterySoC: 55,
siteTitle: "Home",
};
diff --git a/assets/js/components/Energyflow/Energyflow.vue b/assets/js/components/Energyflow/Energyflow.vue
index 28b6efe63..954f7b2fe 100644
--- a/assets/js/components/Energyflow/Energyflow.vue
+++ b/assets/js/components/Energyflow/Energyflow.vue
@@ -25,7 +25,7 @@
:batteryCharge="batteryCharge"
:batteryDischarge="batteryDischarge"
:pvProduction="pvProduction"
- :houseConsumption="houseConsumption"
+ :homePower="homePower"
:batterySoC="batterySoC"
:valuesInKw="valuesInKw"
/>
@@ -43,9 +43,9 @@
{{
- $t("main.energyflow.houseConsumption")
+ $t("main.energyflow.homePower")
}}
- {{ kw(houseConsumption) }}
+ {{ kw(homePower) }}
@@ -139,6 +139,7 @@ export default {
props: {
gridConfigured: Boolean,
gridPower: { type: Number, default: 0 },
+ homePower: { type: Number, default: 0 },
pvConfigured: Boolean,
pvPower: { type: Number, default: 0 },
loadpointsPower: { type: Number, default: 0 },
@@ -174,12 +175,6 @@ export default {
batteryCharge: function () {
return Math.min(0, this.batteryPowerAdjusted) * -1;
},
- houseConsumption: function () {
- return Math.max(
- 0,
- this.gridImport + this.pvConsumption + this.batteryDischarge - this.loadpointsPower
- );
- },
selfConsumption: function () {
return Math.max(0, this.batteryDischarge + this.pvConsumption + this.batteryCharge);
},
diff --git a/assets/js/components/Energyflow/Visualization.vue b/assets/js/components/Energyflow/Visualization.vue
index da2350a3e..2efa8a166 100644
--- a/assets/js/components/Energyflow/Visualization.vue
+++ b/assets/js/components/Energyflow/Visualization.vue
@@ -53,7 +53,7 @@
-
+
@@ -89,7 +89,7 @@ export default {
batteryCharge: { type: Number, default: 0 },
batteryDischarge: { type: Number, default: 0 },
pvProduction: { type: Number, default: 0 },
- houseConsumption: { type: Number, default: 0 },
+ homePower: { type: Number, default: 0 },
batterySoC: { type: Number, default: 0 },
valuesInKw: { type: Boolean, default: false },
},
@@ -180,7 +180,7 @@ export default {
isLabel(position, name, last) {
const labels = {
top: ["pvProduction", "batteryDischarge", "gridImport"],
- bottom: ["houseConsumption", "loadpoints", "batteryCharge", "gridExport"],
+ bottom: ["homePower", "loadpoints", "batteryCharge", "gridExport"],
};
const entries = [...labels[position]];
if (last) {
diff --git a/assets/js/components/Site.vue b/assets/js/components/Site.vue
index 4d400def8..e39679f86 100644
--- a/assets/js/components/Site.vue
+++ b/assets/js/components/Site.vue
@@ -33,6 +33,7 @@ export default {
// details
gridConfigured: Boolean,
gridPower: Number,
+ homePower: Number,
pvConfigured: Boolean,
pvPower: Number,
batteryConfigured: Boolean,
diff --git a/assets/js/i18n/de.js b/assets/js/i18n/de.js
index 8fbbe62d3..fc2d091cb 100644
--- a/assets/js/i18n/de.js
+++ b/assets/js/i18n/de.js
@@ -31,7 +31,7 @@ export default {
main: {
energyflow: {
noEnergy: "Kein Energiefluss",
- houseConsumption: "Verbrauch",
+ homePower: "Verbrauch",
pvProduction: "Erzeugung",
loadpoints: "Ladepunkt | Ladepunkt | {count} Ladepunkte",
battery: "Batterie",
diff --git a/assets/js/i18n/en.js b/assets/js/i18n/en.js
index ee2d6dde5..ff41d089d 100644
--- a/assets/js/i18n/en.js
+++ b/assets/js/i18n/en.js
@@ -31,7 +31,7 @@ export default {
main: {
energyflow: {
noEnergy: "No Energyflow",
- houseConsumption: "Consumption",
+ homePower: "Consumption",
loadpoints: "Loadpoint | Loadpoint | {count} Loadpoints",
pvProduction: "Production",
battery: "Battery",
diff --git a/assets/js/i18n/it.js b/assets/js/i18n/it.js
index e7717c278..c15e90576 100644
--- a/assets/js/i18n/it.js
+++ b/assets/js/i18n/it.js
@@ -31,7 +31,7 @@ export default {
main: {
energyflow: {
noEnergy: "No Energyflow",
- houseConsumption: "Consumption",
+ homePower: "Consumption",
pvProduction: "Produzione",
battery: "Batteria",
batteryCharge: "Battery charge",
diff --git a/core/site.go b/core/site.go
index db02184ea..fd243961d 100644
--- a/core/site.go
+++ b/core/site.go
@@ -389,6 +389,14 @@ func (site *Site) update(lp Updater) {
if sitePower, err := site.sitePower(); err == nil {
lp.Update(sitePower, cheap, site.batteryBuffered)
+
+ homePower := site.gridPower + site.pvPower + site.batteryPower
+ for _, lp := range site.loadpoints {
+ homePower -= lp.GetChargePower()
+ }
+ homePower = math.Max(homePower, 0)
+ site.publish("homePower", homePower)
+
site.Health.Update()
}
}
diff --git a/dist/css/index.401ef0ac.css b/dist/css/index.5a58646e.css
similarity index 87%
rename from dist/css/index.401ef0ac.css
rename to dist/css/index.5a58646e.css
index dbc5615a8..a1431f169 100644
--- a/dist/css/index.401ef0ac.css
+++ b/dist/css/index.5a58646e.css
@@ -1 +1 @@
-:root{--evcc-green:#66d85a;--evcc-dark-green:#3aba2c;--evcc-yellow:#ffe000;--evcc-grid:var(--bs-gray-dark);--evcc-self:var(--evcc-dark-green);--evcc-export:var(--evcc-yellow);--bs-primary:var(--evcc-dark-green);--bs-primary-rgb:58,186,44}.bg-primary{background-color:var(--evcc-dark-green)!important}a{color:var(--evcc-dark-green)}.progress-bar-animated{animation-direction:reverse}.bg-muted{opacity:.25}.btn-primary{background-color:var(--bs-gray-dark);border-color:var(--bs-gray-dark)}.btn-primary:hover{background-color:var(--evcc-dark-green);border-color:var(--evcc-dark-green)}.icon[data-v-785de62e]{color:#0fdd42}.icon[data-v-1eecc7b7]{color:#0fdd42;display:inline-block}.sponsor-button[data-v-1eecc7b7]{touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.support-button .solid[data-v-1eecc7b7]{display:none}.support-button:hover .solid[data-v-1eecc7b7]{display:inline-block}.support-button:hover .outline[data-v-1eecc7b7]{display:none}.logo[data-v-7f4d7df3]{width:85px}.app[data-v-7f4d7df3]{min-height:100vh}.title[data-v-7f4d7df3]{position:relative;top:.1rem}.battery[data-v-2dcca16c]{transform:translateX(.35rem) rotate(-90deg);transition-property:transform;transition-duration:.25s;transition-timing-function:ease}.power--in .battery[data-v-2dcca16c]{transform:translateX(.7rem) rotate(-90deg)}.power--out .battery[data-v-2dcca16c]{transform:translateX(0) rotate(-90deg)}.arrow[data-v-2dcca16c]{margin-left:-.2rem;opacity:0;transform:translateX(-.5rem);transition-property:opacity,transform;transition-duration:.25s;transition-timing-function:ease}.power--in .arrow[data-v-2dcca16c]{opacity:1;transform:translateX(-1rem) scaleX(1)}.power--out .arrow[data-v-2dcca16c]{opacity:1;transform:translateX(0) scaleX(1)}.grid[data-v-c8e84f48]{transform:translateX(.35rem);transition-property:transform;transition-duration:.25s;transition-timing-function:ease}.power-export .grid[data-v-c8e84f48]{transform:translateX(.9rem)}.power-import .grid[data-v-c8e84f48]{transform:translateX(-.1rem)}.arrow[data-v-c8e84f48]{margin-left:-.2rem;opacity:0;transform:translateX(-.5rem);transition-property:opacity,transform;transition-duration:.25s;transition-timing-function:ease}.power-export .arrow[data-v-c8e84f48]{opacity:1;transform:translateX(-.9rem) scaleX(1)}.power-import .arrow[data-v-c8e84f48]{opacity:1;transform:translateX(.1em) scaleX(1)}.label-bar[data-v-17da7e54]{width:0;margin:0;height:1.7rem;padding:.6rem 0;opacity:1;overflow:hidden}.label-bar-scale--hidden[data-v-17da7e54]{opacity:0}.label-bar-scale[data-v-17da7e54]{border:1px solid var(--bs-gray);height:.5rem;background:none;display:flex;justify-content:center;align-items:center;white-space:nowrap;border-radius:0;transition:border-radius .5s linear}.label-bar--top .label-bar-scale[data-v-17da7e54]{border-bottom:none}.label-bar--bottom .label-bar-scale[data-v-17da7e54]{border-top:none}.label-bar--top.label-bar--first .label-bar-scale[data-v-17da7e54]{border-top-left-radius:4px}.label-bar--top.label-bar--last .label-bar-scale[data-v-17da7e54]{border-top-right-radius:4px}.label-bar--bottom.label-bar--first .label-bar-scale[data-v-17da7e54]{border-bottom-left-radius:4px}.label-bar--bottom.label-bar--last .label-bar-scale[data-v-17da7e54]{border-bottom-right-radius:4px}.label-bar:not(.label-bar--first) .label-bar-scale[data-v-17da7e54]{border-left:none}.label-bar-icon[data-v-17da7e54]{background-color:#fff;color:var(--bs-gray);padding:0 .3rem;opacity:1}.label-bar--top .label-bar-icon[data-v-17da7e54]{margin-top:-6px}.label-bar--bottom .label-bar-icon[data-v-17da7e54]{margin-top:6px}.label-bar--hidden[data-v-17da7e54],.label-bar--hide-icon .label-bar-icon[data-v-17da7e54]{opacity:0}.site-progress[data-v-340f04c6]{--height:38px;height:var(--height);margin:.25rem 0;border-radius:5px;display:flex;overflow:hidden}.site-progress-bar[data-v-340f04c6]{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative;width:0}.visualization--ready .site-progress-bar[data-v-340f04c6]{transition-property:width;transition-duration:.5s;transition-timing-function:linear}.grid-import[data-v-340f04c6]{background-color:var(--evcc-grid);color:var(--bs-white)}.self-consumption[data-v-340f04c6]{background-color:var(--evcc-self);color:var(--bs-white)}.pv-export[data-v-340f04c6]{background-color:var(--evcc-export);color:var(--bs-dark)}.power[data-v-340f04c6]{display:block;margin:0 .2rem;white-space:nowrap;overflow:hidden}.visualization--ready[data-v-340f04c6] .label-bar{transition-property:width,opacity;transition-duration:.5s,.25s;transition-timing-function:linear,ease}.visualization--ready[data-v-340f04c6] .label-bar-icon{transition:opacity .25s ease-in}.energyflow[data-v-d9a8a664]{cursor:pointer}.color-grid[data-v-d9a8a664]{color:var(--evcc-grid)}.color-self[data-v-d9a8a664]{color:var(--evcc-self)}.color-export[data-v-d9a8a664]{color:var(--evcc-export)}.details-icon[data-v-d9a8a664]{text-align:center;width:30px;margin-right:.25rem;white-space:nowrap;flex-shrink:0}.btn[data-v-1ff39d22]{flex-basis:0;white-space:nowrap}.vehicle-soc[data-v-16a38d1a]{--height:38px;--thumb-overlap:3px;--thumb-width:3px;--thumb-horizontal-padding:15px;--label-height:26px;position:relative;height:var(--height)}.progress[data-v-16a38d1a]{height:100%;font-size:1rem}.progress-bar.bg-muted[data-v-16a38d1a]{color:var(--white)}.bg-light[data-v-16a38d1a]{color:var(--bs-gray-dark)}.target-label[data-v-16a38d1a]{width:3em;margin-left:-1.5em;height:var(--label-height);position:absolute;top:calc(var(--label-height)*-1 + var(--thumb-overlap)*-1);text-align:center;color:var(--bs-gray-dark);font-size:1rem;opacity:1;transition:opacity .2s ease 1s}.target-slider[data-v-16a38d1a]{-webkit-appearance:none;position:absolute;top:calc(var(--thumb-overlap)*-1);left:calc(var(--thumb-horizontal-padding)*-1);height:calc(100% + var(--thumb-overlap)*2);width:calc(100% + var(--thumb-horizontal-padding)*2);background:transparent}.target-slider[data-v-16a38d1a]:focus{outline:none}.target-slider[data-v-16a38d1a]::-webkit-slider-runnable-track{position:relative;background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-16a38d1a]::-moz-range-track{background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-16a38d1a]::-webkit-slider-thumb{-webkit-appearance:none;position:relative;top:calc(var(--label-height)*-1);height:100%;width:var(--thumb-width);padding:var(--label-height) var(--thumb-horizontal-padding) 0;box-sizing:content-box;background-clip:content-box;background-color:var(--bs-gray-dark);cursor:-webkit-grab;cursor:grab;border:none;opacity:1;-webkit-transition:opacity .2s ease 1s;transition:opacity .2s ease 1s;box-shadow:none}.target-slider[data-v-16a38d1a]::-moz-range-thumb{position:relative;top:calc(var(--label-height)*-1);height:100%;width:var(--thumb-width);padding:0 var(--thumb-horizontal-padding) 0;box-sizing:content-box;background-clip:content-box;background-color:var(--bs-gray-dark);cursor:grab;border:none;opacity:1;-moz-transition:opacity .5s ease 1s;transition:opacity .5s ease 1s}.target--slider-hidden .target-label[data-v-16a38d1a],.target--slider-hidden .target-slider[data-v-16a38d1a]::-webkit-slider-thumb{opacity:0}.target--slider-hidden .target-label[data-v-16a38d1a],.target--slider-hidden .target-slider[data-v-16a38d1a]::-moz-range-thumb{opacity:0}.target:hover .target-label[data-v-16a38d1a],.target:hover .target-slider[data-v-16a38d1a]::-webkit-slider-thumb{opacity:1;transition-delay:0s}.target:hover .target-label[data-v-16a38d1a],.target:hover .target-slider[data-v-16a38d1a]::-moz-range-thumb{opacity:1;transition-delay:0s}
\ No newline at end of file
+:root{--evcc-green:#66d85a;--evcc-dark-green:#3aba2c;--evcc-yellow:#ffe000;--evcc-grid:var(--bs-gray-dark);--evcc-self:var(--evcc-dark-green);--evcc-export:var(--evcc-yellow);--bs-primary:var(--evcc-dark-green);--bs-primary-rgb:58,186,44}.bg-primary{background-color:var(--evcc-dark-green)!important}a{color:var(--evcc-dark-green)}.progress-bar-animated{animation-direction:reverse}.bg-muted{opacity:.25}.btn-primary{background-color:var(--bs-gray-dark);border-color:var(--bs-gray-dark)}.btn-primary:hover{background-color:var(--evcc-dark-green);border-color:var(--evcc-dark-green)}.icon[data-v-785de62e]{color:#0fdd42}.icon[data-v-1eecc7b7]{color:#0fdd42;display:inline-block}.sponsor-button[data-v-1eecc7b7]{touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.support-button .solid[data-v-1eecc7b7]{display:none}.support-button:hover .solid[data-v-1eecc7b7]{display:inline-block}.support-button:hover .outline[data-v-1eecc7b7]{display:none}.logo[data-v-7f4d7df3]{width:85px}.app[data-v-7f4d7df3]{min-height:100vh}.title[data-v-7f4d7df3]{position:relative;top:.1rem}.battery[data-v-2dcca16c]{transform:translateX(.35rem) rotate(-90deg);transition-property:transform;transition-duration:.25s;transition-timing-function:ease}.power--in .battery[data-v-2dcca16c]{transform:translateX(.7rem) rotate(-90deg)}.power--out .battery[data-v-2dcca16c]{transform:translateX(0) rotate(-90deg)}.arrow[data-v-2dcca16c]{margin-left:-.2rem;opacity:0;transform:translateX(-.5rem);transition-property:opacity,transform;transition-duration:.25s;transition-timing-function:ease}.power--in .arrow[data-v-2dcca16c]{opacity:1;transform:translateX(-1rem) scaleX(1)}.power--out .arrow[data-v-2dcca16c]{opacity:1;transform:translateX(0) scaleX(1)}.grid[data-v-c8e84f48]{transform:translateX(.35rem);transition-property:transform;transition-duration:.25s;transition-timing-function:ease}.power-export .grid[data-v-c8e84f48]{transform:translateX(.9rem)}.power-import .grid[data-v-c8e84f48]{transform:translateX(-.1rem)}.arrow[data-v-c8e84f48]{margin-left:-.2rem;opacity:0;transform:translateX(-.5rem);transition-property:opacity,transform;transition-duration:.25s;transition-timing-function:ease}.power-export .arrow[data-v-c8e84f48]{opacity:1;transform:translateX(-.9rem) scaleX(1)}.power-import .arrow[data-v-c8e84f48]{opacity:1;transform:translateX(.1em) scaleX(1)}.label-bar[data-v-17da7e54]{width:0;margin:0;height:1.7rem;padding:.6rem 0;opacity:1;overflow:hidden}.label-bar-scale--hidden[data-v-17da7e54]{opacity:0}.label-bar-scale[data-v-17da7e54]{border:1px solid var(--bs-gray);height:.5rem;background:none;display:flex;justify-content:center;align-items:center;white-space:nowrap;border-radius:0;transition:border-radius .5s linear}.label-bar--top .label-bar-scale[data-v-17da7e54]{border-bottom:none}.label-bar--bottom .label-bar-scale[data-v-17da7e54]{border-top:none}.label-bar--top.label-bar--first .label-bar-scale[data-v-17da7e54]{border-top-left-radius:4px}.label-bar--top.label-bar--last .label-bar-scale[data-v-17da7e54]{border-top-right-radius:4px}.label-bar--bottom.label-bar--first .label-bar-scale[data-v-17da7e54]{border-bottom-left-radius:4px}.label-bar--bottom.label-bar--last .label-bar-scale[data-v-17da7e54]{border-bottom-right-radius:4px}.label-bar:not(.label-bar--first) .label-bar-scale[data-v-17da7e54]{border-left:none}.label-bar-icon[data-v-17da7e54]{background-color:#fff;color:var(--bs-gray);padding:0 .3rem;opacity:1}.label-bar--top .label-bar-icon[data-v-17da7e54]{margin-top:-6px}.label-bar--bottom .label-bar-icon[data-v-17da7e54]{margin-top:6px}.label-bar--hidden[data-v-17da7e54],.label-bar--hide-icon .label-bar-icon[data-v-17da7e54]{opacity:0}.site-progress[data-v-4cea1228]{--height:38px;height:var(--height);margin:.25rem 0;border-radius:5px;display:flex;overflow:hidden}.site-progress-bar[data-v-4cea1228]{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative;width:0}.visualization--ready .site-progress-bar[data-v-4cea1228]{transition-property:width;transition-duration:.5s;transition-timing-function:linear}.grid-import[data-v-4cea1228]{background-color:var(--evcc-grid);color:var(--bs-white)}.self-consumption[data-v-4cea1228]{background-color:var(--evcc-self);color:var(--bs-white)}.pv-export[data-v-4cea1228]{background-color:var(--evcc-export);color:var(--bs-dark)}.power[data-v-4cea1228]{display:block;margin:0 .2rem;white-space:nowrap;overflow:hidden}.visualization--ready[data-v-4cea1228] .label-bar{transition-property:width,opacity;transition-duration:.5s,.25s;transition-timing-function:linear,ease}.visualization--ready[data-v-4cea1228] .label-bar-icon{transition:opacity .25s ease-in}.energyflow[data-v-47b5e1ea]{cursor:pointer}.color-grid[data-v-47b5e1ea]{color:var(--evcc-grid)}.color-self[data-v-47b5e1ea]{color:var(--evcc-self)}.color-export[data-v-47b5e1ea]{color:var(--evcc-export)}.details-icon[data-v-47b5e1ea]{text-align:center;width:30px;margin-right:.25rem;white-space:nowrap;flex-shrink:0}.btn[data-v-1ff39d22]{flex-basis:0;white-space:nowrap}.vehicle-soc[data-v-16a38d1a]{--height:38px;--thumb-overlap:3px;--thumb-width:3px;--thumb-horizontal-padding:15px;--label-height:26px;position:relative;height:var(--height)}.progress[data-v-16a38d1a]{height:100%;font-size:1rem}.progress-bar.bg-muted[data-v-16a38d1a]{color:var(--white)}.bg-light[data-v-16a38d1a]{color:var(--bs-gray-dark)}.target-label[data-v-16a38d1a]{width:3em;margin-left:-1.5em;height:var(--label-height);position:absolute;top:calc(var(--label-height)*-1 + var(--thumb-overlap)*-1);text-align:center;color:var(--bs-gray-dark);font-size:1rem;opacity:1;transition:opacity .2s ease 1s}.target-slider[data-v-16a38d1a]{-webkit-appearance:none;position:absolute;top:calc(var(--thumb-overlap)*-1);left:calc(var(--thumb-horizontal-padding)*-1);height:calc(100% + var(--thumb-overlap)*2);width:calc(100% + var(--thumb-horizontal-padding)*2);background:transparent}.target-slider[data-v-16a38d1a]:focus{outline:none}.target-slider[data-v-16a38d1a]::-webkit-slider-runnable-track{position:relative;background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-16a38d1a]::-moz-range-track{background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-16a38d1a]::-webkit-slider-thumb{-webkit-appearance:none;position:relative;top:calc(var(--label-height)*-1);height:100%;width:var(--thumb-width);padding:var(--label-height) var(--thumb-horizontal-padding) 0;box-sizing:content-box;background-clip:content-box;background-color:var(--bs-gray-dark);cursor:-webkit-grab;cursor:grab;border:none;opacity:1;-webkit-transition:opacity .2s ease 1s;transition:opacity .2s ease 1s;box-shadow:none}.target-slider[data-v-16a38d1a]::-moz-range-thumb{position:relative;top:calc(var(--label-height)*-1);height:100%;width:var(--thumb-width);padding:0 var(--thumb-horizontal-padding) 0;box-sizing:content-box;background-clip:content-box;background-color:var(--bs-gray-dark);cursor:grab;border:none;opacity:1;-moz-transition:opacity .5s ease 1s;transition:opacity .5s ease 1s}.target--slider-hidden .target-label[data-v-16a38d1a],.target--slider-hidden .target-slider[data-v-16a38d1a]::-webkit-slider-thumb{opacity:0}.target--slider-hidden .target-label[data-v-16a38d1a],.target--slider-hidden .target-slider[data-v-16a38d1a]::-moz-range-thumb{opacity:0}.target:hover .target-label[data-v-16a38d1a],.target:hover .target-slider[data-v-16a38d1a]::-webkit-slider-thumb{opacity:1;transition-delay:0s}.target:hover .target-label[data-v-16a38d1a],.target:hover .target-slider[data-v-16a38d1a]::-moz-range-thumb{opacity:1;transition-delay:0s}
\ No newline at end of file
diff --git a/dist/index.html b/dist/index.html
index 076784d7c..ca6808516 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -1,4 +1,4 @@
-evcc
\ No newline at end of file
+ };