-
- {{ title || "Ladepunkt" }}
-
-
-
-
-
-
-
+
{{ title || "Ladepunkt" }}
+
+ {{ remoteDisabledSource }}: Adaptives PV-Laden deaktiviert
-
-
-
-
-
-
-
-
-
+
+ {{ remoteDisabledSource }}: Deaktiviert
-
-
-
-
- {{ title || "Ladepunkt" }}
-
-
-
-
- {{ remoteDisabledSource }}: Adaptives PV-Laden deaktiviert
-
-
- {{ remoteDisabledSource }}: Deaktiviert
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
diff --git a/assets/js/components/Site.stories.js b/assets/js/components/Site.stories.js
index 6aae9511d..97274484b 100644
--- a/assets/js/components/Site.stories.js
+++ b/assets/js/components/Site.stories.js
@@ -36,7 +36,19 @@ Single.args = {
loadpoints: [
{
title: "Ladepunkt 1",
- socLevels: [20, 50, 80, 100],
+ mode: "now",
+ socTitle: "Mein Auto",
+ enabled: true,
+ connected: true,
+ hasVehicle: true,
+ charging: true,
+ socCharge: 66,
+ targetSoC: 90,
+ range: 344,
+ chargeEstimate: 999,
+ chargePower: 11232,
+ chargeDuration: 123982,
+ chargedEnergy: 23213,
},
],
};
@@ -45,18 +57,31 @@ export const Multi = Template.bind({});
Multi.args = {
gridConfigured: true,
pvConfigured: true,
- gridPower: 100,
+ gridPower: -100,
pvPower: 100,
batteryConfigured: true,
batteryPower: 100,
- batterySoC: 0,
+ batterySoC: 60,
loadpoints: [
{
title: "Ladepunkt 1",
- socLevels: [20, 50, 80, 100],
+ mode: "now",
+ socTitle: "Mein Auto",
+ enabled: true,
+ connected: true,
+ hasVehicle: true,
+ charging: true,
+ socCharge: 66,
+ targetSoC: 90,
+ range: 344,
+ chargeEstimate: 999,
+ chargePower: 11232,
+ chargeDuration: 123982,
+ chargedEnergy: 23213,
},
{
title: "Ladepunkt 2",
+ mode: "pv",
},
],
};
diff --git a/assets/js/components/Site.vue b/assets/js/components/Site.vue
index 299f6ae34..aa593434e 100644
--- a/assets/js/components/Site.vue
+++ b/assets/js/components/Site.vue
@@ -1,32 +1,26 @@
-
-
-
+
+
+
{{ siteTitle || "Home" }}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
@@ -50,6 +44,8 @@ export default {
batteryConfigured: Boolean,
batteryPower: Number,
batterySoC: Number,
+ gridCurrents: Object,
+ prioritySoC: Number,
},
components: { SiteDetails, Loadpoint },
mixins: [formatter, collector],
@@ -57,10 +53,6 @@ export default {
details: function () {
return this.collectProps(SiteDetails);
},
- multi: function () {
- // TODO fix compact
- return this.loadpoints.length > 1 /* || app.compact*/;
- },
},
};
diff --git a/assets/js/components/SiteDetails.vue b/assets/js/components/SiteDetails.vue
index b9412423f..abe8839e4 100644
--- a/assets/js/components/SiteDetails.vue
+++ b/assets/js/components/SiteDetails.vue
@@ -1,18 +1,19 @@
-
-
+
+
Bezug
Einspeisung
-
+
{{ fmt(gridPower) }}
{{ fmtUnit(gridPower) }}W
-
+
-
+
+
Erzeugung
-
+
{{ fmt(pvPower) }}
{{ fmtUnit(pvPower) }}W
-
+
-
+
- Batterie
-
+
+ Akku / {{ batterySoC }} %
+
+
+ Batterie / {{ batterySoC }}%
+
+
-
+
{{ fmt(batteryPower) }}
{{ fmtUnit(batteryPower) }}W
- /
- {{ batterySoC }} %
-
+
@@ -74,6 +78,13 @@ export default {
},
mixins: [formatter],
computed: {
+ numberOfPanels: function () {
+ let count = 0;
+ if (this.gridConfigured) count++;
+ if (this.pvConfigured) count++;
+ if (this.batteryConfigured) count++;
+ return count;
+ },
batteryIcon: function () {
if (Math.abs(this.batteryPower) < limit) {
if (this.batterySoC < 30) return icons[0];
diff --git a/assets/js/components/Soc.stories.js b/assets/js/components/Soc.stories.js
deleted file mode 100644
index 9bd0633e6..000000000
--- a/assets/js/components/Soc.stories.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import Soc from "./Soc.vue";
-
-export default {
- title: "Main/Soc",
- component: Soc,
- argTypes: {},
-};
-
-const Template = (args, { argTypes }) => ({
- props: Object.keys(argTypes),
- components: { Soc },
- template: '
',
-});
-
-export const Base = Template.bind({});
-Base.args = {
- soc: 80,
- levels: [20, 50, 80, 100],
-};
-
-export const Caption = Template.bind({});
-Caption.args = {
- caption: true,
- soc: 80,
- levels: [20, 50, 80, 100],
-};
diff --git a/assets/js/components/Soc.vue b/assets/js/components/Soc.vue
deleted file mode 100644
index 240c3a8d0..000000000
--- a/assets/js/components/Soc.vue
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
- Ladeziel
-
-
- {{ level }}%
-
-
-
-
-
diff --git a/assets/js/components/Vehicle.stories.js b/assets/js/components/Vehicle.stories.js
index bfc19bcc7..ad71a6c45 100644
--- a/assets/js/components/Vehicle.stories.js
+++ b/assets/js/components/Vehicle.stories.js
@@ -30,6 +30,7 @@ Connected.args = {
hasVehicle: true,
charging: false,
socCharge: 66,
+ targetSoC: 90,
};
export const ReadyToCharge = Template.bind({});
@@ -40,6 +41,7 @@ ReadyToCharge.args = {
hasVehicle: true,
charging: false,
socCharge: 66,
+ targetSoC: 90,
};
export const Charging = Template.bind({});
@@ -50,6 +52,7 @@ Charging.args = {
hasVehicle: true,
charging: true,
socCharge: 66,
+ targetSoC: 90,
};
const hoursFromNow = function (hours) {
@@ -97,6 +100,7 @@ MinCharge.args = {
socCharge: 17,
minSoC: 20,
charging: true,
+ targetSoC: 90,
};
export const UnknownVehicleConnected = Template.bind({});
diff --git a/assets/js/components/Vehicle.vue b/assets/js/components/Vehicle.vue
index 85c8b30db..371d20922 100644
--- a/assets/js/components/Vehicle.vue
+++ b/assets/js/components/Vehicle.vue
@@ -1,189 +1,48 @@
-
+
{{ socTitle || "Fahrzeug" }}
-
-
-
- {{ socChargeDisplayValue }}
-
-
-
-
-
-
-
-
- {{ markerLabel() }}
-
+
+
-
diff --git a/assets/js/components/VehicleSoc.vue b/assets/js/components/VehicleSoc.vue
new file mode 100644
index 000000000..c79200d35
--- /dev/null
+++ b/assets/js/components/VehicleSoc.vue
@@ -0,0 +1,251 @@
+
+
+
+
+ {{ socChargeDisplayValue }}
+
+
+
+
+
+ {{ visibleTargetSoC }}%
+
+
+
+
+
+
+
+
diff --git a/assets/js/components/VehicleSubline.vue b/assets/js/components/VehicleSubline.vue
new file mode 100644
index 000000000..4f4cc913a
--- /dev/null
+++ b/assets/js/components/VehicleSubline.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+ Mindestladung bis {{ minSoC }}%
+
+
+
+ {{ targetTimeLabel() }}
+
+
+
+
+
+
diff --git a/assets/js/mixins/formatter.js b/assets/js/mixins/formatter.js
index 40c73ffcb..28af4c6aa 100644
--- a/assets/js/mixins/formatter.js
+++ b/assets/js/mixins/formatter.js
@@ -58,34 +58,23 @@ export default {
}
return "m";
},
+ fmtDayString: function (date) {
+ const YY = `${date.getFullYear()}`;
+ const MM = `${date.getMonth() + 1}`.padStart(2, "0");
+ const DD = `${date.getDate()}`.padStart(2, "0");
+ return `${YY}-${MM}-${DD}`;
+ },
+ fmtTimeString: function (date) {
+ const HH = `${date.getHours()}`.padStart(2, "0");
+ const mm = `${date.getMinutes()}`.padStart(2, "0");
+ return `${HH}:${mm}`;
+ },
fmtAbsoluteDate: function (date) {
- return new Intl.DateTimeFormat("de-DE", {
+ return new Intl.DateTimeFormat("default", {
weekday: "short",
hour: "numeric",
minute: "numeric",
}).format(date);
},
- fmtRelativeTime: function (date) {
- var units = {
- year: 24 * 60 * 60 * 1000 * 365,
- month: (24 * 60 * 60 * 1000 * 365) / 12,
- day: 24 * 60 * 60 * 1000,
- hour: 60 * 60 * 1000,
- minute: 60 * 1000,
- second: 1000,
- };
-
- var rtf = new Intl.RelativeTimeFormat("de", { numeric: "auto", style: "narrow" });
-
- var getRelativeTime = (d1, d2 = new Date()) => {
- var elapsed = d1 - d2;
-
- // "Math.abs" accounts for both "past" & "future" scenarios
- for (var u in units)
- if (Math.abs(elapsed) > units[u] || u == "second")
- return rtf.format(Math.round(elapsed / units[u]), u);
- };
- return getRelativeTime(date);
- },
},
};
diff --git a/assets/js/views/App.vue b/assets/js/views/App.vue
index e8b0efcdd..5d8fc48a6 100644
--- a/assets/js/views/App.vue
+++ b/assets/js/views/App.vue
@@ -1,6 +1,6 @@
-
-
+
diff --git a/core/loadpoint.go b/core/loadpoint.go
index 9d7def5ef..08b57e1d3 100644
--- a/core/loadpoint.go
+++ b/core/loadpoint.go
@@ -4,7 +4,6 @@ import (
"errors"
"fmt"
"math"
- "sort"
"strings"
"sync"
"time"
@@ -42,7 +41,6 @@ type PollConfig struct {
type SoCConfig struct {
Poll PollConfig `mapstructure:"poll"`
AlwaysUpdate bool `mapstructure:"alwaysUpdate"`
- Levels []int `mapstructure:"levels"`
Estimate bool `mapstructure:"estimate"`
Min int `mapstructure:"min"` // Default minimum SoC, guarded by mutex
Target int `mapstructure:"target"` // Default target SoC, guarded by mutex
@@ -135,8 +133,6 @@ func NewLoadPointFromConfig(log *util.Logger, cp configProvider, other map[strin
lp.Mode = api.ChargeModeString(string(lp.Mode))
lp.OnDisconnect.Mode = api.ChargeModeString(string(lp.OnDisconnect.Mode))
- sort.Ints(lp.SoC.Levels)
-
// set vehicle polling mode
switch lp.SoC.Poll.Mode = strings.ToLower(lp.SoC.Poll.Mode); lp.SoC.Poll.Mode {
case pollCharging:
@@ -167,10 +163,6 @@ func NewLoadPointFromConfig(log *util.Logger, cp configProvider, other map[strin
if lp.SoC.Target == 0 {
lp.SoC.Target = 100
}
-
- if len(lp.SoC.Levels) > 0 {
- lp.SoC.Target = lp.SoC.Levels[len(lp.SoC.Levels)-1]
- }
}
if lp.Meters.ChargeMeterRef != "" {
@@ -411,7 +403,6 @@ func (lp *LoadPoint) Prepare(uiChan chan<- util.Param, pushChan chan<- push.Even
lp.publish("mode", lp.Mode)
lp.publish("targetSoC", lp.SoC.Target)
lp.publish("minSoC", lp.SoC.Min)
- lp.publish("socLevels", lp.SoC.Levels)
lp.Unlock()
// use first vehicle for estimator
diff --git a/dist/css/index.3b453e73.css b/dist/css/index.3b453e73.css
deleted file mode 100644
index 7217bf9d8..000000000
--- a/dist/css/index.3b453e73.css
+++ /dev/null
@@ -1 +0,0 @@
-.progress-bar-animated{animation-direction:reverse}.btn.caption{opacity:1}.btn.first{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}.value,input[type=radio],label.btn{white-space:nowrap!important}.text-muted a,.text-muted a:hover{color:#6c757d!important;text-decoration:none}.bg-muted{opacity:.25}.fade-enter-active[data-v-a6ded36e],.fade-leave-active[data-v-a6ded36e]{transition:opacity .25s ease-in}.fade-enter[data-v-a6ded36e],.fade-leave-to[data-v-a6ded36e]{opacity:0}.dialog[data-v-a6ded36e]{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:hidden;outline:0}.icon[data-v-a6ded36e]{color:#0fdd42}.text-black a[data-v-a6ded36e]{color:#18191a}.icon[data-v-5f0f38d1]{color:#0fdd42}.text-black a[data-v-5f0f38d1]{color:#18191a}.logo[data-v-459f11b2]{width:85px}.app[data-v-459f11b2]{min-height:100vh}.subline[data-v-b9f97a64]{display:flex;align-items:center}.soc-bar[data-v-b9f97a64]{position:relative;height:31px}.progress[data-v-b9f97a64]{height:100%;font-size:.875rem}.progress-bar.bg-muted[data-v-b9f97a64]{color:var(--white)}.soc-marker[data-v-b9f97a64]{position:absolute;top:-2px;bottom:-2px;width:2px}.bg-disabled[data-v-b9f97a64]{background-color:var(--gray)}.bg-light[data-v-b9f97a64]{color:var(--dark)}
\ No newline at end of file
diff --git a/dist/css/index.9b973d78.css b/dist/css/index.9b973d78.css
new file mode 100644
index 000000000..a989a9ba8
--- /dev/null
+++ b/dist/css/index.9b973d78.css
@@ -0,0 +1 @@
+.progress-bar-animated{animation-direction:reverse}.btn.caption{opacity:1}.btn.first{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}.value,input[type=radio],label.btn{white-space:nowrap!important}.text-muted a,.text-muted a:hover{color:#6c757d!important;text-decoration:none}.bg-muted{opacity:.25}.fade-enter-active[data-v-a6ded36e],.fade-leave-active[data-v-a6ded36e]{transition:opacity .25s ease-in}.fade-enter[data-v-a6ded36e],.fade-leave-to[data-v-a6ded36e]{opacity:0}.dialog[data-v-a6ded36e]{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:hidden;outline:0}.icon[data-v-a6ded36e]{color:#0fdd42}.text-black a[data-v-a6ded36e]{color:#18191a}.icon[data-v-5f0f38d1]{color:#0fdd42}.text-black a[data-v-5f0f38d1]{color:#18191a}.logo[data-v-8dad761a]{width:85px}.app[data-v-8dad761a]{min-height:100vh}.btn[data-v-c8c77010]{flex-basis:0}.vehicle-soc[data-v-7f94c1fe]{--height:38px;--thumb-overlap:3px;--thumb-width:3px;--thumb-horizontal-padding:15px;--label-height:26px;position:relative;height:var(--height)}.progress[data-v-7f94c1fe]{height:100%;font-size:1rem}.progress-bar.bg-muted[data-v-7f94c1fe]{color:var(--white)}.bg-light[data-v-7f94c1fe]{color:var(--dark)}.target-label[data-v-7f94c1fe]{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(--dark);font-size:1rem;opacity:1;transition:opacity .2s ease 1s}.target-slider[data-v-7f94c1fe]{-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-7f94c1fe]:focus{outline:none}.target-slider[data-v-7f94c1fe]::-webkit-slider-runnable-track{background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-7f94c1fe]::-moz-range-track{background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-7f94c1fe]::-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(--dark);cursor:-webkit-grab;cursor:grab;border:none;opacity:1;-webkit-transition:opacity .2s ease 1s;transition:opacity .2s ease 1s}.target-slider[data-v-7f94c1fe]::-moz-range-thumb{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(--dark);cursor:grab;border:none;opacity:1;-moz-transition:opacity .2s ease 1s;transition:opacity .2s ease 1s}.target--max .target-label[data-v-7f94c1fe],.target--max .target-slider[data-v-7f94c1fe]::-webkit-slider-thumb{opacity:0}.target--max .target-label[data-v-7f94c1fe],.target--max .target-slider[data-v-7f94c1fe]::-moz-range-thumb{opacity:0}.target:hover .target-label[data-v-7f94c1fe],.target:hover .target-slider[data-v-7f94c1fe]::-webkit-slider-thumb{opacity:1;transition-delay:0s}.target:hover .target-label[data-v-7f94c1fe],.target:hover .target-slider[data-v-7f94c1fe]::-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 b0e9ada3d..4b0b69b56 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -1,4 +1,4 @@
-
evcc
\ No newline at end of file
+ };
\ No newline at end of file
diff --git a/dist/js/index.9bd6ba1b.js b/dist/js/index.9bd6ba1b.js
new file mode 100644
index 000000000..60ef08683
--- /dev/null
+++ b/dist/js/index.9bd6ba1b.js
@@ -0,0 +1,2 @@
+(function(t){function e(e){for(var s,n,o=e[0],l=e[1],c=e[2],u=0,m=[];u
0?a("hr",{key:s+"_hr",staticClass:"w-100 my-4"}):t._e(),a("Loadpoint",t._b({key:e,attrs:{single:1===t.loadpoints.length,id:s,pvConfigured:t.pvConfigured}},"Loadpoint",e,!1))]}))],2)])},_t=[],yt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"row row-cols-3 justify-content-between justify-content-md-start overflow-hidden"},[t.gridConfigured?a("div",{staticClass:"px-3"},[t.gridPower>0?a("div",{staticClass:"mb-2 value"},[t._v(" Bezug "),a("fa-icon",{staticClass:"text-primary",attrs:{icon:"arrow-down"}})],1):a("div",{staticClass:"mb-2 value"},[t._v(" Einspeisung "),a("fa-icon",{staticClass:"text-primary",attrs:{icon:"arrow-up"}})],1),a("h3",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.gridPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.gridPower))+"W")])])]):t._e(),t.pvConfigured?a("div",{staticClass:"px-3"},[a("div",{staticClass:"mb-2 value"},[t._v(" Erzeugung "),a("fa-icon",{class:{"text-primary":t.pvPower>0,"text-muted":t.pvPower<=0},attrs:{icon:"sun"}})],1),a("h3",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.pvPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.pvPower))+"W")])])]):t._e(),t.batteryConfigured?a("div",{staticClass:"px-3"},[a("div",{staticClass:"mb-2 value"},[a("div",{staticClass:"d-block d-sm-none"},[t._v(" Akku "),a("span",{staticClass:"text-muted"},[t._v(" / "+t._s(t.batterySoC)+" %")])]),a("div",{staticClass:"d-none d-sm-block"},[t._v(" Batterie "),a("span",{staticClass:"text-muted"},[t._v(" / "+t._s(t.batterySoC)+"% ")]),a("fa-icon",{staticClass:"text-primary",attrs:{icon:t.batteryIcon}})],1)]),a("h3",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.batteryPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.batteryPower))+"W")])])]):t._e()])},wt=[],St={data:function(){return{fmtLimit:100,fmtDigits:1}},methods:{round:function(t,e){var a=10**e;return(Math.round(t*a)/a).toFixed(e)},fmt:function(t){return void 0===t||null===t?0:(t=Math.abs(t),t>=this.fmtLimit?this.round(t/1e3,this.fmtDigits):this.round(t,0))},fmtUnit:function(t){return Math.abs(t)>=this.fmtLimit?"k":""},fmtDuration:function(t){if(t<=0||null==t)return"—";var e="0"+t%60,a="0"+Math.floor(t/60)%60,s=""+Math.floor(t/3600);return s.length<2&&(s="0"+s),s+":"+a.substr(-2)+":"+e.substr(-2)},fmtShortDuration:function(t){if(t<=0||null==t)return"—";var e,a=Math.floor(t/60)%60,s=Math.floor(t/3600);if(s>=1)a="0"+a,e=s+":"+a.substr(-2);else{var i="0"+t%60;e=a+":"+i.substr(-2)}return e},fmtShortDurationUnit:function(t){if(t<=0||null==t)return"";var e=Math.floor(t/3600);return e>=1?"h":"m"},fmtDayString:function(t){const e=""+t.getFullYear(),a=(""+(t.getMonth()+1)).padStart(2,"0"),s=(""+t.getDate()).padStart(2,"0");return`${e}-${a}-${s}`},fmtTimeString:function(t){const e=(""+t.getHours()).padStart(2,"0"),a=(""+t.getMinutes()).padStart(2,"0");return`${e}:${a}`},fmtAbsoluteDate:function(t){return new Intl.DateTimeFormat("default",{weekday:"short",hour:"numeric",minute:"numeric"}).format(t)}}};const xt=20,kt=["battery-empty","battery-quarter","battery-half","battery-three-quarters","battery-full"];var Nt={name:"SiteDetails",props:{gridConfigured:Boolean,gridPower:Number,pvConfigured:Boolean,pvPower:Number,batteryConfigured:Boolean,batteryPower:Number,batterySoC:Number},data:function(){return{iconIdx:0}},mixins:[St],computed:{numberOfPanels:function(){let t=0;return this.gridConfigured&&t++,this.pvConfigured&&t++,this.batteryConfigured&&t++,t},batteryIcon:function(){return Math.abs(this.batteryPower){this.batteryPower>xt?--this.iconIdx<0&&(this.iconIdx=kt.length-1):this.batteryPower=kt.length&&(this.iconIdx=0)},1e3)}},Dt=Nt,Mt=Object(B["a"])(Dt,yt,wt,!1,null,null,null),Tt=Mt.exports,Pt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("p",{staticClass:"h3 mb-4 d-sm-block",class:{"d-none":t.single}},[t._v(t._s(t.title||"Ladepunkt"))]),"soft"==t.remoteDisabled?a("div",{staticClass:"alert alert-warning mt-4 mb-2",attrs:{role:"alert"}},[t._v(" "+t._s(t.remoteDisabledSource)+": Adaptives PV-Laden deaktiviert ")]):t._e(),"hard"==t.remoteDisabled?a("div",{staticClass:"alert alert-danger mt-4 mb-2",attrs:{role:"alert"}},[t._v(" "+t._s(t.remoteDisabledSource)+": Deaktiviert ")]):t._e(),a("div",{staticClass:"row"},[a("Mode",{staticClass:"col-12 col-md-6 col-lg-4 mb-4",attrs:{mode:t.mode,pvConfigured:t.pvConfigured},on:{updated:t.setTargetMode}}),a("Vehicle",t._b({staticClass:"col-12 col-md-6 col-lg-8 mb-4",on:{"target-soc-updated":t.setTargetSoC}},"Vehicle",t.vehicle,!1))],1),a("LoadpointDetails",t._b({},"LoadpointDetails",t.details,!1))],1)},Et=[],Vt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{staticClass:"mb-3"},[t._v("Modus")]),a("div",{staticClass:"btn-group btn-group-toggle bg-white shadow-none w-100"},[a("label",{staticClass:"btn btn-outline-primary first",class:{active:"off"==t.mode}},[a("input",{attrs:{type:"radio",value:"off"},on:{click:function(e){return t.setTargetMode("off")}}}),t._v("Stop ")]),a("label",{staticClass:"btn btn-outline-primary",class:{active:"now"==t.mode}},[a("input",{attrs:{type:"radio",value:"now"},on:{click:function(e){return t.setTargetMode("now")}}}),t._v("Sofort ")]),t.pvConfigured?a("label",{staticClass:"btn btn-outline-primary",class:{active:"minpv"==t.mode}},[a("input",{attrs:{type:"radio",value:"minpv"},on:{click:function(e){return t.setTargetMode("minpv")}}}),a("span",{staticClass:"d-inline d-sm-none"},[t._v("Min")]),a("span",{staticClass:"d-none d-sm-inline"},[t._v("Min + PV")])]):t._e(),t.pvConfigured?a("label",{staticClass:"btn btn-outline-primary",class:{active:"pv"==t.mode}},[a("input",{attrs:{type:"radio",value:"pv"},on:{click:function(e){return t.setTargetMode("pv")}}}),a("span",{staticClass:"d-inline d-sm-none"},[t._v("PV")]),a("span",{staticClass:"d-none d-sm-inline"},[t._v("Nur PV")])]):t._e()])])},jt=[],Bt={name:"Mode",props:{mode:String,pvConfigured:Boolean},methods:{setTargetMode:function(t){this.$emit("updated",t)}}},At=Bt,Ot=(a("82fc"),Object(B["a"])(At,Vt,jt,!1,null,"c8c77010",null)),$t=Ot.exports,zt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{staticClass:"mb-3"},[t._v(" "+t._s(t.socTitle||"Fahrzeug")+" ")]),a("VehicleSoc",t._b({on:{"target-soc-updated":t.targetSocUpdated}},"VehicleSoc",t.vehicleSoc,!1)),a("VehicleSubline",t._b({staticClass:"my-1"},"VehicleSubline",t.vehicleSubline,!1))],1)},Lt=[],Ut={methods:{collectProps:function(t){let e={};for(var a in t.props)e[a]=this[a];return e}}},It=function(){var t,e,a=this,s=a.$createElement,i=a._self._c||s;return i("div",{staticClass:"vehicle-soc"},[i("div",{staticClass:"progress"},[i("div",{staticClass:"progress-bar",class:(t={"progress-bar-striped":a.charging,"progress-bar-animated":a.charging},t[a.progressColor]=!0,t),style:{width:a.socChargeDisplayWidth+"%"},attrs:{role:"progressbar"}},[a._v(" "+a._s(a.socChargeDisplayValue)+" ")]),a.remainingSoCWidth>0?i("div",{staticClass:"progress-bar",class:(e={},e[a.progressColor]=!0,e["bg-muted"]=!0,e),style:{width:a.remainingSoCWidth+"%",transition:"none"},attrs:{role:"progressbar"}}):a._e()]),a.hasVehicle&&a.visibleTargetSoC?i("div",{staticClass:"target",class:{"target--max":100===a.visibleTargetSoC}},[i("div",{staticClass:"target-label d-flex align-items-center justify-content-center",style:{left:a.visibleTargetSoC+"%"}},[a._v(" "+a._s(a.visibleTargetSoC)+"% ")]),i("input",{staticClass:"target-slider",attrs:{type:"range",min:"0",max:"100",step:"5"},domProps:{value:a.visibleTargetSoC},on:{input:a.movedTargetSoC,change:a.setTargetSoC}})]):a._e()])},Wt=[],Ht={name:"VehicleSoc",props:{connected:Boolean,hasVehicle:Boolean,socCharge:Number,enabled:Boolean,charging:Boolean,minSoC:Number,targetSoC:Number},data:function(){return{selectedTargetSoC:null}},computed:{socChargeDisplayWidth:function(){return this.hasVehicle&&this.socCharge>=0?this.socCharge:100},socChargeDisplayValue:function(){if(!this.hasVehicle||!this.socCharge||this.socCharge<0){let t="getrennt";return this.charging?t="lädt":this.enabled?t="bereit":this.connected&&(t="verbunden"),t}let t=this.socCharge;return t>=10&&(t+="%"),t},progressColor:function(){return this.connected?this.minSoCActive?"bg-danger":this.enabled?"bg-primary":"bg-secondary":"bg-light border"},minSoCActive:function(){return this.minSoC>0&&this.socChargethis.socCharge?this.visibleTargetSoC-this.socCharge:null},visibleTargetSoC:function(){return Number(this.selectedTargetSoC||this.targetSoC)}},methods:{movedTargetSoC:function(t){const e=40;return t.target.value0&&this.socCharge=0?a("div",{staticClass:"col-6 col-sm-3 col-lg-2 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Reichweite")]),a("h3",{staticClass:"value"},[t._v(" "+t._s(Math.round(t.range))+" "),a("small",{staticClass:"text-muted"},[t._v("km")])])]):a("div",{staticClass:"col-6 col-sm-3 col-lg-2 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Dauer")]),a("h3",{staticClass:"value"},[t._v(" "+t._s(t.fmtShortDuration(t.chargeDuration))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtShortDurationUnit(t.chargeDuration)))])])]),t.hasVehicle?a("div",{staticClass:"col-6 col-sm-3 col-lg-2 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Restzeit")]),a("h3",{staticClass:"value"},[t._v(" "+t._s(t.fmtShortDuration(t.chargeEstimate))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtShortDurationUnit(t.chargeEstimate)))])])]):t._e()])])},ie=[],re={name:"LoadpointDetails",props:{chargedEnergy:Number,chargeDuration:Number,chargeEstimate:Number,chargePower:Number,climater:String,hasVehicle:Boolean,range:Number},mixins:[St]},ne=re,oe=Object(B["a"])(ne,se,ie,!1,null,null,null),le=oe.exports,ce={name:"Loadpoint",props:{id:Number,pvConfigured:Boolean,single:Boolean,title:String,mode:String,targetSoC:Number,remoteDisabled:Boolean,remoteDisabledSource:String,chargeDuration:Number,charging:Boolean,connected:Boolean,enabled:Boolean,socTitle:String,socCharge:Number,minSoC:Number,timerSet:Boolean,timerActive:Boolean,targetTime:String,chargePower:Number,chargedEnergy:Number,hasVehicle:Boolean,climater:String,range:Number,chargeEstimate:Number,phases:Number,minCurrent:Number,maxCurrent:Number,activePhases:Number,chargeCurrent:Number,socCapacity:Number,connectedDuration:Number,chargeCurrents:Object,chargeConfigured:Boolean,chargeRemainingEnergy:Number},components:{LoadpointDetails:le,Mode:$t,Vehicle:ae},mixins:[St,Ut],data:function(){return{tickerHandle:null,chargeDurationDisplayed:null}},computed:{details:function(){return this.collectProps(le)},vehicle:function(){return this.collectProps(ae)}},watch:{chargeDuration:function(){window.clearInterval(this.tickerHandle),this.charging&&this.chargeDuration>=0&&(this.chargeDurationDisplayed=this.chargeDuration,this.tickerHandle=window.setInterval(function(){this.chargeDurationDisplayed+=1}.bind(this),1e3))}},methods:{api:function(t){return"loadpoints/"+this.id+"/"+t},setTargetMode:function(t){r.a.post(this.api("mode")+"/"+t).then(function(t){this.mode=t.data.mode}.bind(this)).catch(window.toasts.error)},setTargetSoC:function(t){r.a.post(this.api("targetsoc")+"/"+t).then(function(t){this.targetSoC=t.data.targetSoC}.bind(this)).catch(window.toasts.error)}},destroyed:function(){window.clearInterval(this.tickerHandle)}},de=ce,ue=Object(B["a"])(de,Pt,Et,!1,null,null,null),me=ue.exports,ve={name:"Site",props:{siteTitle:String,loadpoints:Array,gridConfigured:Boolean,gridPower:Number,pvConfigured:Boolean,pvPower:Number,batteryConfigured:Boolean,batteryPower:Number,batterySoC:Number,gridCurrents:Object,prioritySoC:Number},components:{SiteDetails:Tt,Loadpoint:me},mixins:[St,Ut],computed:{details:function(){return this.collectProps(Tt)}}},he=ve,pe=Object(B["a"])(he,Ct,_t,!1,null,null,null),fe=pe.exports,ge={name:"Main",components:{Site:fe},data:function(){return this.$root.$data.store},computed:{configured:function(){const t=window.evcc.configured;return t==window.evcc.configured||!isNaN(parseInt(t))&&parseInt(t)>0}}},be=ge,Ce=Object(B["a"])(be,gt,bt,!1,null,null,null),_e=Ce.exports,ye=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"container"},[a("div",{staticClass:"row mt-4 border-bottom"},[a("div",{staticClass:"col-12"},[a("p",{staticClass:"h1"},[t._v(t._s(t.title||"Home"))])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Netzzähler: "),t.gridConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" PV Zähler: "),t.pvConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Batteriezähler: "),t.batteryConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])])]),t._l(t.loadpoints,(function(e,s){return a("div",{key:s,attrs:{loadpoint:e,id:"loadpoint-"+s}},[a("div",{staticClass:"row mt-4 border-bottom"},[a("div",{staticClass:"col-12"},[a("p",{staticClass:"h1"},[t._v(t._s(e.title||"Ladepunkt"))])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Ladezähler: "),e.chargeConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Phasen: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.phases)+"p")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Min. Strom: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.minCurrent)+"A")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Max. Strom: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.maxCurrent)+"A")])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-md-8 h2"},[t._m(0,!0),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-6 py-3"},[t._v(" Modell: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.socTitle||"—"))])]),a("div",{staticClass:"col-6 py-3"},[t._v(" Kapazität: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.socCapacity)+"kWh")])])])])])])}))],2)},we=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"row py-3 h2 border-bottom"},[a("div",{staticClass:"col-12"},[t._v("Fahrzeug")])])}],Se={name:"Config",data:function(){return this.$root.$data.store.state}},xe=Se,ke=Object(B["a"])(xe,ye,we,!1,null,null,null),Ne=ke.exports;s["a"].use(ft["a"]);const De=[{path:"/",component:_e},{path:"/config",component:Ne}];var Me=new ft["a"]({routes:De,linkExactActiveClass:"active"});const Te=window.location;r.a.defaults.baseURL=Te.protocol+"//"+Te.hostname+(Te.port?":"+Te.port:"")+Te.pathname+"api",r.a.defaults.headers.post["Content-Type"]="application/json",window.toasts=new s["a"]({el:"#toasts",render:function(t){return t(pt,{props:{items:this.items,count:this.count}})},data:{items:{},count:0},name:"ToastsRoot",methods:{raise:function(t){let e=!1;Object.keys(this.items).forEach((function(a){let s=this.items[a];s.type==t.type&&s.message==t.message&&(e=!0)}),this),e||(t.id=this.count++,s["a"].set(this.items,t.id,t))},error:function(t){t.type="error",this.raise(t)},warn:function(t){t.type="warn",this.raise(t)},remove:function(t){s["a"].delete(this.items,t.id)}}}),new s["a"]({el:"#app",router:Me,data:{store:Q},render:t=>t(et)}),window.setInterval((function(){r.a.get("health").catch((function(t){t.message="Server unavailable",window.toasts.error(t)}))}),5e3)},b19f:function(t,e,a){},f06b:function(t,e,a){"use strict";a("34a4")}});
+//# sourceMappingURL=index.9bd6ba1b.js.map
\ No newline at end of file
diff --git a/dist/js/index.9bd6ba1b.js.map b/dist/js/index.9bd6ba1b.js.map
new file mode 100644
index 000000000..fccdd0f50
--- /dev/null
+++ b/dist/js/index.9bd6ba1b.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/views/App.vue?4e52","webpack:///./assets/js/components/VehicleSoc.vue?ef17","webpack:///./assets/js/components/Mode.vue?a870","webpack:///./assets/js/components/Version.vue?0cc7","webpack:///./assets/js/views/App.vue?8d23","webpack:///./assets/js/icons.js","webpack:///./assets/js/components/Logo.vue?d930","webpack:///assets/js/components/Logo.vue","webpack:///./assets/js/components/Logo.vue?6eb9","webpack:///./assets/js/components/Logo.vue","webpack:///./assets/js/components/Footer.vue?d8b1","webpack:///./assets/js/components/Version.vue?da13","webpack:///assets/js/components/Version.vue","webpack:///./assets/js/components/Version.vue?1d82","webpack:///./assets/js/components/Version.vue","webpack:///assets/js/components/Footer.vue","webpack:///./assets/js/components/Footer.vue?9347","webpack:///./assets/js/components/Footer.vue","webpack:///./assets/js/store.js","webpack:///assets/js/views/App.vue","webpack:///./assets/js/views/App.vue?9ed2","webpack:///./assets/js/views/App.vue","webpack:///./assets/js/components/Toasts.vue?4f97","webpack:///./assets/js/components/ToastMessage.vue?3352","webpack:///assets/js/components/ToastMessage.vue","webpack:///./assets/js/components/ToastMessage.vue?19ff","webpack:///./assets/js/components/ToastMessage.vue","webpack:///assets/js/components/Toasts.vue","webpack:///./assets/js/components/Toasts.vue?c63e","webpack:///./assets/js/components/Toasts.vue","webpack:///./assets/js/views/Main.vue?05de","webpack:///./assets/js/components/Site.vue?5a84","webpack:///./assets/js/components/SiteDetails.vue?7bf7","webpack:///./assets/js/mixins/formatter.js","webpack:///assets/js/components/SiteDetails.vue","webpack:///./assets/js/components/SiteDetails.vue?3811","webpack:///./assets/js/components/SiteDetails.vue","webpack:///./assets/js/components/Loadpoint.vue?9da1","webpack:///./assets/js/components/Mode.vue?0a5c","webpack:///assets/js/components/Mode.vue","webpack:///./assets/js/components/Mode.vue?fbb9","webpack:///./assets/js/components/Mode.vue","webpack:///./assets/js/components/Vehicle.vue?50eb","webpack:///./assets/js/mixins/collector.js","webpack:///./assets/js/components/VehicleSoc.vue?c7d2","webpack:///assets/js/components/VehicleSoc.vue","webpack:///./assets/js/components/VehicleSoc.vue?8383","webpack:///./assets/js/components/VehicleSoc.vue","webpack:///./assets/js/components/VehicleSubline.vue?852d","webpack:///assets/js/components/VehicleSubline.vue","webpack:///./assets/js/components/VehicleSubline.vue?a160","webpack:///./assets/js/components/VehicleSubline.vue","webpack:///assets/js/components/Vehicle.vue","webpack:///./assets/js/components/Vehicle.vue?5364","webpack:///./assets/js/components/Vehicle.vue","webpack:///./assets/js/components/LoadpointDetails.vue?8316","webpack:///assets/js/components/LoadpointDetails.vue","webpack:///./assets/js/components/LoadpointDetails.vue?3057","webpack:///./assets/js/components/LoadpointDetails.vue","webpack:///assets/js/components/Loadpoint.vue","webpack:///./assets/js/components/Loadpoint.vue?8199","webpack:///./assets/js/components/Loadpoint.vue","webpack:///assets/js/components/Site.vue","webpack:///./assets/js/components/Site.vue?af05","webpack:///./assets/js/components/Site.vue","webpack:///assets/js/views/Main.vue","webpack:///./assets/js/views/Main.vue?0821","webpack:///./assets/js/views/Main.vue","webpack:///./assets/js/views/Config.vue?140b","webpack:///assets/js/views/Config.vue","webpack:///./assets/js/views/Config.vue?db1d","webpack:///./assets/js/views/Config.vue","webpack:///./assets/js/router.js","webpack:///./assets/js/app.js","webpack:///./assets/js/components/Footer.vue?41d1"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_m","version","staticRenderFns","_v","add","faArrowDown","faArrowUp","faBatteryEmpty","faBatteryFull","faBatteryHalf","faBatteryQuarter","faBatteryThreeQuarters","faChevronDown","faChevronUp","faClock","faExclamationTriangle","faLeaf","faSun","faTemperatureHigh","faTemperatureLow","faThermometerHalf","faHeart","faGift","faBox","faExclamationCircle","component","_b","on","$event","preventDefault","showModal","_s","available","releaseNotesUrl","installed","updateStarted","closeModal","style","width","uploadProgress","updateStatus","uploadMessage","domProps","releaseNotes","update","_e","props","String","hasUpdater","Boolean","Number","modalActive","methods","async","a","post","e","computed","newVersionAvailable","components","Version","setProperty","obj","prop","set","Array","isArray","store","state","loadpoints","msg","keys","forEach","k","toasts","message","split","Logo","Footer","compact","$root","$data","installedVersion","evcc","connect","loc","location","protocol","uri","hostname","port","pathname","ws","WebSocket","self","onerror","close","onclose","setTimeout","onmessage","evt","JSON","parse","error","availableVersion","created","urlParams","URLSearchParams","search","staticStyle","_l","item","id","type","status","mounted","toast","remove","ToastMessage","items","siteTitle","details","loadpoint","pvConfigured","gridPower","fmt","fmtUnit","class","pvPower","batterySoC","batteryIcon","batteryPower","fmtLimit","fmtDigits","round","num","precision","base","Math","toFixed","val","undefined","abs","fmtDuration","seconds","minutes","floor","hours","substr","fmtShortDuration","tm","fmtShortDurationUnit","fmtDayString","date","YY","getFullYear","MM","getMonth","padStart","DD","getDate","fmtTimeString","HH","getHours","mm","getMinutes","fmtAbsoluteDate","Intl","DateTimeFormat","weekday","hour","minute","format","limit","icons","gridConfigured","batteryConfigured","iconIdx","mixins","formatter","numberOfPanels","count","setInterval","single","title","remoteDisabled","remoteDisabledSource","setTargetMode","setTargetSoC","vehicle","active","$emit","socTitle","targetSocUpdated","vehicleSoc","vehicleSubline","collectProps","_obj","_obj$1","charging","progressColor","socChargeDisplayWidth","socChargeDisplayValue","remainingSoCWidth","transition","hasVehicle","visibleTargetSoC","left","movedTargetSoC","connected","socCharge","enabled","minSoC","targetSoC","selectedTargetSoC","chargeStatus","minSoCActive","minTargetSoC","target","invisible","timerActive","targetTimeLabel","timerSet","targetTime","targetChargeEnabled","targetDate","Date","VehicleSoc","VehicleSubline","collector","climater","chargePower","chargedEnergy","range","chargeDuration","chargeEstimate","phases","minCurrent","maxCurrent","activePhases","chargeCurrent","socCapacity","connectedDuration","chargeCurrents","chargeConfigured","chargeRemainingEnergy","LoadpointDetails","Mode","Vehicle","tickerHandle","chargeDurationDisplayed","watch","clearInterval","api","func","then","response","catch","soc","destroyed","gridCurrents","prioritySoC","SiteDetails","Loadpoint","Site","configured","isNaN","parseInt","use","routes","path","Main","Config","linkExactActiveClass","defaults","baseURL","headers","el","h","Toasts","raise","found","warn","delete","router","App","res"],"mappings":"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","file":"js/index.9bd6ba1b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=8dad761a&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VehicleSoc.vue?vue&type=style&index=0&id=7f94c1fe&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mode.vue?vue&type=style&index=0&id=c8c77010&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=style&index=0&id=a6ded36e&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app d-flex flex-column justify-content-between overflow-hidden\"},[_c('div',{staticClass:\"flex-grow-1 d-flex flex-column justify-content-between\"},[_c('nav',{staticClass:\"navbar navbar-expand-lg navbar-dark bg-dark\"},[_c('div',{staticClass:\"container\"},[_c('a',{staticClass:\"navbar-brand\",attrs:{\"href\":\"https://github.com/andig/evcc\"}},[_c('Logo',{staticClass:\"logo\"})],1),_vm._m(0),_vm._m(1)])]),_c('router-view',{staticClass:\"flex-grow-1 d-flex flex-column justify-content-stretch\"})],1),_c('Footer',{attrs:{\"version\":_vm.version}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"navbar-toggler\",attrs:{\"type\":\"button\",\"data-toggle\":\"collapse\",\"data-target\":\"#navbarNavAltMarkup\",\"aria-controls\":\"navbarNavAltMarkup\",\"aria-expanded\":\"false\",\"aria-label\":\"Toggle navigation\"}},[_c('span',{staticClass:\"navbar-toggler-icon\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"collapse navbar-collapse\",attrs:{\"id\":\"navbarNavAltMarkup\"}},[_c('div',{staticClass:\"navbar-nav mr-auto\"}),_c('div',{staticClass:\"navbar-nav\"},[_c('a',{staticClass:\"nav-item nav-link\",attrs:{\"href\":\"https://github.com/andig/evcc/discussions\",\"target\":\"_blank\"}},[_vm._v(\" Support \")])])])}]\n\nexport { render, staticRenderFns }","import Vue from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\n\nimport { faArrowDown } from \"@fortawesome/free-solid-svg-icons/faArrowDown\";\nimport { faArrowUp } from \"@fortawesome/free-solid-svg-icons/faArrowUp\";\nimport { faBatteryEmpty } from \"@fortawesome/free-solid-svg-icons/faBatteryEmpty\";\nimport { faBatteryFull } from \"@fortawesome/free-solid-svg-icons/faBatteryFull\";\nimport { faBatteryHalf } from \"@fortawesome/free-solid-svg-icons/faBatteryHalf\";\nimport { faBatteryQuarter } from \"@fortawesome/free-solid-svg-icons/faBatteryQuarter\";\nimport { faBatteryThreeQuarters } from \"@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters\";\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons/faChevronDown\";\nimport { faChevronUp } from \"@fortawesome/free-solid-svg-icons/faChevronUp\";\nimport { faClock } from \"@fortawesome/free-solid-svg-icons/faClock\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons/faExclamationTriangle\";\nimport { faLeaf } from \"@fortawesome/free-solid-svg-icons/faLeaf\";\nimport { faSun } from \"@fortawesome/free-solid-svg-icons/faSun\";\nimport { faTemperatureHigh } from \"@fortawesome/free-solid-svg-icons/faTemperatureHigh\";\nimport { faTemperatureLow } from \"@fortawesome/free-solid-svg-icons/faTemperatureLow\";\nimport { faThermometerHalf } from \"@fortawesome/free-solid-svg-icons/faThermometerHalf\";\nimport { faHeart } from \"@fortawesome/free-solid-svg-icons/faHeart\";\nimport { faGift } from \"@fortawesome/free-solid-svg-icons/faGift\";\nimport { faBox } from \"@fortawesome/free-solid-svg-icons/faBox\";\nimport { faExclamationCircle } from \"@fortawesome/free-solid-svg-icons/faExclamationCircle\";\n\nlibrary.add(\n faArrowDown,\n faArrowUp,\n faBatteryEmpty,\n faBatteryFull,\n faBatteryHalf,\n faBatteryQuarter,\n faBatteryThreeQuarters,\n faChevronDown,\n faChevronUp,\n faClock,\n faExclamationTriangle,\n faLeaf,\n faSun,\n faTemperatureHigh,\n faTemperatureLow,\n faThermometerHalf,\n faHeart,\n faGift,\n faBox,\n faExclamationCircle\n);\n\nVue.component(\"fa-icon\", FontAwesomeIcon);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"viewBox\":\"0 0 122 35\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"stroke-linejoin\":\"round\",\"stroke-miterlimit\":\"2\"}},[_c('path',{attrs:{\"d\":\"M13.082 29.071a12.384 12.384 0 01-9-3.42 12.192 12.192 0 01-3.54-9.12v-.64a15.394 15.394 0 011.47-6.83 10.825 10.825 0 014.17-4.64 11.64 11.64 0 016.15-1.63 10.45 10.45 0 018.21 3.26c2 2.194 3 5.297 3 9.31v2.76H7.382a6.348 6.348 0 002 4 5.997 5.997 0 004.16 1.49 7.305 7.305 0 006.1-2.84l3.31 3.73a10 10 0 01-4.13 3.39 13.309 13.309 0 01-5.74 1.18zm-.77-20.84a4.216 4.216 0 00-3.26 1.37 7.141 7.141 0 00-1.6 3.91h9.39v-.55a5.005 5.005 0 00-1.22-3.49 4.304 4.304 0 00-3.31-1.24zM36.452 20.331l4.7-17.09h7l-8.48 25.36h-6.44l-8.52-25.36h7l4.74 17.09zM85.542 23.611a4.444 4.444 0 003-1 3.638 3.638 0 001.22-2.75h6.32a8.668 8.668 0 01-1.4 4.73 9.145 9.145 0 01-3.79 3.3 11.736 11.736 0 01-5.29 1.19 10.912 10.912 0 01-8.54-3.46c-2.087-2.3-3.13-5.483-3.13-9.55v-.45c0-3.9 1.033-7.016 3.1-9.35a10.868 10.868 0 018.51-3.5c2.791-.134 5.524.84 7.6 2.71a9.626 9.626 0 012.9 7.21h-6.3a4.663 4.663 0 00-1.2-3.22 4.005 4.005 0 00-3.08-1.24 4.068 4.068 0 00-3.56 1.73c-.8 1.15-1.2 3-1.2 5.6v.7c0 2.61.39 4.49 1.19 5.63a4.092 4.092 0 003.65 1.72zM110.422 23.611a4.454 4.454 0 003-1 3.63 3.63 0 001.21-2.75h6.33a8.668 8.668 0 01-1.4 4.73 9.143 9.143 0 01-3.73 3.3 11.76 11.76 0 01-5.29 1.18 10.912 10.912 0 01-8.54-3.46c-2.087-2.3-3.13-5.483-3.13-9.55v-.45c0-3.9 1.033-7.016 3.1-9.35a10.85 10.85 0 018.57-3.49 10.575 10.575 0 017.6 2.71 9.598 9.598 0 012.91 7.21h-6.33a4.651 4.651 0 00-1.21-3.22 4.492 4.492 0 00-6.64.49c-.8 1.15-1.21 3-1.21 5.6v.7c0 2.607.4 4.484 1.2 5.63a4.09 4.09 0 003.56 1.72z\",\"fill\":\"#fff\",\"fill-rule\":\"nonzero\"}}),_c('path',{attrs:{\"d\":\"M58.462.751h9.22l-6.14 12.3h6.15l-11.53 21.51 2.3-15.36h-7.68l7.68-18.45z\",\"fill\":\"#0fdd42\",\"fill-rule\":\"nonzero\"}}),_c('path',{attrs:{\"fill\":\"none\",\"d\":\"M-24.458-22.109h170v76h-170z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t \n\t\t \n\t\t \n\t \n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Logo.vue?vue&type=template&id=14334b81&\"\nimport script from \"./Logo.vue?vue&type=script&lang=js&\"\nexport * from \"./Logo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"py-3 py-md-5 mt-3 mt-md-5 border-top\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('Version',_vm._b({},'Version',_vm.version,false))],1),_c('div',{staticClass:\"col-6 text-right\"},[_c('small',{staticClass:\"text-black\"},[_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://github.com/sponsors/andig\",\"target\":\"_blank\"}},[_c('fa-icon',{staticClass:\"icon mr-1\",attrs:{\"icon\":\"heart\"}}),_c('span',{staticClass:\"d-none d-sm-inline\"},[_vm._v(\"Projekt \")]),_vm._v(\"unterstützen \")],1)])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('small',{staticClass:\"text-black\"},[(_vm.newVersionAvailable)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.showModal($event)}}},[_c('fa-icon',{staticClass:\"icon mr-1\",attrs:{\"icon\":\"gift\"}}),_vm._v(\"Update\"),_c('span',{staticClass:\"d-none d-sm-inline\"},[_vm._v(\" verfügbar\")]),_vm._v(\": \"+_vm._s(_vm.available)+\" \")],1):_c('a',{attrs:{\"href\":_vm.releaseNotesUrl(_vm.installed),\"target\":\"_blank\"}},[_vm._v(\" Version \"+_vm._s(_vm.installed)+\" \")])]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.modalActive)?_c('div',{staticClass:\"dialog\",attrs:{\"id\":\"updateModal\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-dialog-centered modal-dialog-scrollable\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h4',{staticClass:\"modal-title font-weight-bold\"},[_vm._v(\"Update verfügbar\")]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.closeModal}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])]),_c('div',{staticClass:\"modal-body\"},[(_vm.updateStarted)?_c('div',[_c('p',[_vm._v(\"Nach der Aktualisierung wird evcc neu gestartet.\")]),_c('div',{staticClass:\"progress my-3\"},[_c('div',{staticClass:\"progress-bar progress-bar-striped progress-bar-animated\",style:({ width: _vm.uploadProgress + '%' }),attrs:{\"role\":\"progressbar\"}})]),_c('p',[_vm._v(_vm._s(_vm.updateStatus)+_vm._s(_vm.uploadMessage))])]):_c('div',[_c('p',[_c('small',[_vm._v(\"Aktuell installierte Version: \"+_vm._s(_vm.installed))])]),(_vm.releaseNotes)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.releaseNotes)}}):_c('p',[_vm._v(\" Keine Releasenotes verfügbar. Mehr Informationen zur neuen Version findest du \"),_c('a',{attrs:{\"href\":_vm.releaseNotesUrl(_vm.available)}},[_vm._v(\"hier\")]),_vm._v(\". \")])])]),_c('div',{staticClass:\"modal-footer d-flex justify-content-between\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.closeModal}},[_vm._v(\" Abbrechen \")]),_c('div',[(_vm.hasUpdater)?_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.update}},[(_vm.updateStarted)?_c('span',[_c('span',{staticClass:\"spinner-border spinner-border-sm\",attrs:{\"role\":\"status\",\"aria-hidden\":\"true\"}}),_vm._v(\" Akualisieren \")]):_c('span',[_vm._v(\"Jetzt aktualisieren\")])]):_c('a',{staticClass:\"btn btn-primary\",attrs:{\"href\":_vm.releaseNotesUrl(_vm.available)}},[_vm._v(\" Download \")])])])])])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t
\n\t\t\t\n\t\t\t\t Update\n\t\t\t\t\tverfügbar :\n\t\t\t\t{{ available }}\n\t\t\t \n\t\t\t\n\t\t\t\tVersion {{ installed }}\n\t\t\t \n\t\t \n\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Nach der Aktualisierung wird evcc neu gestartet.
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{{ updateStatus }}{{ uploadMessage }}
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tAktuell installierte Version: {{ installed }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tKeine Releasenotes verfügbar. Mehr Informationen zur neuen\n\t\t\t\t\t\t\t\t\tVersion findest du\n\t\t\t\t\t\t\t\t\thier .\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t
\n \n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Version.vue?vue&type=template&id=a6ded36e&scoped=true&\"\nimport script from \"./Version.vue?vue&type=script&lang=js&\"\nexport * from \"./Version.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Version.vue?vue&type=style&index=0&id=a6ded36e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a6ded36e\",\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t \n \n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=5f0f38d1&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=5f0f38d1&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f0f38d1\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nfunction setProperty(obj, props, value) {\n const prop = props.shift();\n if (!obj[prop]) {\n Vue.set(obj, prop, {});\n }\n\n if (!props.length) {\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n obj[prop] = { ...obj[prop], ...value };\n } else {\n obj[prop] = value;\n }\n return;\n }\n\n setProperty(obj[prop], props, value);\n}\n\nconst store = {\n state: {\n loadpoints: [], // ensure array type\n },\n update: function (msg) {\n Object.keys(msg).forEach(function (k) {\n if (typeof window.toasts[k] === \"function\") {\n window.toasts[k]({ message: msg[k] });\n } else {\n setProperty(store.state, k.split(\".\"), msg[k]);\n }\n });\n },\n};\n\nexport default store;\n","\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\n\t\t\t
\n\t\t
\n\t\t
\n\t
\n \n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=8dad761a&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=8dad761a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8dad761a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"4rem\",\"right\":\"0.5rem\"},attrs:{\"aria-atomic\":\"true\"}},_vm._l((_vm.items),function(item){return _c('ToastMessage',{key:item.id,attrs:{\"item\":item,\"id\":'message-id-' + item.id}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toast\",attrs:{\"data-delay\":\"10000\",\"data-autohide\":true}},[_c('div',{staticClass:\"toast-header\"},[(_vm.item.type != 'warn')?_c('strong',{staticClass:\"mr-auto\"},[_c('fa-icon',{staticClass:\"text-danger\",attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\" Error\")],1):_vm._e(),(_vm.item.type == 'warn')?_c('strong',{staticClass:\"mr-auto\"},[_c('fa-icon',{staticClass:\"text-warning\",attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\" Warning\")],1):_vm._e(),(_vm.item.status)?_c('small',[_vm._v(\"HTTP \"+_vm._s(_vm.item.status))]):_vm._e(),_vm._m(0)]),_c('div',{staticClass:\"toast-body\"},[_vm._v(_vm._s(_vm.item.message))])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"ml-2 mb-1 close\",attrs:{\"type\":\"button\",\"data-dismiss\":\"toast\",\"aria-label\":\"Close\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])}]\n\nexport { render, staticRenderFns }","\n\t\n\t\t\n\t\t
{{ item.message }}
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastMessage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToastMessage.vue?vue&type=template&id=556fd3a5&\"\nimport script from \"./ToastMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./ToastMessage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t\n\t\t\n\t\t \n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Toasts.vue?vue&type=template&id=57d56c56&\"\nimport script from \"./Toasts.vue?vue&type=script&lang=js&\"\nexport * from \"./Toasts.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[(_vm.configured)?_c('Site',_vm._b({},'Site',_vm.state,false)):_c('div',[_c('div',{staticClass:\"row py-5\"},[_c('div',{staticClass:\"col12\"},[_c('p',{staticClass:\"h1 pt-5 pb-2 border-bottom\"},[_vm._v(\"Willkommen bei evcc\")]),_c('p',{staticClass:\"lead pt-2\"},[_c('b',[_vm._v(\"evcc\")]),_vm._v(\" ist dient zur flexiblen Ladesteuerung von Elektrofahrzeugen. \")]),_c('p',{staticClass:\"pt-2\"},[_vm._v(\" Es sieht aus, als wäre Dein \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" noch nicht konfiguriert. Um \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" zu konfigurieren sind die folgenden Schritte notwendig: \")]),_c('ol',{staticClass:\"pt-2\"},[_c('li',[_vm._v(\" Erzeugen einer Konfigurationsdatei mit Namen \"),_c('code',[_vm._v(\"evcc.yaml\")]),_vm._v(\". Die Standardkonfiguration \"),_c('code',[_vm._v(\"evcc.dist.yaml\")]),_vm._v(\" kann dafür als Vorlage dienen (\"),_c('a',{attrs:{\"href\":\"https://github.com/andig/evcc/blob/master/evcc.dist.yaml\"}},[_vm._v(\"Download\")]),_vm._v(\"). \")]),_c('li',[_vm._v(\"Konfiguration der Wallbox als \"),_c('code',[_vm._v(\"chargers\")]),_vm._v(\".\")]),_c('li',[_vm._v(\" Konfiguration des EVU Zählers und evtl. weiterer Zähler unter \"),_c('code',[_vm._v(\"meters\")]),_vm._v(\". \")]),_c('li',[_vm._v(\" Konfiguration des Netzanschlusses unter \"),_c('code',[_vm._v(\"site\")]),_vm._v(\". In einer Site wird der Netzanschluss mit dem konfigurierten EVU Zähler (\"),_c('code',[_vm._v(\"meter\")]),_vm._v(\") verbunden. \")]),_c('li',[_vm._v(\" Konfiguration eines Ladepunktes unter \"),_c('code',[_vm._v(\"loadpoints\")]),_vm._v(\". In einem Ladepunkt wird die konfigurierte Wallbox (\"),_c('code',[_vm._v(\"charger\")]),_vm._v(\") mit dem Ladepunkt verbunden. \")]),_c('li',[_vm._v(\" Start von \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" mit der neu erstellten Konfiguration: \"),_c('code',[_vm._v(\"evcc -c evcc.yaml\")])])]),_c('p',[_vm._v(\"Minimale Beispielkonfiguration für \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\":\")]),_c('p',[_c('code',[_c('pre',{staticClass:\"mx-3\"},[_vm._v(\" uri: localhost:7070 # Adresse für UI\\n interval: 10s # Regelintervall\\n meters:\\n - name: evu-zähler\\n type: ... # Detailkonfiguration des EVU Zählers\\n - name: ladezähler\\n type: ... # Detailkonfiguration des Ladezählers (optional)\\n chargers:\\n - name: wallbox\\n type: ... # Detailkonfiguration der Wallbox\\n site:\\n title: Home\\n meters:\\n grid: evu-zähler # EVU Zähler\\n loadpoints:\\n - title: Ladepunkt # ui display name\\n charger: wallbox # charger\\n meters:\\n charge: ladezähler # Ladezählers (optional)\\n \")])])]),_c('p',[_vm._v(\" Viel Spass mit \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\"! Bei Problemen kannst Du uns auf \"),_c('a',{attrs:{\"href\":\"https://github.com/andig/evcc/issues\"}},[_vm._v(\"GitHub\")]),_vm._v(\" erreichen. \")])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 d-flex flex-column\"},[_c('div',{staticClass:\"row mt-4 pt-2\"},[_c('div',{staticClass:\"d-none d-md-flex col-12 col-md-3 col-lg-4 align-items-end\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(_vm.siteTitle || \"Home\"))])]),_c('div',{staticClass:\"col-12 col-md-9 col-lg-6 flex-grow-1\"},[_c('SiteDetails',_vm._b({},'SiteDetails',_vm.details,false))],1)]),_c('hr',{staticClass:\"w-100 my-4\"}),_c('div',{staticClass:\"flex-grow-1 d-flex justify-content-around flex-column\"},[_vm._l((_vm.loadpoints),function(loadpoint,id){return [(id > 0)?_c('hr',{key:id + '_hr',staticClass:\"w-100 my-4\"}):_vm._e(),_c('Loadpoint',_vm._b({key:loadpoint,attrs:{\"single\":_vm.loadpoints.length === 1,\"id\":id,\"pvConfigured\":_vm.pvConfigured}},'Loadpoint',loadpoint,false))]})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row row-cols-3 justify-content-between justify-content-md-start overflow-hidden\"},[(_vm.gridConfigured)?_c('div',{staticClass:\"px-3\"},[(_vm.gridPower > 0)?_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Bezug \"),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":\"arrow-down\"}})],1):_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Einspeisung \"),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":\"arrow-up\"}})],1),_c('h3',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.gridPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.gridPower))+\"W\")])])]):_vm._e(),(_vm.pvConfigured)?_c('div',{staticClass:\"px-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Erzeugung \"),_c('fa-icon',{class:{\n\t\t\t\t\t'text-primary': _vm.pvPower > 0,\n\t\t\t\t\t'text-muted': _vm.pvPower <= 0,\n\t\t\t\t},attrs:{\"icon\":\"sun\"}})],1),_c('h3',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.pvPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.pvPower))+\"W\")])])]):_vm._e(),(_vm.batteryConfigured)?_c('div',{staticClass:\"px-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_c('div',{staticClass:\"d-block d-sm-none\"},[_vm._v(\" Akku \"),_c('span',{staticClass:\"text-muted\"},[_vm._v(\" / \"+_vm._s(_vm.batterySoC)+\" %\")])]),_c('div',{staticClass:\"d-none d-sm-block\"},[_vm._v(\" Batterie \"),_c('span',{staticClass:\"text-muted\"},[_vm._v(\" / \"+_vm._s(_vm.batterySoC)+\"% \")]),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":_vm.batteryIcon}})],1)]),_c('h3',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.batteryPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.batteryPower))+\"W\")])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n data: function () {\n return {\n fmtLimit: 100,\n fmtDigits: 1,\n };\n },\n methods: {\n round: function (num, precision) {\n var base = 10 ** precision;\n return (Math.round(num * base) / base).toFixed(precision);\n },\n fmt: function (val) {\n if (val === undefined || val === null) {\n return 0;\n }\n val = Math.abs(val);\n return val >= this.fmtLimit ? this.round(val / 1e3, this.fmtDigits) : this.round(val, 0);\n },\n fmtUnit: function (val) {\n return Math.abs(val) >= this.fmtLimit ? \"k\" : \"\";\n },\n fmtDuration: function (d) {\n if (d <= 0 || d == null) {\n return \"—\";\n }\n var seconds = \"0\" + (d % 60);\n var minutes = \"0\" + (Math.floor(d / 60) % 60);\n var hours = \"\" + Math.floor(d / 3600);\n if (hours.length < 2) {\n hours = \"0\" + hours;\n }\n return hours + \":\" + minutes.substr(-2) + \":\" + seconds.substr(-2);\n },\n fmtShortDuration: function (d) {\n if (d <= 0 || d == null) {\n return \"—\";\n }\n var minutes = Math.floor(d / 60) % 60;\n var hours = Math.floor(d / 3600);\n var tm;\n if (hours >= 1) {\n minutes = \"0\" + minutes;\n tm = hours + \":\" + minutes.substr(-2);\n } else {\n var seconds = \"0\" + (d % 60);\n tm = minutes + \":\" + seconds.substr(-2);\n }\n return tm;\n },\n fmtShortDurationUnit: function (d) {\n if (d <= 0 || d == null) {\n return \"\";\n }\n var hours = Math.floor(d / 3600);\n if (hours >= 1) {\n return \"h\";\n }\n return \"m\";\n },\n fmtDayString: function (date) {\n const YY = `${date.getFullYear()}`;\n const MM = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const DD = `${date.getDate()}`.padStart(2, \"0\");\n return `${YY}-${MM}-${DD}`;\n },\n fmtTimeString: function (date) {\n const HH = `${date.getHours()}`.padStart(2, \"0\");\n const mm = `${date.getMinutes()}`.padStart(2, \"0\");\n return `${HH}:${mm}`;\n },\n fmtAbsoluteDate: function (date) {\n return new Intl.DateTimeFormat(\"default\", {\n weekday: \"short\",\n hour: \"numeric\",\n minute: \"numeric\",\n }).format(date);\n },\n },\n};\n","\n\t\n\t\t
\n\t\t\t
0\">\n\t\t\t\tBezug \n\t\t\t
\n\t\t\t
\n\t\t\t\tEinspeisung \n\t\t\t
\n\t\t\t
\n\t\t\t\t{{ fmt(gridPower) }}\n\t\t\t\t{{ fmtUnit(gridPower) }}W \n\t\t\t \n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\tErzeugung\n\t\t\t\t 0,\n\t\t\t\t\t\t'text-muted': pvPower <= 0,\n\t\t\t\t\t}\"\n\t\t\t\t> \n\t\t\t
\n\t\t\t
\n\t\t\t\t{{ fmt(pvPower) }}\n\t\t\t\t{{ fmtUnit(pvPower) }}W \n\t\t\t \n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tAkku / {{ batterySoC }} % \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tBatterie / {{ batterySoC }}% \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t{{ fmt(batteryPower) }}\n\t\t\t\t{{ fmtUnit(batteryPower) }}W \n\t\t\t \n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SiteDetails.vue?vue&type=template&id=30cfb8fc&\"\nimport script from \"./SiteDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./SiteDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{staticClass:\"h3 mb-4 d-sm-block\",class:{ 'd-none': _vm.single }},[_vm._v(_vm._s(_vm.title || \"Ladepunkt\"))]),(_vm.remoteDisabled == 'soft')?_c('div',{staticClass:\"alert alert-warning mt-4 mb-2\",attrs:{\"role\":\"alert\"}},[_vm._v(\" \"+_vm._s(_vm.remoteDisabledSource)+\": Adaptives PV-Laden deaktiviert \")]):_vm._e(),(_vm.remoteDisabled == 'hard')?_c('div',{staticClass:\"alert alert-danger mt-4 mb-2\",attrs:{\"role\":\"alert\"}},[_vm._v(\" \"+_vm._s(_vm.remoteDisabledSource)+\": Deaktiviert \")]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('Mode',{staticClass:\"col-12 col-md-6 col-lg-4 mb-4\",attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured},on:{\"updated\":_vm.setTargetMode}}),_c('Vehicle',_vm._b({staticClass:\"col-12 col-md-6 col-lg-8 mb-4\",on:{\"target-soc-updated\":_vm.setTargetSoC}},'Vehicle',_vm.vehicle,false))],1),_c('LoadpointDetails',_vm._b({},'LoadpointDetails',_vm.details,false))],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mb-3\"},[_vm._v(\"Modus\")]),_c('div',{staticClass:\"btn-group btn-group-toggle bg-white shadow-none w-100\"},[_c('label',{staticClass:\"btn btn-outline-primary first\",class:{ active: _vm.mode == 'off' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"off\"},on:{\"click\":function($event){return _vm.setTargetMode('off')}}}),_vm._v(\"Stop \")]),_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'now' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"now\"},on:{\"click\":function($event){return _vm.setTargetMode('now')}}}),_vm._v(\"Sofort \")]),(_vm.pvConfigured)?_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'minpv' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"minpv\"},on:{\"click\":function($event){return _vm.setTargetMode('minpv')}}}),_c('span',{staticClass:\"d-inline d-sm-none\"},[_vm._v(\"Min\")]),_c('span',{staticClass:\"d-none d-sm-inline\"},[_vm._v(\"Min + PV\")])]):_vm._e(),(_vm.pvConfigured)?_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'pv' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"pv\"},on:{\"click\":function($event){return _vm.setTargetMode('pv')}}}),_c('span',{staticClass:\"d-inline d-sm-none\"},[_vm._v(\"PV\")]),_c('span',{staticClass:\"d-none d-sm-inline\"},[_vm._v(\"Nur PV\")])]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n \n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Mode.vue?vue&type=template&id=c8c77010&scoped=true&\"\nimport script from \"./Mode.vue?vue&type=script&lang=js&\"\nexport * from \"./Mode.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Mode.vue?vue&type=style&index=0&id=c8c77010&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c8c77010\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mb-3\"},[_vm._v(\" \"+_vm._s(_vm.socTitle || \"Fahrzeug\")+\" \")]),_c('VehicleSoc',_vm._b({on:{\"target-soc-updated\":_vm.targetSocUpdated}},'VehicleSoc',_vm.vehicleSoc,false)),_c('VehicleSubline',_vm._b({staticClass:\"my-1\"},'VehicleSubline',_vm.vehicleSubline,false))],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n methods: {\n // collect all target component properties from current instance\n collectProps: function (component) {\n let data = {};\n for (var p in component.props) {\n data[p] = this[p];\n }\n return data;\n },\n },\n};\n","var render = function () {\nvar _obj, _obj$1;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vehicle-soc\"},[_c('div',{staticClass:\"progress\"},[_c('div',{staticClass:\"progress-bar\",class:( _obj = {\n\t\t\t\t'progress-bar-striped': _vm.charging,\n\t\t\t\t'progress-bar-animated': _vm.charging\n\t\t\t}, _obj[_vm.progressColor] = true, _obj ),style:({ width: (_vm.socChargeDisplayWidth + \"%\") }),attrs:{\"role\":\"progressbar\"}},[_vm._v(\" \"+_vm._s(_vm.socChargeDisplayValue)+\" \")]),(_vm.remainingSoCWidth > 0)?_c('div',{staticClass:\"progress-bar\",class:( _obj$1 = {}, _obj$1[_vm.progressColor] = true, _obj$1['bg-muted'] = true, _obj$1 ),style:({ width: (_vm.remainingSoCWidth + \"%\"), transition: 'none' }),attrs:{\"role\":\"progressbar\"}}):_vm._e()]),(_vm.hasVehicle && _vm.visibleTargetSoC)?_c('div',{staticClass:\"target\",class:{ 'target--max': _vm.visibleTargetSoC === 100 }},[_c('div',{staticClass:\"target-label d-flex align-items-center justify-content-center\",style:({ left: (_vm.visibleTargetSoC + \"%\") })},[_vm._v(\" \"+_vm._s(_vm.visibleTargetSoC)+\"% \")]),_c('input',{staticClass:\"target-slider\",attrs:{\"type\":\"range\",\"min\":\"0\",\"max\":\"100\",\"step\":\"5\"},domProps:{\"value\":_vm.visibleTargetSoC},on:{\"input\":_vm.movedTargetSoC,\"change\":_vm.setTargetSoC}})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t{{ socChargeDisplayValue }}\n\t\t\t
\n\t\t\t
0\"\n\t\t\t\tclass=\"progress-bar\"\n\t\t\t\trole=\"progressbar\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t[progressColor]: true,\n\t\t\t\t\t'bg-muted': true,\n\t\t\t\t}\"\n\t\t\t\t:style=\"{ width: `${remainingSoCWidth}%`, transition: 'none' }\"\n\t\t\t>
\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{{ visibleTargetSoC }}%\n\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n \n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VehicleSoc.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VehicleSoc.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VehicleSoc.vue?vue&type=template&id=7f94c1fe&scoped=true&\"\nimport script from \"./VehicleSoc.vue?vue&type=script&lang=js&\"\nexport * from \"./VehicleSoc.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VehicleSoc.vue?vue&type=style&index=0&id=7f94c1fe&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f94c1fe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('small',{staticClass:\"text-secondary\"},[(_vm.minSoCActive)?_c('span',[_c('fa-icon',{staticClass:\"text-muted mr-1\",attrs:{\"icon\":\"exclamation-circle\"}}),_vm._v(\" Mindestladung bis \"+_vm._s(_vm.minSoC)+\"% \")],1):_vm._e()]),(_vm.targetChargeEnabled)?_c('small',{class:{\n\t\t\tinvisible: !_vm.targetSoC,\n\t\t\t'text-primary': _vm.timerActive,\n\t\t\t'text-secondary': !_vm.timerActive,\n\t\t}},[_vm._v(\" \"+_vm._s(_vm.targetTimeLabel())+\" \"),_c('fa-icon',{staticClass:\"ml-1\",attrs:{\"icon\":\"clock\"}})],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tMindestladung bis {{ minSoC }}%\n\t\t\t \n\t\t \n\t\t\n\t\t\t{{ targetTimeLabel() }}\n\t\t\t \n\t\t \n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VehicleSubline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VehicleSubline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VehicleSubline.vue?vue&type=template&id=141bd8c3&\"\nimport script from \"./VehicleSubline.vue?vue&type=script&lang=js&\"\nexport * from \"./VehicleSubline.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t
\n\t\t\t{{ socTitle || \"Fahrzeug\" }}\n\t\t
\n\t\t
\n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vehicle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vehicle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Vehicle.vue?vue&type=template&id=1701d614&\"\nimport script from \"./Vehicle.vue?vue&type=script&lang=js&\"\nexport * from \"./Vehicle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 col-sm-3 col-lg-2 mt-3 offset-lg-4\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Leistung \"),(_vm.climater == 'heating')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"temperature-low\"}}):_vm._e(),(_vm.climater == 'cooling')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"temperature-high\"}}):_vm._e(),(_vm.climater == 'on')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"thermometer-half\"}}):_vm._e()],1),_c('h3',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.chargePower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.chargePower))+\"W\")])])]),_c('div',{staticClass:\"col-6 col-sm-3 col-lg-2 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Geladen\")]),_c('h3',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.chargedEnergy))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.chargedEnergy))+\"Wh\")])])]),(_vm.range >= 0)?_c('div',{staticClass:\"col-6 col-sm-3 col-lg-2 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Reichweite\")]),_c('h3',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(Math.round(_vm.range))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(\"km\")])])]):_c('div',{staticClass:\"col-6 col-sm-3 col-lg-2 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Dauer\")]),_c('h3',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmtShortDuration(_vm.chargeDuration))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtShortDurationUnit(_vm.chargeDuration)))])])]),(_vm.hasVehicle)?_c('div',{staticClass:\"col-6 col-sm-3 col-lg-2 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Restzeit\")]),_c('h3',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmtShortDuration(_vm.chargeEstimate))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtShortDurationUnit(_vm.chargeEstimate)))])])]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tLeistung\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{{ fmt(chargePower) }}\n\t\t\t\t\t{{ fmtUnit(chargePower) }}W \n\t\t\t\t \n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
Geladen
\n\t\t\t\t
\n\t\t\t\t\t{{ fmt(chargedEnergy) }}\n\t\t\t\t\t{{ fmtUnit(chargedEnergy) }}Wh \n\t\t\t\t \n\t\t\t
\n\n\t\t\t
= 0\">\n\t\t\t\t
Reichweite
\n\t\t\t\t
\n\t\t\t\t\t{{ Math.round(range) }}\n\t\t\t\t\tkm \n\t\t\t\t \n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
Dauer
\n\t\t\t\t
\n\t\t\t\t\t{{ fmtShortDuration(chargeDuration) }}\n\t\t\t\t\t{{ fmtShortDurationUnit(chargeDuration) }} \n\t\t\t\t \n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
Restzeit
\n\t\t\t\t
\n\t\t\t\t\t{{ fmtShortDuration(chargeEstimate) }}\n\t\t\t\t\t{{ fmtShortDurationUnit(chargeEstimate) }} \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadpointDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadpointDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadpointDetails.vue?vue&type=template&id=81677396&\"\nimport script from \"./LoadpointDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadpointDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t
{{ title || \"Ladepunkt\" }}
\n\t\t
\n\t\t\t{{ remoteDisabledSource }}: Adaptives PV-Laden deaktiviert\n\t\t
\n\t\t
\n\t\t\t{{ remoteDisabledSource }}: Deaktiviert\n\t\t
\n\n\t\t
\n\t\t\t \n\t\t\t \n\t\t
\n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loadpoint.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loadpoint.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loadpoint.vue?vue&type=template&id=4790eaa0&\"\nimport script from \"./Loadpoint.vue?vue&type=script&lang=js&\"\nexport * from \"./Loadpoint.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t
{{ siteTitle || \"Home\" }}
\n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\t 0\" :key=\"id + '_hr'\" />\n\t\t\t\t \n\t\t\t \n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Site.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Site.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Site.vue?vue&type=template&id=0358d391&\"\nimport script from \"./Site.vue?vue&type=script&lang=js&\"\nexport * from \"./Site.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
Willkommen bei evcc
\n\t\t\t\t\t
\n\t\t\t\t\t\tevcc ist dient zur flexiblen Ladesteuerung von Elektrofahrzeugen.\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tEs sieht aus, als wäre Dein evcc noch nicht konfiguriert. Um\n\t\t\t\t\t\tevcc zu konfigurieren sind die folgenden Schritte notwendig:\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tErzeugen einer Konfigurationsdatei mit Namen\n\t\t\t\t\t\t\tevcc.yaml. Die Standardkonfiguration\n\t\t\t\t\t\t\tevcc.dist.yaml kann dafür als Vorlage dienen (Download ).\n\t\t\t\t\t\t \n\t\t\t\t\t\tKonfiguration der Wallbox als chargers. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tKonfiguration des EVU Zählers und evtl. weiterer Zähler unter\n\t\t\t\t\t\t\tmeters.\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tKonfiguration des Netzanschlusses unter\n\t\t\t\t\t\t\tsite. In einer Site wird der Netzanschluss mit dem\n\t\t\t\t\t\t\tkonfigurierten EVU Zähler (meter) verbunden.\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tKonfiguration eines Ladepunktes unter\n\t\t\t\t\t\t\tloadpoints. In einem Ladepunkt wird die konfigurierte\n\t\t\t\t\t\t\tWallbox (charger) mit dem Ladepunkt verbunden.\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tStart von evcc mit der neu erstellten Konfiguration:\n\t\t\t\t\t\t\tevcc -c evcc.yaml\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
Minimale Beispielkonfiguration für evcc :
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n uri: localhost:7070 # Adresse für UI\n interval: 10s # Regelintervall\n meters:\n - name: evu-zähler\n type: ... # Detailkonfiguration des EVU Zählers\n - name: ladezähler\n type: ... # Detailkonfiguration des Ladezählers (optional)\n chargers:\n - name: wallbox\n type: ... # Detailkonfiguration der Wallbox\n site:\n title: Home\n meters:\n grid: evu-zähler # EVU Zähler\n loadpoints:\n - title: Ladepunkt # ui display name\n charger: wallbox # charger\n meters:\n charge: ladezähler # Ladezählers (optional)\n \n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tViel Spass mit evcc ! Bei Problemen kannst Du uns auf\n\t\t\t\t\t\tGitHub \n\t\t\t\t\t\terreichen.\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Main.vue?vue&type=template&id=5e3635d0&\"\nimport script from \"./Main.vue?vue&type=script&lang=js&\"\nexport * from \"./Main.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row mt-4 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(_vm.title || \"Home\"))])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Netzzähler: \"),(_vm.gridConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" PV Zähler: \"),(_vm.pvConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Batteriezähler: \"),(_vm.batteryConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])])]),_vm._l((_vm.loadpoints),function(loadpoint,id){return _c('div',{key:id,attrs:{\"loadpoint\":loadpoint,\"id\":'loadpoint-' + id}},[_c('div',{staticClass:\"row mt-4 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(loadpoint.title || \"Ladepunkt\"))])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Ladezähler: \"),(loadpoint.chargeConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Phasen: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.phases)+\"p\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Min. Strom: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.minCurrent)+\"A\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Max. Strom: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.maxCurrent)+\"A\")])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-md-8 h2\"},[_vm._m(0,true),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-6 py-3\"},[_vm._v(\" Modell: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.socTitle || \"—\"))])]),_c('div',{staticClass:\"col-6 py-3\"},[_vm._v(\" Kapazität: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.socCapacity)+\"kWh\")])])])])])])})],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row py-3 h2 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\"Fahrzeug\")])])}]\n\nexport { render, staticRenderFns }","\n\t\n\t\t\n\n\t\t
\n\t\t\t
\n\t\t\t\t
{{ title || \"Home\" }}
\n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\tNetzzähler:\n\t\t\t\t✓ \n\t\t\t\t— \n\t\t\t
\n\t\t\t
\n\t\t\t\tPV Zähler:\n\t\t\t\t✓ \n\t\t\t\t— \n\t\t\t
\n\t\t\t
\n\t\t\t\tBatteriezähler:\n\t\t\t\t✓ \n\t\t\t\t— \n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{{ loadpoint.title || \"Ladepunkt\" }}
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tLadezähler:\n\t\t\t\t\t✓ \n\t\t\t\t\t— \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tPhasen:\n\t\t\t\t\t{{ loadpoint.phases }}p \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tMin. Strom:\n\t\t\t\t\t{{ loadpoint.minCurrent }}A \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tMax. Strom:\n\t\t\t\t\t{{ loadpoint.maxCurrent }}A \n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Fahrzeug
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tModell:\n\t\t\t\t\t\t\t{{ loadpoint.socTitle || \"—\" }} \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tKapazität:\n\t\t\t\t\t\t\t{{ loadpoint.socCapacity }}kWh \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Config.vue?vue&type=template&id=63d7c897&\"\nimport script from \"./Config.vue?vue&type=script&lang=js&\"\nexport * from \"./Config.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import VueRouter from \"vue-router\";\nimport Vue from \"vue\";\nimport Main from \"./views/Main\";\nimport Config from \"./views/Config\";\n\nVue.use(VueRouter);\n\nconst routes = [\n { path: \"/\", component: Main },\n { path: \"/config\", component: Config },\n];\n\nexport default new VueRouter({\n routes,\n linkExactActiveClass: \"active\", // Bootstrap \n});\n","import \"../css/app.css\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"popper.js\";\nimport \"bootstrap\";\nimport Vue from \"vue\";\nimport axios from \"axios\";\nimport App from \"./views/App\";\nimport Toasts from \"./components/Toasts\";\nimport router from \"./router\";\nimport store from \"./store\";\n\nconst loc = window.location;\naxios.defaults.baseURL =\n loc.protocol + \"//\" + loc.hostname + (loc.port ? \":\" + loc.port : \"\") + loc.pathname + \"api\";\naxios.defaults.headers.post[\"Content-Type\"] = \"application/json\";\n\nwindow.toasts = new Vue({\n el: \"#toasts\",\n render: function (h) {\n return h(Toasts, { props: { items: this.items, count: this.count } });\n },\n data: {\n items: {},\n count: 0,\n },\n name: \"ToastsRoot\",\n methods: {\n raise: function (msg) {\n let found = false;\n Object.keys(this.items).forEach(function (k) {\n let m = this.items[k];\n if (m.type == msg.type && m.message == msg.message) {\n found = true;\n }\n }, this);\n if (!found) {\n msg.id = this.count++;\n Vue.set(this.items, msg.id, msg);\n }\n },\n error: function (msg) {\n msg.type = \"error\";\n this.raise(msg);\n },\n warn: function (msg) {\n msg.type = \"warn\";\n this.raise(msg);\n },\n remove: function (msg) {\n Vue.delete(this.items, msg.id);\n },\n },\n});\n\nnew Vue({\n el: \"#app\",\n router,\n data: { store },\n render: (h) => h(App),\n});\n\nwindow.setInterval(function () {\n axios.get(\"health\").catch(function (res) {\n res.message = \"Server unavailable\";\n window.toasts.error(res);\n });\n}, 5000);\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=5f0f38d1&scoped=true&lang=css&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/js/index.eb5cb609.js b/dist/js/index.eb5cb609.js
deleted file mode 100644
index a7a361839..000000000
--- a/dist/js/index.eb5cb609.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(function(t){function e(e){for(var s,n,o=e[0],l=e[1],c=e[2],u=0,m=[];u0?a("div",{staticClass:"mb-2 value"},[t._v(" Bezug "),a("fa-icon",{staticClass:"text-primary",attrs:{icon:"arrow-down"}})],1):a("div",{staticClass:"mb-2 value"},[t._v(" Einspeisung "),a("fa-icon",{staticClass:"text-primary",attrs:{icon:"arrow-up"}})],1),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.gridPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.gridPower))+"W")])])]):t._e(),t.pvConfigured?a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v(" Erzeugung "),a("fa-icon",{class:{"text-primary":t.pvPower>0,"text-muted":t.pvPower<=0},attrs:{icon:"sun"}})],1),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.pvPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.pvPower))+"W")])])]):t._e(),t.batteryConfigured?a("div",{staticClass:"d-md-block col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v(" Batterie "),a("fa-icon",{staticClass:"text-primary",attrs:{icon:t.batteryIcon}})],1),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.batteryPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.batteryPower))+"W")]),a("small",{staticClass:"text-muted"},[t._v("/")]),t._v(" "+t._s(t.batterySoC)+" "),a("small",{staticClass:"text-muted"},[t._v("%")])])]):t._e()])},yt=[],St={data:function(){return{fmtLimit:100,fmtDigits:1}},methods:{round:function(t,e){var a=10**e;return(Math.round(t*a)/a).toFixed(e)},fmt:function(t){return void 0===t||null===t?0:(t=Math.abs(t),t>=this.fmtLimit?this.round(t/1e3,this.fmtDigits):this.round(t,0))},fmtUnit:function(t){return Math.abs(t)>=this.fmtLimit?"k":""},fmtDuration:function(t){if(t<=0||null==t)return"—";var e="0"+t%60,a="0"+Math.floor(t/60)%60,s=""+Math.floor(t/3600);return s.length<2&&(s="0"+s),s+":"+a.substr(-2)+":"+e.substr(-2)},fmtShortDuration:function(t){if(t<=0||null==t)return"—";var e,a=Math.floor(t/60)%60,s=Math.floor(t/3600);if(s>=1)a="0"+a,e=s+":"+a.substr(-2);else{var i="0"+t%60;e=a+":"+i.substr(-2)}return e},fmtShortDurationUnit:function(t){if(t<=0||null==t)return"";var e=Math.floor(t/3600);return e>=1?"h":"m"},fmtAbsoluteDate:function(t){return new Intl.DateTimeFormat("de-DE",{weekday:"short",hour:"numeric",minute:"numeric"}).format(t)},fmtRelativeTime:function(t){var e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3},a=new Intl.RelativeTimeFormat("de",{numeric:"auto",style:"narrow"}),s=(t,s=new Date)=>{var i=t-s;for(var r in e)if(Math.abs(i)>e[r]||"second"==r)return a.format(Math.round(i/e[r]),r)};return s(t)}}};const xt=20,kt=["battery-empty","battery-quarter","battery-half","battery-three-quarters","battery-full"];var Mt={name:"SiteDetails",props:{gridConfigured:Boolean,gridPower:Number,pvConfigured:Boolean,pvPower:Number,batteryConfigured:Boolean,batteryPower:Number,batterySoC:Number},data:function(){return{iconIdx:0}},mixins:[St],computed:{batteryIcon:function(){return Math.abs(this.batteryPower){this.batteryPower>xt?--this.iconIdx<0&&(this.iconIdx=kt.length-1):this.batteryPower=kt.length&&(this.iconIdx=0)},1e3)}},Dt=Mt,Tt=Object(B["a"])(Dt,wt,yt,!1,null,null,null),Lt=Tt.exports,Pt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[t.multi?a("div",{staticClass:"row"},[a("div",{staticClass:"col-12 col-md-4 d-md-flex mt-3 mt-md-5 align-items-end"},[a("span",{staticClass:"h1 align-bottom"},[t._v(t._s(t.title||"Ladepunkt"))])]),a("div",{staticClass:"col-12 col-md-8 d-none d-md-block mt-3 mt-md-5"},[a("LoadpointDetails",t._b({},"LoadpointDetails",t.details,!1))],1),a("div",{staticClass:"col-12 d-md-none"},[a("div",{staticClass:"row mt-3 pb-3 bg-light"},[a("div",{staticClass:"col-12 mt-3"},[a("Mode",{staticClass:"w-100",attrs:{mode:t.mode,pvConfigured:t.pvConfigured},on:{updated:t.setTargetMode}})],1),t.hasTargetSoC?a("div",{staticClass:"col-12 mt-3"},[a("Soc",{staticClass:"w-100",attrs:{soc:t.targetSoC,levels:t.socLevels},on:{updated:t.setTargetSoC}})],1):t._e()])])]):t._e(),t.multi?t._e():a("div",{staticClass:"row d-none d-md-flex mt-5 py-3 pb-4 text-center bg-light"},[a("div",{staticClass:"mt-3",class:{"col-md-6":t.hasTargetSoC,"col-md-12":!t.hasTargetSoC}},[a("Mode",{attrs:{mode:t.mode,pvConfigured:t.pvConfigured,caption:!0},on:{updated:t.setTargetMode}})],1),t.hasTargetSoC?a("div",{staticClass:"col-md-6 mt-3"},[a("Soc",{attrs:{soc:t.targetSoC,levels:t.socLevels,caption:!0},on:{updated:t.setTargetSoC}})],1):t._e()]),t.multi?t._e():a("div",{staticClass:"row d-md-none mt-2 pb-3 bg-light"},[a("div",{staticClass:"col-12 mt-3"},[a("Mode",{staticClass:"w-100",attrs:{mode:t.mode,pvConfigured:t.pvConfigured},on:{updated:t.setTargetMode}})],1),t.hasTargetSoC?a("div",{staticClass:"col-12 mt-3"},[a("Soc",{staticClass:"w-100",attrs:{soc:t.targetSoC,levels:t.socLevels},on:{updated:t.setTargetSoC}})],1):t._e()]),t.multi?t._e():a("div",{staticClass:"row"},[a("div",{staticClass:"col-12 col-md-4 d-none d-md-flex mt-3 mt-md-5"},[a("span",{staticClass:"h1"},[t._v(t._s(t.title||"Ladepunkt"))])]),t.remoteDisabled?a("div",{staticClass:"col-12 col-md-8 d-flex d-md-flex mt-3 mt-md-5 pt-3"},[a("h5",{staticClass:"w-100"},["soft"==t.remoteDisabled?a("span",{staticClass:"badge badge-warning w-100"},[t._v(" "+t._s(t.remoteDisabledSource)+": Adaptives PV-Laden deaktiviert ")]):t._e(),"hard"==t.remoteDisabled?a("span",{staticClass:"badge badge-danger w-100"},[t._v(" "+t._s(t.remoteDisabledSource)+": Deaktiviert ")]):t._e()])]):t._e()]),a("div",{staticClass:"row border-bottom d-none d-md-block"}),a("div",{staticClass:"row"},[a("div",{staticClass:"col-12 col-md-4 mt-3 mb-3 mb-md-0"},[a("Vehicle",t._b({},"Vehicle",t.vehicle,!1))],1),t.multi?a("div",{staticClass:"col-12 col-md-4 d-none d-md-block mt-3"},[a("div",{staticClass:"mb-2 pb-1"},[t._v("Modus")]),a("Mode",{staticClass:"btn-group-sm",attrs:{mode:t.mode,pvConfigured:t.pvConfigured},on:{updated:t.setTargetMode}})],1):t._e(),t.multi&&t.hasTargetSoC?a("div",{staticClass:"col-12 col-md-4 d-none d-md-block mt-3"},[a("div",{staticClass:"mb-2 pb-1"},[t._v("Ladeziel")]),a("Soc",{staticClass:"btn-group-sm",attrs:{soc:t.targetSoC,levels:t.socLevels},on:{updated:t.setTargetSoC}})],1):t._e(),t.multi?t._e():a("div",{staticClass:"col-md-8 d-none d-md-block"},[a("LoadpointDetails",t._b({},"LoadpointDetails",t.details,!1))],1),a("div",{staticClass:"col-12 d-md-none"},[a("LoadpointDetails",t._b({},"LoadpointDetails",t.details,!1))],1)])])},Nt=[],Et=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"btn-group btn-group-toggle bg-white shadow-none"},[t.caption?a("label",{staticClass:"btn btn-outline-primary disabled caption font-weight-bold"},[t._v(" Ladeziel ")]):t._e(),t._l(t.levelsOrDefault,(function(e,s){return a("label",{key:s,staticClass:"btn btn-outline-primary",class:{active:t.soc==e,first:!t.caption&&0==s},attrs:{level:e,id:s}},[a("input",{attrs:{type:"radio"},domProps:{value:e},on:{click:function(a){return t.setTargetSoC(e)}}}),t._v(t._s(e)+"% ")])}))],2)},At=[],Bt={name:"Soc",props:{soc:Number,caption:Boolean,levels:Array},computed:{levelsOrDefault:function(){return null==this.levels||0==this.levels.length?[]:this.levels}},methods:{setTargetSoC:function(t){this.$emit("updated",t)}}},zt=Bt,Vt=Object(B["a"])(zt,Et,At,!1,null,null,null),jt=Vt.exports,Ot=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"btn-group btn-group-toggle bg-white shadow-none"},[t.caption?a("label",{staticClass:"btn btn-outline-primary value disabled caption font-weight-bold"},[t._v(" Modus ")]):t._e(),a("label",{staticClass:"btn btn-outline-primary",class:{active:"off"==t.mode,first:!t.caption}},[a("input",{attrs:{type:"radio",value:"off"},on:{click:function(e){return t.setTargetMode("off")}}}),t._v("Stop ")]),a("label",{staticClass:"btn btn-outline-primary",class:{active:"now"==t.mode}},[a("input",{attrs:{type:"radio",value:"now"},on:{click:function(e){return t.setTargetMode("now")}}}),t._v("Sofort ")]),t.pvConfigured?a("label",{staticClass:"btn btn-outline-primary",class:{active:"minpv"==t.mode}},[a("input",{attrs:{type:"radio",value:"minpv"},on:{click:function(e){return t.setTargetMode("minpv")}}}),a("span",{staticClass:"d-inline d-lg-none"},[t._v("Min")]),a("span",{staticClass:"d-none d-lg-inline"},[t._v("Min + PV")])]):t._e(),t.pvConfigured?a("label",{staticClass:"btn btn-outline-primary",class:{active:"pv"==t.mode}},[a("input",{attrs:{type:"radio",value:"pv"},on:{click:function(e){return t.setTargetMode("pv")}}}),a("span",{staticClass:"d-inline d-md-none"},[t._v("PV")]),a("span",{staticClass:"d-none d-md-inline"},[t._v("Nur PV")])]):t._e()])},$t=[],Ut={name:"Mode",props:{mode:String,pvConfigured:Boolean,caption:Boolean},methods:{setTargetMode:function(t){this.$emit("updated",t)}}},It=Ut,Wt=Object(B["a"])(It,Ot,$t,!1,null,null,null),Ht=Wt.exports,Rt=function(){var t,e,a,s=this,i=s.$createElement,r=s._self._c||i;return r("div",[r("div",{staticClass:"mb-2 pb-1"},[s._v(" "+s._s(s.socTitle||"Fahrzeug")+" ")]),r("div",{staticClass:"soc-bar"},[r("div",{staticClass:"progress small"},[r("div",{staticClass:"progress-bar",class:(t={"progress-bar-striped":s.charging,"progress-bar-animated":s.charging},t[s.progressColor]=!0,t),style:{width:s.socChargeDisplayWidth+"%"},attrs:{role:"progressbar"}},[s._v(" "+s._s(s.socChargeDisplayValue)+" ")]),s.remainingSoCWidth>0?r("div",{staticClass:"progress-bar",class:(e={"progress-bar-striped":s.charging,"progress-bar-animated":s.charging},e[s.progressColor]=!0,e["bg-muted"]=!0,e),style:{width:s.remainingSoCWidth+"%"},attrs:{role:"progressbar"}}):s._e(),s.socMarker?r("div",{staticClass:"soc-marker",class:(a={},a[s.progressColor]=!0,a),style:{left:s.socMarker+"%"}}):s._e()])]),s.markerLabel()?r("small",{staticClass:"subline my-2 text-secondary"},[s.minSoCActive?r("fa-icon",{staticClass:"text-muted mr-1",attrs:{icon:"exclamation-circle"}}):s.targetChargeEnabled?r("fa-icon",{staticClass:"text-muted mr-1",attrs:{icon:"clock"}}):s._e(),s._v(" "+s._s(s.markerLabel())+" ")],1):s._e()])},Ft=[],Kt={name:"Vehicle",props:{socTitle:String,connected:Boolean,hasVehicle:Boolean,socCharge:Number,enabled:Boolean,charging:Boolean,minSoC:Number,timerActive:Boolean,timerSet:Boolean,targetTime:String,targetSoC:Number},computed:{socChargeDisplayWidth:function(){return this.hasVehicle&&this.socCharge>=0?this.socCharge:100},socChargeDisplayValue:function(){if(!this.hasVehicle||!this.socCharge||this.socCharge<0){let t="getrennt";return this.charging?t="lädt":this.enabled?t="bereit":this.connected&&(t="verbunden"),t}let t=this.socCharge;return t>=10&&(t+="%"),t},socMarker:function(){return this.minSoCActive?this.minSoC:this.targetSoC>this.socCharge?this.targetSoC:null},progressColor:function(){return this.connected?this.minSoCActive?"bg-danger":this.enabled?"bg-primary":"bg-secondary":"bg-light border"},minSoCActive:function(){return this.minSoC>0&&this.socChargethis.socCharge?this.targetSoC-this.socCharge:null}},methods:{markerLabel:function(){if(!this.connected)return null;if(this.minSoCActive)return`Mindestladung bis ${this.socMarker}%`;if(this.targetChargeEnabled){const t=Date.parse(this.targetTime);return this.timerActive?`Lädt ${this.fmtRelativeTime(t)} bis ${this.socMarker}%`:`Geplant bis ${this.fmtAbsoluteDate(t)} bis ${this.socMarker}%`}return null}},mixins:[St]},Zt=Kt,Gt=(a("3362"),Object(B["a"])(Zt,Rt,Ft,!1,null,"b9f97a64",null)),Jt=Gt.exports,qt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"row"},[a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v(" Leistung "),"heating"==t.climater?a("fa-icon",{staticClass:"text-primary ml-1",attrs:{icon:"temperature-low"}}):t._e(),"cooling"==t.climater?a("fa-icon",{staticClass:"text-primary ml-1",attrs:{icon:"temperature-high"}}):t._e(),"on"==t.climater?a("fa-icon",{staticClass:"text-primary ml-1",attrs:{icon:"thermometer-half"}}):t._e()],1),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.chargePower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.chargePower))+"W")])])]),a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Geladen")]),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.chargedEnergy))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.chargedEnergy))+"Wh")])])]),t.range>=0?a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Reichweite")]),a("h2",{staticClass:"value"},[t._v(" "+t._s(Math.round(t.range))+" "),a("small",{staticClass:"text-muted"},[t._v("km")])])]):a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Dauer")]),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmtShortDuration(t.chargeDuration))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtShortDurationUnit(t.chargeDuration)))])])]),t.hasVehicle?a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Restzeit")]),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmtShortDuration(t.chargeEstimate))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtShortDurationUnit(t.chargeEstimate)))])])]):t._e()])},Qt=[],Xt={name:"LoadpointDetails",props:{chargedEnergy:Number,chargeDuration:Number,chargeEstimate:Number,chargePower:Number,climater:String,hasVehicle:Boolean,range:Number},mixins:[St]},Yt=Xt,te=Object(B["a"])(Yt,qt,Qt,!1,null,null,null),ee=te.exports,ae={methods:{collectProps:function(t){let e={};for(var a in t.props)e[a]=this[a];return e}}},se={name:"Loadpoint",props:{id:Number,multi:Boolean,pvConfigured:Boolean,title:String,mode:String,targetSoC:Number,socLevels:Array,remoteDisabled:Boolean,remoteDisabledSource:String,chargeDuration:Number,charging:Boolean,connected:Boolean,enabled:Boolean,socTitle:String,socCharge:Number,minSoC:Number,timerSet:Boolean,timerActive:Boolean,targetTime:String,chargePower:Number,chargedEnergy:Number,hasVehicle:Boolean,climater:String,range:Number,chargeEstimate:Number},components:{LoadpointDetails:ee,Soc:jt,Mode:Ht,Vehicle:Jt},mixins:[St,ae],data:function(){return{tickerHandle:null,chargeDurationDisplayed:null}},computed:{details:function(){return this.collectProps(ee)},vehicle:function(){return this.collectProps(Jt)},hasTargetSoC:function(){return null!=this.socLevels&&this.socLevels.length>0}},watch:{chargeDuration:function(){window.clearInterval(this.tickerHandle),this.charging&&this.chargeDuration>=0&&(this.chargeDurationDisplayed=this.chargeDuration,this.tickerHandle=window.setInterval(function(){this.chargeDurationDisplayed+=1}.bind(this),1e3))}},methods:{api:function(t){return"loadpoints/"+this.id+"/"+t},setTargetMode:function(t){r.a.post(this.api("mode")+"/"+t).then(function(t){this.mode=t.data.mode}.bind(this)).catch(window.toasts.error)},setTargetSoC:function(t){r.a.post(this.api("targetsoc")+"/"+t).then(function(t){this.targetSoC=t.data.targetSoC}.bind(this)).catch(window.toasts.error)}},destroyed:function(){window.clearInterval(this.tickerHandle)}},ie=se,re=Object(B["a"])(ie,Pt,Nt,!1,null,null,null),ne=re.exports,oe={name:"Site",props:{siteTitle:String,loadpoints:Array,gridConfigured:Boolean,gridPower:Number,pvConfigured:Boolean,pvPower:Number,batteryConfigured:Boolean,batteryPower:Number,batterySoC:Number},components:{SiteDetails:Lt,Loadpoint:ne},mixins:[St,ae],computed:{details:function(){return this.collectProps(Lt)},multi:function(){return this.loadpoints.length>1}}},le=oe,ce=Object(B["a"])(le,Ct,_t,!1,null,null,null),de=ce.exports,ue={name:"Main",components:{Site:de},data:function(){return this.$root.$data.store},computed:{configured:function(){const t=window.evcc.configured;return t==window.evcc.configured||!isNaN(parseInt(t))&&parseInt(t)>0}}},me=ue,ve=Object(B["a"])(me,gt,bt,!1,null,null,null),pe=ve.exports,he=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"container"},[a("div",{staticClass:"row mt-4 border-bottom"},[a("div",{staticClass:"col-12"},[a("p",{staticClass:"h1"},[t._v(t._s(t.title||"Home"))])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Netzzähler: "),t.gridConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" PV Zähler: "),t.pvConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Batteriezähler: "),t.batteryConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])])]),t._l(t.loadpoints,(function(e,s){return a("div",{key:s,attrs:{loadpoint:e,id:"loadpoint-"+s}},[a("div",{staticClass:"row mt-4 border-bottom"},[a("div",{staticClass:"col-12"},[a("p",{staticClass:"h1"},[t._v(t._s(e.title||"Ladepunkt"))])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Ladezähler: "),e.chargeConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Phasen: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.phases)+"p")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Min. Strom: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.minCurrent)+"A")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Max. Strom: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.maxCurrent)+"A")])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-md-8 h2"},[t._m(0,!0),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-6 py-3"},[t._v(" Modell: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.socTitle||"—"))])]),a("div",{staticClass:"col-6 py-3"},[t._v(" Kapazität: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.socCapacity)+"kWh")])])])])])])}))],2)},fe=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"row py-3 h2 border-bottom"},[a("div",{staticClass:"col-12"},[t._v("Fahrzeug")])])}],ge={name:"Config",data:function(){return this.$root.$data.store.state}},be=ge,Ce=Object(B["a"])(be,he,fe,!1,null,null,null),_e=Ce.exports;s["a"].use(ft["a"]);const we=[{path:"/",component:pe},{path:"/config",component:_e}];var ye=new ft["a"]({routes:we,linkExactActiveClass:"active"});const Se=window.location;r.a.defaults.baseURL=Se.protocol+"//"+Se.hostname+(Se.port?":"+Se.port:"")+Se.pathname+"api",r.a.defaults.headers.post["Content-Type"]="application/json",window.toasts=new s["a"]({el:"#toasts",render:function(t){return t(ht,{props:{items:this.items,count:this.count}})},data:{items:{},count:0},name:"ToastsRoot",methods:{raise:function(t){let e=!1;Object.keys(this.items).forEach((function(a){let s=this.items[a];s.type==t.type&&s.message==t.message&&(e=!0)}),this),e||(t.id=this.count++,s["a"].set(this.items,t.id,t))},error:function(t){t.type="error",this.raise(t)},warn:function(t){t.type="warn",this.raise(t)},remove:function(t){s["a"].delete(this.items,t.id)}}}),new s["a"]({el:"#app",router:ye,data:{store:Q},render:t=>t(et)}),window.setInterval((function(){r.a.get("health").catch((function(t){t.message="Server unavailable",window.toasts.error(t)}))}),5e3)},b19f:function(t,e,a){},f06b:function(t,e,a){"use strict";a("34a4")},fa11:function(t,e,a){"use strict";a("3ce1")}});
-//# sourceMappingURL=index.eb5cb609.js.map
\ No newline at end of file
diff --git a/dist/js/index.eb5cb609.js.map b/dist/js/index.eb5cb609.js.map
deleted file mode 100644
index adc630580..000000000
--- a/dist/js/index.eb5cb609.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/components/Vehicle.vue?68c3","webpack:///./assets/js/components/Version.vue?0cc7","webpack:///./assets/js/views/App.vue?dd49","webpack:///./assets/js/icons.js","webpack:///./assets/js/components/Logo.vue?d930","webpack:///assets/js/components/Logo.vue","webpack:///./assets/js/components/Logo.vue?6eb9","webpack:///./assets/js/components/Logo.vue","webpack:///./assets/js/components/Footer.vue?d8b1","webpack:///./assets/js/components/Version.vue?da13","webpack:///assets/js/components/Version.vue","webpack:///./assets/js/components/Version.vue?1d82","webpack:///./assets/js/components/Version.vue","webpack:///assets/js/components/Footer.vue","webpack:///./assets/js/components/Footer.vue?9347","webpack:///./assets/js/components/Footer.vue","webpack:///./assets/js/store.js","webpack:///assets/js/views/App.vue","webpack:///./assets/js/views/App.vue?9ed2","webpack:///./assets/js/views/App.vue","webpack:///./assets/js/components/Toasts.vue?4f97","webpack:///./assets/js/components/ToastMessage.vue?3352","webpack:///assets/js/components/ToastMessage.vue","webpack:///./assets/js/components/ToastMessage.vue?19ff","webpack:///./assets/js/components/ToastMessage.vue","webpack:///assets/js/components/Toasts.vue","webpack:///./assets/js/components/Toasts.vue?c63e","webpack:///./assets/js/components/Toasts.vue","webpack:///./assets/js/views/Main.vue?05de","webpack:///./assets/js/components/Site.vue?fdec","webpack:///./assets/js/components/SiteDetails.vue?f10d","webpack:///./assets/js/mixins/formatter.js","webpack:///assets/js/components/SiteDetails.vue","webpack:///./assets/js/components/SiteDetails.vue?3811","webpack:///./assets/js/components/SiteDetails.vue","webpack:///./assets/js/components/Loadpoint.vue?3aee","webpack:///./assets/js/components/Soc.vue?b789","webpack:///assets/js/components/Soc.vue","webpack:///./assets/js/components/Soc.vue?8da7","webpack:///./assets/js/components/Soc.vue","webpack:///./assets/js/components/Mode.vue?703f","webpack:///assets/js/components/Mode.vue","webpack:///./assets/js/components/Mode.vue?fbb9","webpack:///./assets/js/components/Mode.vue","webpack:///./assets/js/components/Vehicle.vue?f046","webpack:///assets/js/components/Vehicle.vue","webpack:///./assets/js/components/Vehicle.vue?5364","webpack:///./assets/js/components/Vehicle.vue","webpack:///./assets/js/components/LoadpointDetails.vue?c64b","webpack:///assets/js/components/LoadpointDetails.vue","webpack:///./assets/js/components/LoadpointDetails.vue?3057","webpack:///./assets/js/components/LoadpointDetails.vue","webpack:///./assets/js/mixins/collector.js","webpack:///assets/js/components/Loadpoint.vue","webpack:///./assets/js/components/Loadpoint.vue?8199","webpack:///./assets/js/components/Loadpoint.vue","webpack:///assets/js/components/Site.vue","webpack:///./assets/js/components/Site.vue?af05","webpack:///./assets/js/components/Site.vue","webpack:///assets/js/views/Main.vue","webpack:///./assets/js/views/Main.vue?0821","webpack:///./assets/js/views/Main.vue","webpack:///./assets/js/views/Config.vue?140b","webpack:///assets/js/views/Config.vue","webpack:///./assets/js/views/Config.vue?db1d","webpack:///./assets/js/views/Config.vue","webpack:///./assets/js/router.js","webpack:///./assets/js/app.js","webpack:///./assets/js/components/Footer.vue?41d1","webpack:///./assets/js/views/App.vue?586e"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_m","version","staticRenderFns","_v","add","faArrowDown","faArrowUp","faBatteryEmpty","faBatteryFull","faBatteryHalf","faBatteryQuarter","faBatteryThreeQuarters","faChevronDown","faChevronUp","faClock","faExclamationTriangle","faLeaf","faSun","faTemperatureHigh","faTemperatureLow","faThermometerHalf","faHeart","faGift","faBox","faExclamationCircle","component","_b","on","$event","preventDefault","showModal","_s","available","releaseNotesUrl","installed","updateStarted","closeModal","style","width","uploadProgress","updateStatus","uploadMessage","domProps","releaseNotes","update","_e","props","String","hasUpdater","Boolean","Number","modalActive","methods","async","a","post","e","computed","newVersionAvailable","components","Version","setProperty","obj","prop","set","Array","isArray","store","state","loadpoints","msg","keys","forEach","k","toasts","message","split","Logo","Footer","compact","$root","$data","installedVersion","evcc","connect","loc","location","protocol","uri","hostname","port","pathname","ws","WebSocket","self","onerror","close","onclose","setTimeout","onmessage","evt","JSON","parse","error","availableVersion","created","urlParams","URLSearchParams","search","staticStyle","_l","item","id","type","status","mounted","toast","remove","ToastMessage","items","siteTitle","details","multi","loadpoint","pvConfigured","gridPower","fmt","fmtUnit","class","pvPower","batteryIcon","batteryPower","batterySoC","fmtLimit","fmtDigits","round","num","precision","base","Math","toFixed","val","undefined","abs","fmtDuration","seconds","minutes","floor","hours","substr","fmtShortDuration","tm","fmtShortDurationUnit","fmtAbsoluteDate","date","Intl","DateTimeFormat","weekday","hour","minute","format","fmtRelativeTime","units","year","month","day","second","rtf","RelativeTimeFormat","numeric","getRelativeTime","d1","d2","Date","elapsed","u","limit","icons","gridConfigured","batteryConfigured","iconIdx","mixins","formatter","setInterval","title","setTargetMode","targetSoC","socLevels","setTargetSoC","hasTargetSoC","remoteDisabled","remoteDisabledSource","vehicle","level","active","soc","first","caption","levels","levelsOrDefault","$emit","_obj","_obj$1","_obj$2","socTitle","charging","progressColor","socChargeDisplayWidth","socChargeDisplayValue","remainingSoCWidth","left","socMarker","markerLabel","connected","hasVehicle","socCharge","enabled","minSoC","timerActive","timerSet","targetTime","chargeStatus","minSoCActive","targetChargeEnabled","targetDate","climater","chargePower","chargedEnergy","range","chargeDuration","chargeEstimate","collectProps","LoadpointDetails","Soc","Mode","Vehicle","collector","tickerHandle","chargeDurationDisplayed","watch","clearInterval","api","func","then","response","catch","destroyed","SiteDetails","Loadpoint","Site","configured","isNaN","parseInt","phases","minCurrent","maxCurrent","socCapacity","use","routes","path","Main","Config","linkExactActiveClass","defaults","baseURL","headers","el","h","Toasts","count","raise","found","warn","delete","router","App","res"],"mappings":"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","file":"js/index.eb5cb609.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vehicle.vue?vue&type=style&index=0&id=b9f97a64&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=style&index=0&id=a6ded36e&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app d-flex flex-column justify-content-between\"},[_c('div',[_c('nav',{staticClass:\"navbar navbar-expand-lg navbar-dark bg-dark\"},[_c('div',{staticClass:\"container\"},[_c('a',{staticClass:\"navbar-brand\",attrs:{\"href\":\"https://github.com/andig/evcc\"}},[_c('Logo',{staticClass:\"logo\"})],1),_vm._m(0),_vm._m(1)])]),_c('router-view')],1),_c('Footer',{attrs:{\"version\":_vm.version}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"navbar-toggler\",attrs:{\"type\":\"button\",\"data-toggle\":\"collapse\",\"data-target\":\"#navbarNavAltMarkup\",\"aria-controls\":\"navbarNavAltMarkup\",\"aria-expanded\":\"false\",\"aria-label\":\"Toggle navigation\"}},[_c('span',{staticClass:\"navbar-toggler-icon\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"collapse navbar-collapse\",attrs:{\"id\":\"navbarNavAltMarkup\"}},[_c('div',{staticClass:\"navbar-nav mr-auto\"}),_c('div',{staticClass:\"navbar-nav\"},[_c('a',{staticClass:\"nav-item nav-link\",attrs:{\"href\":\"https://github.com/andig/evcc/discussions\",\"target\":\"_blank\"}},[_vm._v(\" Support \")])])])}]\n\nexport { render, staticRenderFns }","import Vue from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\n\nimport { faArrowDown } from \"@fortawesome/free-solid-svg-icons/faArrowDown\";\nimport { faArrowUp } from \"@fortawesome/free-solid-svg-icons/faArrowUp\";\nimport { faBatteryEmpty } from \"@fortawesome/free-solid-svg-icons/faBatteryEmpty\";\nimport { faBatteryFull } from \"@fortawesome/free-solid-svg-icons/faBatteryFull\";\nimport { faBatteryHalf } from \"@fortawesome/free-solid-svg-icons/faBatteryHalf\";\nimport { faBatteryQuarter } from \"@fortawesome/free-solid-svg-icons/faBatteryQuarter\";\nimport { faBatteryThreeQuarters } from \"@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters\";\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons/faChevronDown\";\nimport { faChevronUp } from \"@fortawesome/free-solid-svg-icons/faChevronUp\";\nimport { faClock } from \"@fortawesome/free-solid-svg-icons/faClock\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons/faExclamationTriangle\";\nimport { faLeaf } from \"@fortawesome/free-solid-svg-icons/faLeaf\";\nimport { faSun } from \"@fortawesome/free-solid-svg-icons/faSun\";\nimport { faTemperatureHigh } from \"@fortawesome/free-solid-svg-icons/faTemperatureHigh\";\nimport { faTemperatureLow } from \"@fortawesome/free-solid-svg-icons/faTemperatureLow\";\nimport { faThermometerHalf } from \"@fortawesome/free-solid-svg-icons/faThermometerHalf\";\nimport { faHeart } from \"@fortawesome/free-solid-svg-icons/faHeart\";\nimport { faGift } from \"@fortawesome/free-solid-svg-icons/faGift\";\nimport { faBox } from \"@fortawesome/free-solid-svg-icons/faBox\";\nimport { faExclamationCircle } from \"@fortawesome/free-solid-svg-icons/faExclamationCircle\";\n\nlibrary.add(\n faArrowDown,\n faArrowUp,\n faBatteryEmpty,\n faBatteryFull,\n faBatteryHalf,\n faBatteryQuarter,\n faBatteryThreeQuarters,\n faChevronDown,\n faChevronUp,\n faClock,\n faExclamationTriangle,\n faLeaf,\n faSun,\n faTemperatureHigh,\n faTemperatureLow,\n faThermometerHalf,\n faHeart,\n faGift,\n faBox,\n faExclamationCircle\n);\n\nVue.component(\"fa-icon\", FontAwesomeIcon);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"viewBox\":\"0 0 122 35\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"stroke-linejoin\":\"round\",\"stroke-miterlimit\":\"2\"}},[_c('path',{attrs:{\"d\":\"M13.082 29.071a12.384 12.384 0 01-9-3.42 12.192 12.192 0 01-3.54-9.12v-.64a15.394 15.394 0 011.47-6.83 10.825 10.825 0 014.17-4.64 11.64 11.64 0 016.15-1.63 10.45 10.45 0 018.21 3.26c2 2.194 3 5.297 3 9.31v2.76H7.382a6.348 6.348 0 002 4 5.997 5.997 0 004.16 1.49 7.305 7.305 0 006.1-2.84l3.31 3.73a10 10 0 01-4.13 3.39 13.309 13.309 0 01-5.74 1.18zm-.77-20.84a4.216 4.216 0 00-3.26 1.37 7.141 7.141 0 00-1.6 3.91h9.39v-.55a5.005 5.005 0 00-1.22-3.49 4.304 4.304 0 00-3.31-1.24zM36.452 20.331l4.7-17.09h7l-8.48 25.36h-6.44l-8.52-25.36h7l4.74 17.09zM85.542 23.611a4.444 4.444 0 003-1 3.638 3.638 0 001.22-2.75h6.32a8.668 8.668 0 01-1.4 4.73 9.145 9.145 0 01-3.79 3.3 11.736 11.736 0 01-5.29 1.19 10.912 10.912 0 01-8.54-3.46c-2.087-2.3-3.13-5.483-3.13-9.55v-.45c0-3.9 1.033-7.016 3.1-9.35a10.868 10.868 0 018.51-3.5c2.791-.134 5.524.84 7.6 2.71a9.626 9.626 0 012.9 7.21h-6.3a4.663 4.663 0 00-1.2-3.22 4.005 4.005 0 00-3.08-1.24 4.068 4.068 0 00-3.56 1.73c-.8 1.15-1.2 3-1.2 5.6v.7c0 2.61.39 4.49 1.19 5.63a4.092 4.092 0 003.65 1.72zM110.422 23.611a4.454 4.454 0 003-1 3.63 3.63 0 001.21-2.75h6.33a8.668 8.668 0 01-1.4 4.73 9.143 9.143 0 01-3.73 3.3 11.76 11.76 0 01-5.29 1.18 10.912 10.912 0 01-8.54-3.46c-2.087-2.3-3.13-5.483-3.13-9.55v-.45c0-3.9 1.033-7.016 3.1-9.35a10.85 10.85 0 018.57-3.49 10.575 10.575 0 017.6 2.71 9.598 9.598 0 012.91 7.21h-6.33a4.651 4.651 0 00-1.21-3.22 4.492 4.492 0 00-6.64.49c-.8 1.15-1.21 3-1.21 5.6v.7c0 2.607.4 4.484 1.2 5.63a4.09 4.09 0 003.56 1.72z\",\"fill\":\"#fff\",\"fill-rule\":\"nonzero\"}}),_c('path',{attrs:{\"d\":\"M58.462.751h9.22l-6.14 12.3h6.15l-11.53 21.51 2.3-15.36h-7.68l7.68-18.45z\",\"fill\":\"#0fdd42\",\"fill-rule\":\"nonzero\"}}),_c('path',{attrs:{\"fill\":\"none\",\"d\":\"M-24.458-22.109h170v76h-170z\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t \n\t\t \n\t\t \n\t \n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Logo.vue?vue&type=template&id=14334b81&\"\nimport script from \"./Logo.vue?vue&type=script&lang=js&\"\nexport * from \"./Logo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"py-3 py-md-5 mt-3 mt-md-5 border-top\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('Version',_vm._b({},'Version',_vm.version,false))],1),_c('div',{staticClass:\"col-6 text-right\"},[_c('small',{staticClass:\"text-black\"},[_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://github.com/sponsors/andig\",\"target\":\"_blank\"}},[_c('fa-icon',{staticClass:\"icon mr-1\",attrs:{\"icon\":\"heart\"}}),_c('span',{staticClass:\"d-none d-sm-inline\"},[_vm._v(\"Projekt \")]),_vm._v(\"unterstützen \")],1)])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('small',{staticClass:\"text-black\"},[(_vm.newVersionAvailable)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.showModal($event)}}},[_c('fa-icon',{staticClass:\"icon mr-1\",attrs:{\"icon\":\"gift\"}}),_vm._v(\"Update\"),_c('span',{staticClass:\"d-none d-sm-inline\"},[_vm._v(\" verfügbar\")]),_vm._v(\": \"+_vm._s(_vm.available)+\" \")],1):_c('a',{attrs:{\"href\":_vm.releaseNotesUrl(_vm.installed),\"target\":\"_blank\"}},[_vm._v(\" Version \"+_vm._s(_vm.installed)+\" \")])]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.modalActive)?_c('div',{staticClass:\"dialog\",attrs:{\"id\":\"updateModal\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-dialog-centered modal-dialog-scrollable\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h4',{staticClass:\"modal-title font-weight-bold\"},[_vm._v(\"Update verfügbar\")]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.closeModal}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])]),_c('div',{staticClass:\"modal-body\"},[(_vm.updateStarted)?_c('div',[_c('p',[_vm._v(\"Nach der Aktualisierung wird evcc neu gestartet.\")]),_c('div',{staticClass:\"progress my-3\"},[_c('div',{staticClass:\"progress-bar progress-bar-striped progress-bar-animated\",style:({ width: _vm.uploadProgress + '%' }),attrs:{\"role\":\"progressbar\"}})]),_c('p',[_vm._v(_vm._s(_vm.updateStatus)+_vm._s(_vm.uploadMessage))])]):_c('div',[_c('p',[_c('small',[_vm._v(\"Aktuell installierte Version: \"+_vm._s(_vm.installed))])]),(_vm.releaseNotes)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.releaseNotes)}}):_c('p',[_vm._v(\" Keine Releasenotes verfügbar. Mehr Informationen zur neuen Version findest du \"),_c('a',{attrs:{\"href\":_vm.releaseNotesUrl(_vm.available)}},[_vm._v(\"hier\")]),_vm._v(\". \")])])]),_c('div',{staticClass:\"modal-footer d-flex justify-content-between\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.closeModal}},[_vm._v(\" Abbrechen \")]),_c('div',[(_vm.hasUpdater)?_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.update}},[(_vm.updateStarted)?_c('span',[_c('span',{staticClass:\"spinner-border spinner-border-sm\",attrs:{\"role\":\"status\",\"aria-hidden\":\"true\"}}),_vm._v(\" Akualisieren \")]):_c('span',[_vm._v(\"Jetzt aktualisieren\")])]):_c('a',{staticClass:\"btn btn-primary\",attrs:{\"href\":_vm.releaseNotesUrl(_vm.available)}},[_vm._v(\" Download \")])])])])])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t
\n\t\t\t\n\t\t\t\t Update\n\t\t\t\t\tverfügbar :\n\t\t\t\t{{ available }}\n\t\t\t \n\t\t\t\n\t\t\t\tVersion {{ installed }}\n\t\t\t \n\t\t \n\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Nach der Aktualisierung wird evcc neu gestartet.
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{{ updateStatus }}{{ uploadMessage }}
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tAktuell installierte Version: {{ installed }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tKeine Releasenotes verfügbar. Mehr Informationen zur neuen\n\t\t\t\t\t\t\t\t\tVersion findest du\n\t\t\t\t\t\t\t\t\thier .\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t
\n \n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Version.vue?vue&type=template&id=a6ded36e&scoped=true&\"\nimport script from \"./Version.vue?vue&type=script&lang=js&\"\nexport * from \"./Version.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Version.vue?vue&type=style&index=0&id=a6ded36e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a6ded36e\",\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t \n \n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=5f0f38d1&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=5f0f38d1&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f0f38d1\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nfunction setProperty(obj, props, value) {\n const prop = props.shift();\n if (!obj[prop]) {\n Vue.set(obj, prop, {});\n }\n\n if (!props.length) {\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n obj[prop] = { ...obj[prop], ...value };\n } else {\n obj[prop] = value;\n }\n return;\n }\n\n setProperty(obj[prop], props, value);\n}\n\nconst store = {\n state: {\n loadpoints: [], // ensure array type\n },\n update: function (msg) {\n Object.keys(msg).forEach(function (k) {\n if (typeof window.toasts[k] === \"function\") {\n window.toasts[k]({ message: msg[k] });\n } else {\n setProperty(store.state, k.split(\".\"), msg[k]);\n }\n });\n },\n};\n\nexport default store;\n","\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\n\t\t\t
\n\t\t
\n\t\t
\n\t
\n \n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=459f11b2&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=459f11b2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"459f11b2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"4rem\",\"right\":\"0.5rem\"},attrs:{\"aria-atomic\":\"true\"}},_vm._l((_vm.items),function(item){return _c('ToastMessage',{key:item.id,attrs:{\"item\":item,\"id\":'message-id-' + item.id}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toast\",attrs:{\"data-delay\":\"10000\",\"data-autohide\":true}},[_c('div',{staticClass:\"toast-header\"},[(_vm.item.type != 'warn')?_c('strong',{staticClass:\"mr-auto\"},[_c('fa-icon',{staticClass:\"text-danger\",attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\" Error\")],1):_vm._e(),(_vm.item.type == 'warn')?_c('strong',{staticClass:\"mr-auto\"},[_c('fa-icon',{staticClass:\"text-warning\",attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\" Warning\")],1):_vm._e(),(_vm.item.status)?_c('small',[_vm._v(\"HTTP \"+_vm._s(_vm.item.status))]):_vm._e(),_vm._m(0)]),_c('div',{staticClass:\"toast-body\"},[_vm._v(_vm._s(_vm.item.message))])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"ml-2 mb-1 close\",attrs:{\"type\":\"button\",\"data-dismiss\":\"toast\",\"aria-label\":\"Close\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])}]\n\nexport { render, staticRenderFns }","\n\t\n\t\t\n\t\t
{{ item.message }}
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastMessage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToastMessage.vue?vue&type=template&id=556fd3a5&\"\nimport script from \"./ToastMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./ToastMessage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t\n\t\t\n\t\t \n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Toasts.vue?vue&type=template&id=57d56c56&\"\nimport script from \"./Toasts.vue?vue&type=script&lang=js&\"\nexport * from \"./Toasts.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[(_vm.configured)?_c('Site',_vm._b({},'Site',_vm.state,false)):_c('div',[_c('div',{staticClass:\"row py-5\"},[_c('div',{staticClass:\"col12\"},[_c('p',{staticClass:\"h1 pt-5 pb-2 border-bottom\"},[_vm._v(\"Willkommen bei evcc\")]),_c('p',{staticClass:\"lead pt-2\"},[_c('b',[_vm._v(\"evcc\")]),_vm._v(\" ist dient zur flexiblen Ladesteuerung von Elektrofahrzeugen. \")]),_c('p',{staticClass:\"pt-2\"},[_vm._v(\" Es sieht aus, als wäre Dein \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" noch nicht konfiguriert. Um \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" zu konfigurieren sind die folgenden Schritte notwendig: \")]),_c('ol',{staticClass:\"pt-2\"},[_c('li',[_vm._v(\" Erzeugen einer Konfigurationsdatei mit Namen \"),_c('code',[_vm._v(\"evcc.yaml\")]),_vm._v(\". Die Standardkonfiguration \"),_c('code',[_vm._v(\"evcc.dist.yaml\")]),_vm._v(\" kann dafür als Vorlage dienen (\"),_c('a',{attrs:{\"href\":\"https://github.com/andig/evcc/blob/master/evcc.dist.yaml\"}},[_vm._v(\"Download\")]),_vm._v(\"). \")]),_c('li',[_vm._v(\"Konfiguration der Wallbox als \"),_c('code',[_vm._v(\"chargers\")]),_vm._v(\".\")]),_c('li',[_vm._v(\" Konfiguration des EVU Zählers und evtl. weiterer Zähler unter \"),_c('code',[_vm._v(\"meters\")]),_vm._v(\". \")]),_c('li',[_vm._v(\" Konfiguration des Netzanschlusses unter \"),_c('code',[_vm._v(\"site\")]),_vm._v(\". In einer Site wird der Netzanschluss mit dem konfigurierten EVU Zähler (\"),_c('code',[_vm._v(\"meter\")]),_vm._v(\") verbunden. \")]),_c('li',[_vm._v(\" Konfiguration eines Ladepunktes unter \"),_c('code',[_vm._v(\"loadpoints\")]),_vm._v(\". In einem Ladepunkt wird die konfigurierte Wallbox (\"),_c('code',[_vm._v(\"charger\")]),_vm._v(\") mit dem Ladepunkt verbunden. \")]),_c('li',[_vm._v(\" Start von \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" mit der neu erstellten Konfiguration: \"),_c('code',[_vm._v(\"evcc -c evcc.yaml\")])])]),_c('p',[_vm._v(\"Minimale Beispielkonfiguration für \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\":\")]),_c('p',[_c('code',[_c('pre',{staticClass:\"mx-3\"},[_vm._v(\" uri: localhost:7070 # Adresse für UI\\n interval: 10s # Regelintervall\\n meters:\\n - name: evu-zähler\\n type: ... # Detailkonfiguration des EVU Zählers\\n - name: ladezähler\\n type: ... # Detailkonfiguration des Ladezählers (optional)\\n chargers:\\n - name: wallbox\\n type: ... # Detailkonfiguration der Wallbox\\n site:\\n title: Home\\n meters:\\n grid: evu-zähler # EVU Zähler\\n loadpoints:\\n - title: Ladepunkt # ui display name\\n charger: wallbox # charger\\n meters:\\n charge: ladezähler # Ladezählers (optional)\\n \")])])]),_c('p',[_vm._v(\" Viel Spass mit \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\"! Bei Problemen kannst Du uns auf \"),_c('a',{attrs:{\"href\":\"https://github.com/andig/evcc/issues\"}},[_vm._v(\"GitHub\")]),_vm._v(\" erreichen. \")])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"d-none d-md-flex col-12 col-md-4 mt-md-4 align-items-end\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(_vm.siteTitle || \"Home\"))])]),(_vm.multi)?_c('div',{staticClass:\"col-12 col-md-8 mt-md-4\"},[_c('SiteDetails',_vm._b({},'SiteDetails',_vm.details,false))],1):_vm._e()]),_c('div',{staticClass:\"row d-none d-md-flex border-bottom\"}),(!_vm.multi)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"d-none d-md-block col-md-4\"}),_c('div',{staticClass:\"col-12 col-md-8\"},[_c('SiteDetails',_vm._b({},'SiteDetails',_vm.details,false))],1)]):_vm._e(),_vm._l((_vm.loadpoints),function(loadpoint,id){return _c('Loadpoint',_vm._b({key:id,attrs:{\"id\":id,\"multi\":_vm.multi,\"pvConfigured\":_vm.pvConfigured}},'Loadpoint',loadpoint,false))})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[(_vm.gridConfigured)?_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[(_vm.gridPower > 0)?_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Bezug \"),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":\"arrow-down\"}})],1):_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Einspeisung \"),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":\"arrow-up\"}})],1),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.gridPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.gridPower))+\"W\")])])]):_vm._e(),(_vm.pvConfigured)?_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Erzeugung \"),_c('fa-icon',{class:{\n\t\t\t\t\t'text-primary': _vm.pvPower > 0,\n\t\t\t\t\t'text-muted': _vm.pvPower <= 0,\n\t\t\t\t},attrs:{\"icon\":\"sun\"}})],1),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.pvPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.pvPower))+\"W\")])])]):_vm._e(),(_vm.batteryConfigured)?_c('div',{staticClass:\"d-md-block col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Batterie \"),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":_vm.batteryIcon}})],1),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.batteryPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.batteryPower))+\"W\")]),_c('small',{staticClass:\"text-muted\"},[_vm._v(\"/\")]),_vm._v(\" \"+_vm._s(_vm.batterySoC)+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(\"%\")])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n data: function () {\n return {\n fmtLimit: 100,\n fmtDigits: 1,\n };\n },\n methods: {\n round: function (num, precision) {\n var base = 10 ** precision;\n return (Math.round(num * base) / base).toFixed(precision);\n },\n fmt: function (val) {\n if (val === undefined || val === null) {\n return 0;\n }\n val = Math.abs(val);\n return val >= this.fmtLimit ? this.round(val / 1e3, this.fmtDigits) : this.round(val, 0);\n },\n fmtUnit: function (val) {\n return Math.abs(val) >= this.fmtLimit ? \"k\" : \"\";\n },\n fmtDuration: function (d) {\n if (d <= 0 || d == null) {\n return \"—\";\n }\n var seconds = \"0\" + (d % 60);\n var minutes = \"0\" + (Math.floor(d / 60) % 60);\n var hours = \"\" + Math.floor(d / 3600);\n if (hours.length < 2) {\n hours = \"0\" + hours;\n }\n return hours + \":\" + minutes.substr(-2) + \":\" + seconds.substr(-2);\n },\n fmtShortDuration: function (d) {\n if (d <= 0 || d == null) {\n return \"—\";\n }\n var minutes = Math.floor(d / 60) % 60;\n var hours = Math.floor(d / 3600);\n var tm;\n if (hours >= 1) {\n minutes = \"0\" + minutes;\n tm = hours + \":\" + minutes.substr(-2);\n } else {\n var seconds = \"0\" + (d % 60);\n tm = minutes + \":\" + seconds.substr(-2);\n }\n return tm;\n },\n fmtShortDurationUnit: function (d) {\n if (d <= 0 || d == null) {\n return \"\";\n }\n var hours = Math.floor(d / 3600);\n if (hours >= 1) {\n return \"h\";\n }\n return \"m\";\n },\n fmtAbsoluteDate: function (date) {\n return new Intl.DateTimeFormat(\"de-DE\", {\n weekday: \"short\",\n hour: \"numeric\",\n minute: \"numeric\",\n }).format(date);\n },\n fmtRelativeTime: function (date) {\n var units = {\n year: 24 * 60 * 60 * 1000 * 365,\n month: (24 * 60 * 60 * 1000 * 365) / 12,\n day: 24 * 60 * 60 * 1000,\n hour: 60 * 60 * 1000,\n minute: 60 * 1000,\n second: 1000,\n };\n\n var rtf = new Intl.RelativeTimeFormat(\"de\", { numeric: \"auto\", style: \"narrow\" });\n\n var getRelativeTime = (d1, d2 = new Date()) => {\n var elapsed = d1 - d2;\n\n // \"Math.abs\" accounts for both \"past\" & \"future\" scenarios\n for (var u in units)\n if (Math.abs(elapsed) > units[u] || u == \"second\")\n return rtf.format(Math.round(elapsed / units[u]), u);\n };\n return getRelativeTime(date);\n },\n },\n};\n","\n\t\n\t\t
\n\t\t\t
0\">\n\t\t\t\tBezug \n\t\t\t
\n\t\t\t
\n\t\t\t\tEinspeisung \n\t\t\t
\n\t\t\t
\n\t\t\t\t{{ fmt(gridPower) }}\n\t\t\t\t{{ fmtUnit(gridPower) }}W \n\t\t\t \n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\tErzeugung\n\t\t\t\t 0,\n\t\t\t\t\t\t'text-muted': pvPower <= 0,\n\t\t\t\t\t}\"\n\t\t\t\t> \n\t\t\t
\n\t\t\t
\n\t\t\t\t{{ fmt(pvPower) }}\n\t\t\t\t{{ fmtUnit(pvPower) }}W \n\t\t\t \n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\tBatterie\n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t{{ fmt(batteryPower) }}\n\t\t\t\t{{ fmtUnit(batteryPower) }}W \n\t\t\t\t/ \n\t\t\t\t{{ batterySoC }} % \n\t\t\t \n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SiteDetails.vue?vue&type=template&id=d4dfcbb4&\"\nimport script from \"./SiteDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./SiteDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.multi)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 d-md-flex mt-3 mt-md-5 align-items-end\"},[_c('span',{staticClass:\"h1 align-bottom\"},[_vm._v(_vm._s(_vm.title || \"Ladepunkt\"))])]),_c('div',{staticClass:\"col-12 col-md-8 d-none d-md-block mt-3 mt-md-5\"},[_c('LoadpointDetails',_vm._b({},'LoadpointDetails',_vm.details,false))],1),_c('div',{staticClass:\"col-12 d-md-none\"},[_c('div',{staticClass:\"row mt-3 pb-3 bg-light\"},[_c('div',{staticClass:\"col-12 mt-3\"},[_c('Mode',{staticClass:\"w-100\",attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured},on:{\"updated\":_vm.setTargetMode}})],1),(_vm.hasTargetSoC)?_c('div',{staticClass:\"col-12 mt-3\"},[_c('Soc',{staticClass:\"w-100\",attrs:{\"soc\":_vm.targetSoC,\"levels\":_vm.socLevels},on:{\"updated\":_vm.setTargetSoC}})],1):_vm._e()])])]):_vm._e(),(!_vm.multi)?_c('div',{staticClass:\"row d-none d-md-flex mt-5 py-3 pb-4 text-center bg-light\"},[_c('div',{staticClass:\"mt-3\",class:{ 'col-md-6': _vm.hasTargetSoC, 'col-md-12': !_vm.hasTargetSoC }},[_c('Mode',{attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured,\"caption\":true},on:{\"updated\":_vm.setTargetMode}})],1),(_vm.hasTargetSoC)?_c('div',{staticClass:\"col-md-6 mt-3\"},[_c('Soc',{attrs:{\"soc\":_vm.targetSoC,\"levels\":_vm.socLevels,\"caption\":true},on:{\"updated\":_vm.setTargetSoC}})],1):_vm._e()]):_vm._e(),(!_vm.multi)?_c('div',{staticClass:\"row d-md-none mt-2 pb-3 bg-light\"},[_c('div',{staticClass:\"col-12 mt-3\"},[_c('Mode',{staticClass:\"w-100\",attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured},on:{\"updated\":_vm.setTargetMode}})],1),(_vm.hasTargetSoC)?_c('div',{staticClass:\"col-12 mt-3\"},[_c('Soc',{staticClass:\"w-100\",attrs:{\"soc\":_vm.targetSoC,\"levels\":_vm.socLevels},on:{\"updated\":_vm.setTargetSoC}})],1):_vm._e()]):_vm._e(),(!_vm.multi)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 d-none d-md-flex mt-3 mt-md-5\"},[_c('span',{staticClass:\"h1\"},[_vm._v(_vm._s(_vm.title || \"Ladepunkt\"))])]),(_vm.remoteDisabled)?_c('div',{staticClass:\"col-12 col-md-8 d-flex d-md-flex mt-3 mt-md-5 pt-3\"},[_c('h5',{staticClass:\"w-100\"},[(_vm.remoteDisabled == 'soft')?_c('span',{staticClass:\"badge badge-warning w-100\"},[_vm._v(\" \"+_vm._s(_vm.remoteDisabledSource)+\": Adaptives PV-Laden deaktiviert \")]):_vm._e(),(_vm.remoteDisabled == 'hard')?_c('span',{staticClass:\"badge badge-danger w-100\"},[_vm._v(\" \"+_vm._s(_vm.remoteDisabledSource)+\": Deaktiviert \")]):_vm._e()])]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"row border-bottom d-none d-md-block\"}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 mt-3 mb-3 mb-md-0\"},[_c('Vehicle',_vm._b({},'Vehicle',_vm.vehicle,false))],1),(_vm.multi)?_c('div',{staticClass:\"col-12 col-md-4 d-none d-md-block mt-3\"},[_c('div',{staticClass:\"mb-2 pb-1\"},[_vm._v(\"Modus\")]),_c('Mode',{staticClass:\"btn-group-sm\",attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured},on:{\"updated\":_vm.setTargetMode}})],1):_vm._e(),(_vm.multi && _vm.hasTargetSoC)?_c('div',{staticClass:\"col-12 col-md-4 d-none d-md-block mt-3\"},[_c('div',{staticClass:\"mb-2 pb-1\"},[_vm._v(\"Ladeziel\")]),_c('Soc',{staticClass:\"btn-group-sm\",attrs:{\"soc\":_vm.targetSoC,\"levels\":_vm.socLevels},on:{\"updated\":_vm.setTargetSoC}})],1):_vm._e(),(!_vm.multi)?_c('div',{staticClass:\"col-md-8 d-none d-md-block\"},[_c('LoadpointDetails',_vm._b({},'LoadpointDetails',_vm.details,false))],1):_vm._e(),_c('div',{staticClass:\"col-12 d-md-none\"},[_c('LoadpointDetails',_vm._b({},'LoadpointDetails',_vm.details,false))],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn-group btn-group-toggle bg-white shadow-none\"},[(_vm.caption)?_c('label',{staticClass:\"btn btn-outline-primary disabled caption font-weight-bold\"},[_vm._v(\" Ladeziel \")]):_vm._e(),_vm._l((_vm.levelsOrDefault),function(level,id){return _c('label',{key:id,staticClass:\"btn btn-outline-primary\",class:{ active: _vm.soc == level, first: !_vm.caption && id == 0 },attrs:{\"level\":level,\"id\":id}},[_c('input',{attrs:{\"type\":\"radio\"},domProps:{\"value\":level},on:{\"click\":function($event){return _vm.setTargetSoC(level)}}}),_vm._v(_vm._s(level)+\"% \")])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t\n\t\t\tLadeziel\n\t\t \n\t\t\n\t\t\t {{ level }}%\n\t\t \n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Soc.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Soc.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Soc.vue?vue&type=template&id=5c59baa0&\"\nimport script from \"./Soc.vue?vue&type=script&lang=js&\"\nexport * from \"./Soc.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn-group btn-group-toggle bg-white shadow-none\"},[(_vm.caption)?_c('label',{staticClass:\"btn btn-outline-primary value disabled caption font-weight-bold\"},[_vm._v(\" Modus \")]):_vm._e(),_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'off', first: !_vm.caption }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"off\"},on:{\"click\":function($event){return _vm.setTargetMode('off')}}}),_vm._v(\"Stop \")]),_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'now' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"now\"},on:{\"click\":function($event){return _vm.setTargetMode('now')}}}),_vm._v(\"Sofort \")]),(_vm.pvConfigured)?_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'minpv' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"minpv\"},on:{\"click\":function($event){return _vm.setTargetMode('minpv')}}}),_c('span',{staticClass:\"d-inline d-lg-none\"},[_vm._v(\"Min\")]),_c('span',{staticClass:\"d-none d-lg-inline\"},[_vm._v(\"Min + PV\")])]):_vm._e(),(_vm.pvConfigured)?_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'pv' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"pv\"},on:{\"click\":function($event){return _vm.setTargetMode('pv')}}}),_c('span',{staticClass:\"d-inline d-md-none\"},[_vm._v(\"PV\")]),_c('span',{staticClass:\"d-none d-md-inline\"},[_vm._v(\"Nur PV\")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t\n\t\t\tModus\n\t\t \n\t\t\n\t\t\t Stop\n\t\t \n\t\t\n\t\t\t Sofort\n\t\t \n\t\t\n\t\t\t \n\t\t\tMin \n\t\t\tMin + PV \n\t\t \n\t\t\n\t\t\t \n\t\t\tPV \n\t\t\tNur PV \n\t\t \n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Mode.vue?vue&type=template&id=63314fe2&\"\nimport script from \"./Mode.vue?vue&type=script&lang=js&\"\nexport * from \"./Mode.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {\nvar _obj, _obj$1, _obj$2;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mb-2 pb-1\"},[_vm._v(\" \"+_vm._s(_vm.socTitle || \"Fahrzeug\")+\" \")]),_c('div',{staticClass:\"soc-bar\"},[_c('div',{staticClass:\"progress small\"},[_c('div',{staticClass:\"progress-bar\",class:( _obj = {\n\t\t\t\t\t'progress-bar-striped': _vm.charging,\n\t\t\t\t\t'progress-bar-animated': _vm.charging\n\t\t\t\t}, _obj[_vm.progressColor] = true, _obj ),style:({ width: (_vm.socChargeDisplayWidth + \"%\") }),attrs:{\"role\":\"progressbar\"}},[_vm._v(\" \"+_vm._s(_vm.socChargeDisplayValue)+\" \")]),(_vm.remainingSoCWidth > 0)?_c('div',{staticClass:\"progress-bar\",class:( _obj$1 = {\n\t\t\t\t\t'progress-bar-striped': _vm.charging,\n\t\t\t\t\t'progress-bar-animated': _vm.charging\n\t\t\t\t}, _obj$1[_vm.progressColor] = true, _obj$1['bg-muted'] = true, _obj$1 ),style:({ width: (_vm.remainingSoCWidth + \"%\") }),attrs:{\"role\":\"progressbar\"}}):_vm._e(),(_vm.socMarker)?_c('div',{staticClass:\"soc-marker\",class:( _obj$2 = {}, _obj$2[_vm.progressColor] = true, _obj$2 ),style:({ left: (_vm.socMarker + \"%\") })}):_vm._e()])]),(_vm.markerLabel())?_c('small',{staticClass:\"subline my-2 text-secondary\"},[(_vm.minSoCActive)?_c('fa-icon',{staticClass:\"text-muted mr-1\",attrs:{\"icon\":\"exclamation-circle\"}}):(_vm.targetChargeEnabled)?_c('fa-icon',{staticClass:\"text-muted mr-1\",attrs:{\"icon\":\"clock\"}}):_vm._e(),_vm._v(\" \"+_vm._s(_vm.markerLabel())+\" \")],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t
\n\t\t\t{{ socTitle || \"Fahrzeug\" }}\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{{ socChargeDisplayValue }}\n\t\t\t\t
\n\t\t\t\t
0\"\n\t\t\t\t\tclass=\"progress-bar\"\n\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'progress-bar-striped': charging,\n\t\t\t\t\t\t'progress-bar-animated': charging,\n\t\t\t\t\t\t[progressColor]: true,\n\t\t\t\t\t\t'bg-muted': true,\n\t\t\t\t\t}\"\n\t\t\t\t\t:style=\"{ width: `${remainingSoCWidth}%` }\"\n\t\t\t\t>
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t \n\t\t\t \n\t\t\t{{ markerLabel() }}\n\t\t \n\t
\n \n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vehicle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vehicle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Vehicle.vue?vue&type=template&id=b9f97a64&scoped=true&\"\nimport script from \"./Vehicle.vue?vue&type=script&lang=js&\"\nexport * from \"./Vehicle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vehicle.vue?vue&type=style&index=0&id=b9f97a64&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b9f97a64\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Leistung \"),(_vm.climater == 'heating')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"temperature-low\"}}):_vm._e(),(_vm.climater == 'cooling')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"temperature-high\"}}):_vm._e(),(_vm.climater == 'on')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"thermometer-half\"}}):_vm._e()],1),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.chargePower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.chargePower))+\"W\")])])]),_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Geladen\")]),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.chargedEnergy))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.chargedEnergy))+\"Wh\")])])]),(_vm.range >= 0)?_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Reichweite\")]),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(Math.round(_vm.range))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(\"km\")])])]):_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Dauer\")]),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmtShortDuration(_vm.chargeDuration))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtShortDurationUnit(_vm.chargeDuration)))])])]),(_vm.hasVehicle)?_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Restzeit\")]),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmtShortDuration(_vm.chargeEstimate))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtShortDurationUnit(_vm.chargeEstimate)))])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\t\n\t\t
\n\t\t\t
\n\t\t\t\tLeistung\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t{{ fmt(chargePower) }}\n\t\t\t\t{{ fmtUnit(chargePower) }}W \n\t\t\t \n\t\t
\n\t\t
\n\t\t\t
Geladen
\n\t\t\t
\n\t\t\t\t{{ fmt(chargedEnergy) }}\n\t\t\t\t{{ fmtUnit(chargedEnergy) }}Wh \n\t\t\t \n\t\t
\n\n\t\t
= 0\">\n\t\t\t
Reichweite
\n\t\t\t
\n\t\t\t\t{{ Math.round(range) }}\n\t\t\t\tkm \n\t\t\t \n\t\t
\n\n\t\t
\n\t\t\t
Dauer
\n\t\t\t
\n\t\t\t\t{{ fmtShortDuration(chargeDuration) }}\n\t\t\t\t{{ fmtShortDurationUnit(chargeDuration) }} \n\t\t\t \n\t\t
\n\n\t\t
\n\t\t\t
Restzeit
\n\t\t\t
\n\t\t\t\t{{ fmtShortDuration(chargeEstimate) }}\n\t\t\t\t{{ fmtShortDurationUnit(chargeEstimate) }} \n\t\t\t \n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadpointDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadpointDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadpointDetails.vue?vue&type=template&id=15ac55d6&\"\nimport script from \"./LoadpointDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadpointDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default {\n methods: {\n // collect all target component properties from current instance\n collectProps: function (component) {\n let data = {};\n for (var p in component.props) {\n data[p] = this[p];\n }\n return data;\n },\n },\n};\n","\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t{{ title || \"Ladepunkt\" }} \n\t\t\t
\n\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t\t\n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t{{ title || \"Ladepunkt\" }} \n\t\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{{ remoteDisabledSource }}: Adaptives PV-Laden deaktiviert\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t{{ remoteDisabledSource }}: Deaktiviert\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\n\t\t
\n\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
Modus
\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t
Ladeziel
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loadpoint.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loadpoint.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loadpoint.vue?vue&type=template&id=18960fc3&\"\nimport script from \"./Loadpoint.vue?vue&type=script&lang=js&\"\nexport * from \"./Loadpoint.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t
{{ siteTitle || \"Home\" }}
\n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t \n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Site.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Site.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Site.vue?vue&type=template&id=9e646302&\"\nimport script from \"./Site.vue?vue&type=script&lang=js&\"\nexport * from \"./Site.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
Willkommen bei evcc
\n\t\t\t\t\t
\n\t\t\t\t\t\tevcc ist dient zur flexiblen Ladesteuerung von Elektrofahrzeugen.\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tEs sieht aus, als wäre Dein evcc noch nicht konfiguriert. Um\n\t\t\t\t\t\tevcc zu konfigurieren sind die folgenden Schritte notwendig:\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tErzeugen einer Konfigurationsdatei mit Namen\n\t\t\t\t\t\t\tevcc.yaml. Die Standardkonfiguration\n\t\t\t\t\t\t\tevcc.dist.yaml kann dafür als Vorlage dienen (Download ).\n\t\t\t\t\t\t \n\t\t\t\t\t\tKonfiguration der Wallbox als chargers. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tKonfiguration des EVU Zählers und evtl. weiterer Zähler unter\n\t\t\t\t\t\t\tmeters.\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tKonfiguration des Netzanschlusses unter\n\t\t\t\t\t\t\tsite. In einer Site wird der Netzanschluss mit dem\n\t\t\t\t\t\t\tkonfigurierten EVU Zähler (meter) verbunden.\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tKonfiguration eines Ladepunktes unter\n\t\t\t\t\t\t\tloadpoints. In einem Ladepunkt wird die konfigurierte\n\t\t\t\t\t\t\tWallbox (charger) mit dem Ladepunkt verbunden.\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tStart von evcc mit der neu erstellten Konfiguration:\n\t\t\t\t\t\t\tevcc -c evcc.yaml\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
Minimale Beispielkonfiguration für evcc :
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n uri: localhost:7070 # Adresse für UI\n interval: 10s # Regelintervall\n meters:\n - name: evu-zähler\n type: ... # Detailkonfiguration des EVU Zählers\n - name: ladezähler\n type: ... # Detailkonfiguration des Ladezählers (optional)\n chargers:\n - name: wallbox\n type: ... # Detailkonfiguration der Wallbox\n site:\n title: Home\n meters:\n grid: evu-zähler # EVU Zähler\n loadpoints:\n - title: Ladepunkt # ui display name\n charger: wallbox # charger\n meters:\n charge: ladezähler # Ladezählers (optional)\n \n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tViel Spass mit evcc ! Bei Problemen kannst Du uns auf\n\t\t\t\t\t\tGitHub \n\t\t\t\t\t\terreichen.\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Main.vue?vue&type=template&id=5e3635d0&\"\nimport script from \"./Main.vue?vue&type=script&lang=js&\"\nexport * from \"./Main.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row mt-4 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(_vm.title || \"Home\"))])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Netzzähler: \"),(_vm.gridConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" PV Zähler: \"),(_vm.pvConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Batteriezähler: \"),(_vm.batteryConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])])]),_vm._l((_vm.loadpoints),function(loadpoint,id){return _c('div',{key:id,attrs:{\"loadpoint\":loadpoint,\"id\":'loadpoint-' + id}},[_c('div',{staticClass:\"row mt-4 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(loadpoint.title || \"Ladepunkt\"))])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Ladezähler: \"),(loadpoint.chargeConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Phasen: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.phases)+\"p\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Min. Strom: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.minCurrent)+\"A\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Max. Strom: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.maxCurrent)+\"A\")])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-md-8 h2\"},[_vm._m(0,true),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-6 py-3\"},[_vm._v(\" Modell: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.socTitle || \"—\"))])]),_c('div',{staticClass:\"col-6 py-3\"},[_vm._v(\" Kapazität: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.socCapacity)+\"kWh\")])])])])])])})],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row py-3 h2 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\"Fahrzeug\")])])}]\n\nexport { render, staticRenderFns }","\n\t\n\t\t\n\n\t\t
\n\t\t\t
\n\t\t\t\t
{{ title || \"Home\" }}
\n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\tNetzzähler:\n\t\t\t\t✓ \n\t\t\t\t— \n\t\t\t
\n\t\t\t
\n\t\t\t\tPV Zähler:\n\t\t\t\t✓ \n\t\t\t\t— \n\t\t\t
\n\t\t\t
\n\t\t\t\tBatteriezähler:\n\t\t\t\t✓ \n\t\t\t\t— \n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{{ loadpoint.title || \"Ladepunkt\" }}
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tLadezähler:\n\t\t\t\t\t✓ \n\t\t\t\t\t— \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tPhasen:\n\t\t\t\t\t{{ loadpoint.phases }}p \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tMin. Strom:\n\t\t\t\t\t{{ loadpoint.minCurrent }}A \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tMax. Strom:\n\t\t\t\t\t{{ loadpoint.maxCurrent }}A \n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Fahrzeug
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tModell:\n\t\t\t\t\t\t\t{{ loadpoint.socTitle || \"—\" }} \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tKapazität:\n\t\t\t\t\t\t\t{{ loadpoint.socCapacity }}kWh \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Config.vue?vue&type=template&id=63d7c897&\"\nimport script from \"./Config.vue?vue&type=script&lang=js&\"\nexport * from \"./Config.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import VueRouter from \"vue-router\";\nimport Vue from \"vue\";\nimport Main from \"./views/Main\";\nimport Config from \"./views/Config\";\n\nVue.use(VueRouter);\n\nconst routes = [\n { path: \"/\", component: Main },\n { path: \"/config\", component: Config },\n];\n\nexport default new VueRouter({\n routes,\n linkExactActiveClass: \"active\", // Bootstrap \n});\n","import \"../css/app.css\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"popper.js\";\nimport \"bootstrap\";\nimport Vue from \"vue\";\nimport axios from \"axios\";\nimport App from \"./views/App\";\nimport Toasts from \"./components/Toasts\";\nimport router from \"./router\";\nimport store from \"./store\";\n\nconst loc = window.location;\naxios.defaults.baseURL =\n loc.protocol + \"//\" + loc.hostname + (loc.port ? \":\" + loc.port : \"\") + loc.pathname + \"api\";\naxios.defaults.headers.post[\"Content-Type\"] = \"application/json\";\n\nwindow.toasts = new Vue({\n el: \"#toasts\",\n render: function (h) {\n return h(Toasts, { props: { items: this.items, count: this.count } });\n },\n data: {\n items: {},\n count: 0,\n },\n name: \"ToastsRoot\",\n methods: {\n raise: function (msg) {\n let found = false;\n Object.keys(this.items).forEach(function (k) {\n let m = this.items[k];\n if (m.type == msg.type && m.message == msg.message) {\n found = true;\n }\n }, this);\n if (!found) {\n msg.id = this.count++;\n Vue.set(this.items, msg.id, msg);\n }\n },\n error: function (msg) {\n msg.type = \"error\";\n this.raise(msg);\n },\n warn: function (msg) {\n msg.type = \"warn\";\n this.raise(msg);\n },\n remove: function (msg) {\n Vue.delete(this.items, msg.id);\n },\n },\n});\n\nnew Vue({\n el: \"#app\",\n router,\n data: { store },\n render: (h) => h(App),\n});\n\nwindow.setInterval(function () {\n axios.get(\"health\").catch(function (res) {\n res.message = \"Server unavailable\";\n window.toasts.error(res);\n });\n}, 5000);\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=5f0f38d1&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=459f11b2&scoped=true&lang=css&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/evcc.dist.yaml b/evcc.dist.yaml
index 14eb939a4..e98e2b7a8 100644
--- a/evcc.dist.yaml
+++ b/evcc.dist.yaml
@@ -89,11 +89,6 @@ loadpoints:
min: 0 # immediately charge to 0% regardless of mode unless "off" (disabled)
target: 100 # always charge to 100%
estimate: false # set true to interpolate between api updates
- levels: # target soc levels for UI
- - 30
- - 50
- - 80
- - 100
onDisconnect: # set defaults when vehicle disconnects
mode: pv # switch back to pv mode
targetSoC: 100 # charge to 100%
diff --git a/schema.json b/schema.json
index f25e5cf9d..b2e86b075 100644
--- a/schema.json
+++ b/schema.json
@@ -122,12 +122,6 @@
"target": {
"type": "integer"
},
- "levels": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
"estimate": {
"type": "boolean"
}
@@ -175,4 +169,4 @@
]
}
}
-}
+}
\ No newline at end of file
diff --git a/server/http.go b/server/http.go
index 080e46633..6880f10fa 100644
--- a/server/http.go
+++ b/server/http.go
@@ -292,7 +292,7 @@ func TargetChargeHandler(loadpoint core.LoadPointAPI) http.HandlerFunc {
timeS, ok := vars["time"]
timeV, err := time.ParseInLocation("2006-01-02T15:04:05", timeS, timezone())
- if !ok || err != nil || timeV.Before(time.Now()) {
+ if !ok || err != nil {
log.DEBUG.Printf("parse time: %v", err)
w.WriteHeader(http.StatusBadRequest)
return