Eigenverbrauch + Autarkie

This commit is contained in:
Patrick Haßel 2024-10-21 14:58:51 +02:00
parent 4fcd1126ba
commit e02ed10cbc
3 changed files with 23 additions and 4 deletions

View File

@ -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_SUPPLY_TEMPERATURE = 'heating.loop.supply.temperature';
export const HEATING_LOOP_RETURN_TEMPERATURE = 'heating.loop.return.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_FEW = 7.7;
export const ELECTRICITY_GRID_PURCHASED_MUCH = 9.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_FEW = 0.7;
export const ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH = 2; export const ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH = 2;
export const ELECTRICITY_PHOTOVOLTAIC_POWER_FEW = 50; export const ELECTRICITY_PHOTOVOLTAIC_POWER_FEW = 50;

View File

@ -52,6 +52,10 @@ export class Value {
return this.compare(other) <= 0; return this.compare(other) <= 0;
} }
times(factor: number) {
return this.unary(a => a * factor);
}
unary(func: (v: number) => number): Value { unary(func: (v: number) => number): Value {
if (this.value === null) { if (this.value === null) {
return new Value(null, null, ''); return new Value(null, null, '');
@ -109,6 +113,10 @@ export class Value {
return this.date; return this.date;
} }
withUnit(unit: string) {
return new Value(this.date, this.value, unit);
}
} }
export class ValueConstant extends Value { export class ValueConstant extends Value {

View File

@ -5,7 +5,7 @@ import {SeriesCacheService} from "../../../api/series/series-cache.service";
import {SliceService} from "../../../api/series/consumption/slice/slice.service"; import {SliceService} from "../../../api/series/consumption/slice/slice.service";
import {Slice} from "../../../api/series/consumption/slice/Slice"; import {Slice} from "../../../api/series/consumption/slice/Slice";
import {Interval} from "../../../api/series/consumption/interval/Interval"; 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({ @Component({
selector: 'app-dashboard-electricity-tile', selector: 'app-dashboard-electricity-tile',
@ -63,9 +63,14 @@ export class DashboardElectricityTileComponent {
const selfToday = this.producedToday.minus(this.deliveredToday); const selfToday = this.producedToday.minus(this.deliveredToday);
const consumedToday = this.purchasedToday.plus(selfToday); 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 selfYesterday = this.producedYesterday.minus(this.deliveredYesterday);
const consumedYesterday = this.purchasedYesterday.plus(selfYesterday); const consumedYesterday = this.purchasedYesterday.plus(selfYesterday);
const selfPercentYesterday = selfYesterday.div(this.producedYesterday).mul(PERCENT).withUnit('%');
const selfAutarkyPercentYesterday = selfYesterday.div(consumedYesterday).mul(PERCENT).withUnit('%');
return [ return [
'Zählerstände', 'Zählerstände',
new DisplayValue('Bezogen', this.seriesCacheService.gridPurchased, ''), new DisplayValue('Bezogen', this.seriesCacheService.gridPurchased, ''),
@ -79,13 +84,17 @@ export class DashboardElectricityTileComponent {
'Heute', 'Heute',
new DisplayValue('Produziert', this.producedToday, this.producedToday.color(ELECTRICITY_PHOTOVOLTAIC_PRODUCED_FEW, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH, 'red', 'orange', 'green')), 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('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('Bezogen', this.purchasedToday, this.purchasedToday.color(ELECTRICITY_GRID_PURCHASED_FEW, ELECTRICITY_GRID_PURCHASED_MUCH, 'green')),
new DisplayValue('Verbraucht', consumedToday, ''), new DisplayValue('Verbraucht', consumedToday, ''),
'Gestern', 'Gestern',
new DisplayValue('Produziert', this.producedYesterday, this.producedYesterday.color(ELECTRICITY_PHOTOVOLTAIC_PRODUCED_FEW, ELECTRICITY_PHOTOVOLTAIC_PRODUCED_MUCH, 'red', 'orange', 'green')), 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('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('Bezogen', this.purchasedYesterday, this.purchasedYesterday.color(ELECTRICITY_GRID_PURCHASED_FEW, ELECTRICITY_GRID_PURCHASED_MUCH, 'green')),
new DisplayValue('Verbraucht', consumedYesterday, ''), new DisplayValue('Verbraucht', consumedYesterday, ''),
]; ];