import { Ausstellgrund, Ausweisart } from "src/lib/Ausweis/types"; import { Energiekennwerte } from "src/lib/Energiekennwerte"; import { Gebaeude } from "src/lib/Gebaeude"; import { getKlimafaktorenClient } from "src/lib/Klimafaktoren"; import { getHeizwertfaktorClient } from "src/lib/server/Heizwertfaktor"; export default class Verbrauchsausweis { public ausweisart: Ausweisart = "VA"; public ausstellgrund: Ausstellgrund = "Vermietung"; public warmwasser_enthalten: boolean = true; public uid?: string; public baujahr_anlage: number[] = []; public get energetische_nutzfläche(): number { return ( this.gebaeude.wohnflaeche * (this.gebaeude.keller_beheizt ? 1.35 : 1.2) ); } public regnummer?: string; public kennwerte: Energiekennwerte = new Energiekennwerte(); public gebaeude: Gebaeude = new Gebaeude(); public constructor(initializer?: Verbrauchsausweis) { if (initializer) { this.ausweisart = initializer.ausweisart; this.kennwerte = initializer.kennwerte; } } public get primaer_energie_verbrauch(): Promise { return (async () => { const Endenergieverbrauch = await this.end_energie_verbrauch; const brennstoff_1 = getHeizwertfaktorClient( this.kennwerte.energietraeger_1, this.kennwerte.einheit_1 ); return Endenergieverbrauch * brennstoff_1.primärenergiefaktor; })(); } public get end_energie_verbrauch(): Promise { return (async () => { const date = this.kennwerte.zeitraum; const klimafaktoren = await getKlimafaktorenClient( date, this.gebaeude.plz ); // Endenergieverbrauch // Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden. let brennstoff_1 = getHeizwertfaktorClient( this.kennwerte.energietraeger_1, this.kennwerte.einheit_1 ); let brennstoff_2 = getHeizwertfaktorClient( this.kennwerte.energietraeger_2, this.kennwerte.einheit_2 ); let verbrauch_1_kwh = this.kennwerte.verbrauch_1 * brennstoff_1.umrechnungsfaktor; let verbrauch_2_kwh = this.kennwerte.verbrauch_2 * brennstoff_1.umrechnungsfaktor; let verbrauch_3_kwh = this.kennwerte.verbrauch_3 * brennstoff_1.umrechnungsfaktor; let verbrauch_4_kwh = this.kennwerte.verbrauch_4 * brennstoff_2.umrechnungsfaktor; let verbrauch_5_kwh = this.kennwerte.verbrauch_5 * brennstoff_2.umrechnungsfaktor; let verbrauch_6_kwh = this.kennwerte.verbrauch_6 * brennstoff_2.umrechnungsfaktor; let warmwasserZuschlag = 0; let leerstandsZuschlag = 0; let kuehlungsZuschlag = 0; if (this.kennwerte.anteil_warmwasser_1 == 0) { warmwasserZuschlag = 20 * this.energetische_nutzfläche * 3; } if (this.gebaeude.leerstand > 0) { let durchschnittsKlimafaktor = klimafaktoren.reduce((a, b) => a + b, 0) / 3; leerstandsZuschlag = ((verbrauch_1_kwh + verbrauch_2_kwh + verbrauch_3_kwh + verbrauch_4_kwh + verbrauch_5_kwh + verbrauch_6_kwh) * (this.gebaeude.leerstand / 100)) / durchschnittsKlimafaktor; } if (this.gebaeude.energiequelle_2_nutzung[3]) { kuehlungsZuschlag = 6 * this.energetische_nutzfläche * 3; } let anteil_heizung = 1 - this.kennwerte.anteil_warmwasser_1 / 100; let anteil_warmwasser = this.kennwerte.anteil_warmwasser_1 / 100; let Energieverbrauchskennwert = (anteil_heizung * (verbrauch_1_kwh + verbrauch_4_kwh) * klimafaktoren[0] + anteil_warmwasser * (verbrauch_1_kwh + verbrauch_4_kwh) + anteil_heizung * (verbrauch_2_kwh + verbrauch_5_kwh) * klimafaktoren[1] + anteil_warmwasser * (verbrauch_2_kwh + verbrauch_5_kwh) + anteil_heizung * (verbrauch_3_kwh + verbrauch_6_kwh) * klimafaktoren[2] + anteil_warmwasser * (verbrauch_3_kwh + verbrauch_6_kwh) + warmwasserZuschlag + leerstandsZuschlag + kuehlungsZuschlag) / 3 / this.energetische_nutzfläche; return Energieverbrauchskennwert; })(); } }