diff --git a/src/main/angular/src/app/api/series/constants.ts b/src/main/angular/src/app/api/series/constants.ts index 15d2810..2c53200 100644 --- a/src/main/angular/src/app/api/series/constants.ts +++ b/src/main/angular/src/app/api/series/constants.ts @@ -28,10 +28,12 @@ export const HEATING_BUFFER_CIRCULATION_TEMPERATURE = 'heating.buffer.circulatio export const HEATING_LOOP_SUPPLY_TEMPERATURE = 'heating.loop.supply.temperature'; export const HEATING_LOOP_RETURN_TEMPERATURE = 'heating.loop.return.temperature'; +export const PERCENT = new ValueConstant(100, "%"); + export const ELECTRICITY_GRID_PURCHASED_FEW = 7.7; export const ELECTRICITY_GRID_PURCHASED_MUCH = 9.7; -export const ELECTRICITY_GRID_POWER_MUCH = 400; +export const ELECTRICITY_GRID_POWER_MUCH = 400; export const ELECTRICITY_PHOTOVOLTAIC_PRODUCED_FEW = 0.7; export const ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH = 2; export const ELECTRICITY_PHOTOVOLTAIC_POWER_FEW = 50; diff --git a/src/main/angular/src/app/api/value/Value.ts b/src/main/angular/src/app/api/value/Value.ts index 441bb49..b46efd1 100644 --- a/src/main/angular/src/app/api/value/Value.ts +++ b/src/main/angular/src/app/api/value/Value.ts @@ -52,6 +52,10 @@ export class Value { return this.compare(other) <= 0; } + times(factor: number) { + return this.unary(a => a * factor); + } + unary(func: (v: number) => number): Value { if (this.value === null) { return new Value(null, null, ''); @@ -109,6 +113,10 @@ export class Value { return this.date; } + withUnit(unit: string) { + return new Value(this.date, this.value, unit); + } + } export class ValueConstant extends Value { diff --git a/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.ts b/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.ts index 97609b8..5b32a02 100644 --- a/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.ts +++ b/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.ts @@ -5,7 +5,7 @@ import {SeriesCacheService} from "../../../api/series/series-cache.service"; import {SliceService} from "../../../api/series/consumption/slice/slice.service"; import {Slice} from "../../../api/series/consumption/slice/Slice"; import {Interval} from "../../../api/series/consumption/interval/Interval"; -import {ELECTRICITY_GRID_DELIVERED_ENERGY, ELECTRICITY_GRID_POWER_MUCH, ELECTRICITY_GRID_PURCHASED_ENERGY, ELECTRICITY_GRID_PURCHASED_FEW, ELECTRICITY_GRID_PURCHASED_MUCH, ELECTRICITY_PHOTOVOLTAIC_POWER_FEW, ELECTRICITY_PHOTOVOLTAIC_POWER_MUCH, ELECTRICITY_PHOTOVOLTAIC_PRODUCED, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_BEFORE_METER_CHANGE, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_FEW, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH} from "../../../api/series/constants"; +import {ELECTRICITY_GRID_DELIVERED_ENERGY, ELECTRICITY_GRID_POWER_MUCH, ELECTRICITY_GRID_PURCHASED_ENERGY, ELECTRICITY_GRID_PURCHASED_FEW, ELECTRICITY_GRID_PURCHASED_MUCH, ELECTRICITY_PHOTOVOLTAIC_POWER_FEW, ELECTRICITY_PHOTOVOLTAIC_POWER_MUCH, ELECTRICITY_PHOTOVOLTAIC_PRODUCED, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_BEFORE_METER_CHANGE, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_FEW, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH, PERCENT} from "../../../api/series/constants"; @Component({ selector: 'app-dashboard-electricity-tile', @@ -63,9 +63,14 @@ export class DashboardElectricityTileComponent { const selfToday = this.producedToday.minus(this.deliveredToday); const consumedToday = this.purchasedToday.plus(selfToday); + const selfPercentToday = selfToday.div(this.producedToday).mul(PERCENT).withUnit('%'); + const selfAutarkyPercentToday = selfToday.div(consumedToday).mul(PERCENT).withUnit('%'); const selfYesterday = this.producedYesterday.minus(this.deliveredYesterday); const consumedYesterday = this.purchasedYesterday.plus(selfYesterday); + const selfPercentYesterday = selfYesterday.div(this.producedYesterday).mul(PERCENT).withUnit('%'); + const selfAutarkyPercentYesterday = selfYesterday.div(consumedYesterday).mul(PERCENT).withUnit('%'); + return [ 'Zählerstände', new DisplayValue('Bezogen', this.seriesCacheService.gridPurchased, ''), @@ -79,13 +84,17 @@ export class DashboardElectricityTileComponent { 'Heute', new DisplayValue('Produziert', this.producedToday, this.producedToday.color(ELECTRICITY_PHOTOVOLTAIC_PRODUCED_FEW, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH, 'red', 'orange', 'green')), new DisplayValue('Eingespeist', this.deliveredToday, ''), - new DisplayValue('Selbstverbraucht', selfToday, ''), + new DisplayValue('Eigenverbrauch', selfToday, ''), + new DisplayValue('Eigenverbrauch', selfPercentToday, ''), + new DisplayValue('Autarkie', selfAutarkyPercentToday, ''), new DisplayValue('Bezogen', this.purchasedToday, this.purchasedToday.color(ELECTRICITY_GRID_PURCHASED_FEW, ELECTRICITY_GRID_PURCHASED_MUCH, 'green')), new DisplayValue('Verbraucht', consumedToday, ''), 'Gestern', new DisplayValue('Produziert', this.producedYesterday, this.producedYesterday.color(ELECTRICITY_PHOTOVOLTAIC_PRODUCED_FEW, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH, 'red', 'orange', 'green')), new DisplayValue('Eingespeist', this.deliveredYesterday, ''), - new DisplayValue('Selbstverbraucht', selfYesterday, ''), + new DisplayValue('Eigenverbrauch', selfYesterday, ''), + new DisplayValue('Eigenverbrauch', selfPercentYesterday, ''), + new DisplayValue('Autarkie', selfAutarkyPercentYesterday, ''), new DisplayValue('Bezogen', this.purchasedYesterday, this.purchasedYesterday.color(ELECTRICITY_GRID_PURCHASED_FEW, ELECTRICITY_GRID_PURCHASED_MUCH, 'green')), new DisplayValue('Verbraucht', consumedYesterday, ''), ];