Export homePower (#1718)
This commit is contained in:
parent
b809356d4f
commit
5ea3c6ef39
14 changed files with 54 additions and 42 deletions
|
|
@ -5,8 +5,9 @@ export default {
|
|||
title: "Main/Energyflow",
|
||||
component: Energyflow,
|
||||
argTypes: {
|
||||
gridPower: { control: { type: "range", min: -5000, max: 20000, step: 100 } },
|
||||
pvPower: { control: { type: "range", min: 0, max: 10000, step: 100 } },
|
||||
gridPower: { control: { type: "range", min: -5000, max: 20000, step: 100 } },
|
||||
homePower: { control: { type: "range", min: 0, max: 30000, step: 100 } },
|
||||
loadpointsPower: { control: { type: "range", min: 0, max: 20000, step: 100 } },
|
||||
activeLoadpointsCount: { control: { type: "range", min: 0, max: 5, step: 1 } },
|
||||
batteryPower: { control: { type: "range", min: -4000, max: 4000, step: 100 } },
|
||||
|
|
@ -25,8 +26,9 @@ export const GridAndPV = Template.bind({});
|
|||
GridAndPV.args = {
|
||||
gridConfigured: true,
|
||||
pvConfigured: true,
|
||||
pvPower: 7300,
|
||||
gridPower: -2300,
|
||||
pvPower: 7320,
|
||||
homePower: 800,
|
||||
loadpointsPower: 4200,
|
||||
activeLoadpointsCount: 3,
|
||||
batteryConfigured: false,
|
||||
|
|
@ -38,8 +40,9 @@ BatteryAndGrid.args = {
|
|||
gridConfigured: true,
|
||||
pvConfigured: true,
|
||||
batteryConfigured: true,
|
||||
gridPower: 1200,
|
||||
pvPower: 0,
|
||||
gridPower: 1200,
|
||||
homePower: 2000,
|
||||
batteryPower: 800,
|
||||
batterySoC: 77,
|
||||
siteTitle: "Home",
|
||||
|
|
@ -50,8 +53,9 @@ BatteryCharging.args = {
|
|||
gridConfigured: true,
|
||||
pvConfigured: true,
|
||||
batteryConfigured: true,
|
||||
gridPower: -1300,
|
||||
pvPower: 5000,
|
||||
gridPower: -1300,
|
||||
homePower: 800,
|
||||
loadpointsPower: 1400,
|
||||
activeLoadpointsCount: 1,
|
||||
batteryPower: -1500,
|
||||
|
|
@ -59,13 +63,14 @@ BatteryCharging.args = {
|
|||
siteTitle: "Home",
|
||||
};
|
||||
|
||||
export const GridPvAndBattery = Template.bind({});
|
||||
GridPvAndBattery.args = {
|
||||
export const GridPVAndBattery = Template.bind({});
|
||||
GridPVAndBattery.args = {
|
||||
gridConfigured: true,
|
||||
pvConfigured: true,
|
||||
batteryConfigured: true,
|
||||
gridPower: 700,
|
||||
pvPower: 1000,
|
||||
gridPower: 700,
|
||||
homePower: 3300,
|
||||
batteryPower: 1500,
|
||||
batterySoC: 30,
|
||||
siteTitle: "Home",
|
||||
|
|
@ -77,24 +82,25 @@ BatteryThresholds.args = {
|
|||
pvConfigured: true,
|
||||
batteryConfigured: true,
|
||||
activeLoadpointsCount: 1,
|
||||
loadpointsPower: 7523,
|
||||
gridPower: -510,
|
||||
pvPower: 8740,
|
||||
batteryPower: -100,
|
||||
pvPower: 8700,
|
||||
gridPower: -500,
|
||||
loadpointsPower: 7500,
|
||||
batteryPower: -700,
|
||||
batterySoC: 95,
|
||||
siteTitle: "Home",
|
||||
};
|
||||
|
||||
export const PvThresholds = Template.bind({});
|
||||
PvThresholds.args = {
|
||||
export const PVThresholds = Template.bind({});
|
||||
PVThresholds.args = {
|
||||
gridConfigured: true,
|
||||
pvConfigured: true,
|
||||
batteryConfigured: true,
|
||||
activeLoadpointsCount: 2,
|
||||
loadpointsPower: 5621,
|
||||
batteryPower: 800,
|
||||
gridPower: 5555,
|
||||
pvPower: 300,
|
||||
gridPower: 5500,
|
||||
homePower: 1000,
|
||||
loadpointsPower: 5600,
|
||||
batteryPower: 800,
|
||||
batterySoC: 76,
|
||||
siteTitle: "Home",
|
||||
};
|
||||
|
|
@ -104,10 +110,11 @@ GridOnly.args = {
|
|||
gridConfigured: true,
|
||||
pvConfigured: false,
|
||||
batteryConfigured: false,
|
||||
gridPower: -6230,
|
||||
activeLoadpointsCount: 1,
|
||||
loadpointsPower: 4200,
|
||||
pvPower: 0,
|
||||
gridPower: -6200,
|
||||
homePower: 1000,
|
||||
loadpointsPower: 4200,
|
||||
batteryPower: 0,
|
||||
batterySoC: 0,
|
||||
siteTitle: "Home",
|
||||
|
|
@ -118,9 +125,10 @@ LowEnergy.args = {
|
|||
gridConfigured: true,
|
||||
pvConfigured: true,
|
||||
batteryConfigured: true,
|
||||
gridPower: -352,
|
||||
pvPower: 710,
|
||||
batteryPower: 86,
|
||||
pvPower: 700,
|
||||
gridPower: -300,
|
||||
homePower: 300,
|
||||
batteryPower: -100,
|
||||
batterySoC: 55,
|
||||
siteTitle: "Home",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
:batteryCharge="batteryCharge"
|
||||
:batteryDischarge="batteryDischarge"
|
||||
:pvProduction="pvProduction"
|
||||
:houseConsumption="houseConsumption"
|
||||
:homePower="homePower"
|
||||
:batterySoC="batterySoC"
|
||||
:valuesInKw="valuesInKw"
|
||||
/>
|
||||
|
|
@ -43,9 +43,9 @@
|
|||
<div class="d-flex justify-content-between" data-test-house-consumption>
|
||||
<span class="details-icon text-muted"><fa-icon icon="home"></fa-icon></span>
|
||||
<span class="text-nowrap flex-grow-1">{{
|
||||
$t("main.energyflow.houseConsumption")
|
||||
$t("main.energyflow.homePower")
|
||||
}}</span>
|
||||
<span class="text-end text-nowrap ps-1">{{ kw(houseConsumption) }}</span>
|
||||
<span class="text-end text-nowrap ps-1">{{ kw(homePower) }}</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between" data-test-loadpoints>
|
||||
<span class="details-icon text-muted"><fa-icon icon="car"></fa-icon></span>
|
||||
|
|
@ -139,6 +139,7 @@ export default {
|
|||
props: {
|
||||
gridConfigured: Boolean,
|
||||
gridPower: { type: Number, default: 0 },
|
||||
homePower: { type: Number, default: 0 },
|
||||
pvConfigured: Boolean,
|
||||
pvPower: { type: Number, default: 0 },
|
||||
loadpointsPower: { type: Number, default: 0 },
|
||||
|
|
@ -174,12 +175,6 @@ export default {
|
|||
batteryCharge: function () {
|
||||
return Math.min(0, this.batteryPowerAdjusted) * -1;
|
||||
},
|
||||
houseConsumption: function () {
|
||||
return Math.max(
|
||||
0,
|
||||
this.gridImport + this.pvConsumption + this.batteryDischarge - this.loadpointsPower
|
||||
);
|
||||
},
|
||||
selfConsumption: function () {
|
||||
return Math.max(0, this.batteryDischarge + this.pvConsumption + this.batteryCharge);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@
|
|||
</div>
|
||||
<div class="label-scale">
|
||||
<div class="d-flex justify-content-start">
|
||||
<LabelBar v-bind="labelBarProps('bottom', 'houseConsumption')">
|
||||
<LabelBar v-bind="labelBarProps('bottom', 'homePower')">
|
||||
<fa-icon icon="home"></fa-icon>
|
||||
</LabelBar>
|
||||
<LabelBar v-bind="labelBarProps('bottom', 'loadpoints')">
|
||||
|
|
@ -89,7 +89,7 @@ export default {
|
|||
batteryCharge: { type: Number, default: 0 },
|
||||
batteryDischarge: { type: Number, default: 0 },
|
||||
pvProduction: { type: Number, default: 0 },
|
||||
houseConsumption: { type: Number, default: 0 },
|
||||
homePower: { type: Number, default: 0 },
|
||||
batterySoC: { type: Number, default: 0 },
|
||||
valuesInKw: { type: Boolean, default: false },
|
||||
},
|
||||
|
|
@ -180,7 +180,7 @@ export default {
|
|||
isLabel(position, name, last) {
|
||||
const labels = {
|
||||
top: ["pvProduction", "batteryDischarge", "gridImport"],
|
||||
bottom: ["houseConsumption", "loadpoints", "batteryCharge", "gridExport"],
|
||||
bottom: ["homePower", "loadpoints", "batteryCharge", "gridExport"],
|
||||
};
|
||||
const entries = [...labels[position]];
|
||||
if (last) {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ export default {
|
|||
// details
|
||||
gridConfigured: Boolean,
|
||||
gridPower: Number,
|
||||
homePower: Number,
|
||||
pvConfigured: Boolean,
|
||||
pvPower: Number,
|
||||
batteryConfigured: Boolean,
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ export default {
|
|||
main: {
|
||||
energyflow: {
|
||||
noEnergy: "Kein Energiefluss",
|
||||
houseConsumption: "Verbrauch",
|
||||
homePower: "Verbrauch",
|
||||
pvProduction: "Erzeugung",
|
||||
loadpoints: "Ladepunkt | Ladepunkt | {count} Ladepunkte",
|
||||
battery: "Batterie",
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ export default {
|
|||
main: {
|
||||
energyflow: {
|
||||
noEnergy: "No Energyflow",
|
||||
houseConsumption: "Consumption",
|
||||
homePower: "Consumption",
|
||||
loadpoints: "Loadpoint | Loadpoint | {count} Loadpoints",
|
||||
pvProduction: "Production",
|
||||
battery: "Battery",
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ export default {
|
|||
main: {
|
||||
energyflow: {
|
||||
noEnergy: "No Energyflow",
|
||||
houseConsumption: "Consumption",
|
||||
homePower: "Consumption",
|
||||
pvProduction: "Produzione",
|
||||
battery: "Batteria",
|
||||
batteryCharge: "Battery charge",
|
||||
|
|
|
|||
|
|
@ -389,6 +389,14 @@ func (site *Site) update(lp Updater) {
|
|||
|
||||
if sitePower, err := site.sitePower(); err == nil {
|
||||
lp.Update(sitePower, cheap, site.batteryBuffered)
|
||||
|
||||
homePower := site.gridPower + site.pvPower + site.batteryPower
|
||||
for _, lp := range site.loadpoints {
|
||||
homePower -= lp.GetChargePower()
|
||||
}
|
||||
homePower = math.Max(homePower, 0)
|
||||
site.publish("homePower", homePower)
|
||||
|
||||
site.Health.Update()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
4
dist/index.html
vendored
4
dist/index.html
vendored
|
|
@ -1,4 +1,4 @@
|
|||
<!DOCTYPE html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="EV Charge Controller"><meta name="author" content="andig"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="apple-touch-icon" sizes="180x180" href="ico/apple-touch-icon.png?[[.Version]]"><link rel="icon" type="image/png" sizes="32x32" href="ico/favicon-32x32.png?[[.Version]]"><link rel="icon" type="image/png" sizes="16x16" href="ico/favicon-16x16.png?[[.Version]]"><link rel="manifest" href="ico/site.webmanifest"><link rel="mask-icon" href="ico/safari-pinned-tab.svg?[[.Version]]" color="#18191a"><link rel="shortcut icon" href="ico/favicon.ico?[[.Version]]"><meta name="apple-mobile-web-app-title" content="evcc"><meta name="application-name" content="evcc"><meta name="msapplication-TileColor" content="#18191a"><meta name="msapplication-config" content="ico/browserconfig.xml"><meta name="theme-color" content="#18191a"><title>evcc</title><link href="css/chunk-vendors.63c5e34a.css" rel="preload" as="style"><link href="css/index.401ef0ac.css" rel="preload" as="style"><link href="js/chunk-vendors.0dc6e0ff.js" rel="preload" as="script"><link href="js/index.5ba815f1.js" rel="preload" as="script"><link href="css/chunk-vendors.63c5e34a.css" rel="stylesheet"><link href="css/index.401ef0ac.css" rel="stylesheet"></head><body><script>window.evcc = {
|
||||
<!DOCTYPE html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="EV Charge Controller"><meta name="author" content="andig"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="apple-touch-icon" sizes="180x180" href="ico/apple-touch-icon.png?[[.Version]]"><link rel="icon" type="image/png" sizes="32x32" href="ico/favicon-32x32.png?[[.Version]]"><link rel="icon" type="image/png" sizes="16x16" href="ico/favicon-16x16.png?[[.Version]]"><link rel="manifest" href="ico/site.webmanifest"><link rel="mask-icon" href="ico/safari-pinned-tab.svg?[[.Version]]" color="#18191a"><link rel="shortcut icon" href="ico/favicon.ico?[[.Version]]"><meta name="apple-mobile-web-app-title" content="evcc"><meta name="application-name" content="evcc"><meta name="msapplication-TileColor" content="#18191a"><meta name="msapplication-config" content="ico/browserconfig.xml"><meta name="theme-color" content="#18191a"><title>evcc</title><link href="css/chunk-vendors.63c5e34a.css" rel="preload" as="style"><link href="css/index.5a58646e.css" rel="preload" as="style"><link href="js/chunk-vendors.0dc6e0ff.js" rel="preload" as="script"><link href="js/index.84ff3d12.js" rel="preload" as="script"><link href="css/chunk-vendors.63c5e34a.css" rel="stylesheet"><link href="css/index.5a58646e.css" rel="stylesheet"></head><body><script>window.evcc = {
|
||||
version: "[[.Version]]",
|
||||
configured: "[[.Configured]]",
|
||||
};</script><div id="app"></div><script src="js/chunk-vendors.0dc6e0ff.js"></script><script src="js/index.5ba815f1.js"></script></body></html>
|
||||
};</script><div id="app"></div><script src="js/chunk-vendors.0dc6e0ff.js"></script><script src="js/index.84ff3d12.js"></script></body></html>
|
||||
2
dist/js/index.5ba815f1.js
vendored
2
dist/js/index.5ba815f1.js
vendored
File diff suppressed because one or more lines are too long
1
dist/js/index.5ba815f1.js.map
vendored
1
dist/js/index.5ba815f1.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/js/index.84ff3d12.js
vendored
Normal file
2
dist/js/index.84ff3d12.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/js/index.84ff3d12.js.map
vendored
Normal file
1
dist/js/index.84ff3d12.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue