Datenbank Schema Änderungen
This commit is contained in:
@@ -0,0 +1,293 @@
|
||||
import { getKlimafaktoren } from "#lib/Klimafaktoren";
|
||||
import { getHeizwertfaktor } from "#lib/server/Heizwertfaktor";
|
||||
import {
|
||||
GebaeudeStammdaten,
|
||||
VerbrauchsausweisWohnen,
|
||||
} from "@ibcornelsen/database";
|
||||
|
||||
export function energetischeNutzflaecheVerbrauchsausweisWohnen_2016(
|
||||
ausweis: VerbrauchsausweisWohnen & {
|
||||
gebaeude_stammdaten: GebaeudeStammdaten;
|
||||
}
|
||||
): number {
|
||||
let faktorKeller = 1.2;
|
||||
if (ausweis.keller_beheizt && (ausweis.gebaeude_stammdaten.einheiten || 1) <= 2) {
|
||||
faktorKeller = 1.35;
|
||||
}
|
||||
|
||||
return (ausweis.gebaeude_stammdaten.flaeche || 1) * faktorKeller;
|
||||
}
|
||||
|
||||
export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
ausweis: VerbrauchsausweisWohnen & {
|
||||
gebaeude_stammdaten: GebaeudeStammdaten;
|
||||
}
|
||||
) {
|
||||
const date = ausweis.startdatum;
|
||||
const klimafaktoren = await getKlimafaktoren(
|
||||
date,
|
||||
ausweis.gebaeude_stammdaten.plz
|
||||
);
|
||||
|
||||
// Endenergieverbrauch
|
||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||
let brennstoff_1 = getHeizwertfaktor(
|
||||
ausweis.brennstoff_1 as string,
|
||||
ausweis.einheit_1 as string
|
||||
);
|
||||
let brennstoff_2 = getHeizwertfaktor(
|
||||
ausweis.brennstoff_2 as string,
|
||||
ausweis.einheit_2 as string
|
||||
);
|
||||
|
||||
const energetischeNutzflaeche =
|
||||
energetischeNutzflaecheVerbrauchsausweisWohnen_2016(ausweis);
|
||||
|
||||
let energieVerbrauchGesamt_1 =
|
||||
((ausweis.verbrauch_1 || 0) +
|
||||
(ausweis.verbrauch_2 || 0) +
|
||||
(ausweis.verbrauch_3 || 0)) *
|
||||
brennstoff_1.umrechnungsfaktor;
|
||||
let energieVerbrauchGesamt_2 =
|
||||
((ausweis.verbrauch_4 || 0) +
|
||||
(ausweis.verbrauch_5 || 0) +
|
||||
(ausweis.verbrauch_6 || 0)) *
|
||||
brennstoff_2.umrechnungsfaktor;
|
||||
|
||||
let energieVerbrauchWarmwasser_1 = 0;
|
||||
let energieVerbrauchWarmwasser_2 = 0;
|
||||
let leerstandsZuschlagWarmwasser = 0;
|
||||
// Leerstand wird in Prozent angegeben, muss hier aber in eine Zahl zwischen 0 und 1 umgerechnet werden.
|
||||
let leerstand = (ausweis.gebaeude_stammdaten.leerstand || 0) / 100;
|
||||
|
||||
if (ausweis.warmwasser_enthalten && ausweis.warmwasser_anteil_bekannt) {
|
||||
if (ausweis.gebaeude_stammdaten.solarsystem_warmwasser) {
|
||||
// Wenn Warmwasser enthalten und Anteil bekannt und Solarsystem
|
||||
energieVerbrauchWarmwasser_1 =
|
||||
energieVerbrauchGesamt_1 *
|
||||
((ausweis.anteil_warmwasser_1 || 0) / 100) *
|
||||
0.6;
|
||||
energieVerbrauchWarmwasser_2 =
|
||||
energieVerbrauchGesamt_2 *
|
||||
((ausweis.anteil_warmwasser_2 || 0) / 100) *
|
||||
0.6;
|
||||
} else {
|
||||
// Wenn Warmwasser enthalten und Anteil bekannt und **kein** Solarsystem
|
||||
energieVerbrauchWarmwasser_1 =
|
||||
energieVerbrauchGesamt_1 *
|
||||
((ausweis.anteil_warmwasser_1 || 0) / 100);
|
||||
energieVerbrauchWarmwasser_2 =
|
||||
energieVerbrauchGesamt_2 *
|
||||
((ausweis.anteil_warmwasser_2 || 0) / 100);
|
||||
}
|
||||
leerstandsZuschlagWarmwasser =
|
||||
leerstand *
|
||||
(energieVerbrauchWarmwasser_1 + energieVerbrauchWarmwasser_2);
|
||||
} else {
|
||||
if (ausweis.gebaeude_stammdaten.solarsystem_warmwasser) {
|
||||
// Wenn Warmwasser Anteil unbekannt und Solarsystem
|
||||
energieVerbrauchWarmwasser_1 = energetischeNutzflaeche * 12 * 3;
|
||||
energieVerbrauchWarmwasser_2 = 0;
|
||||
} else {
|
||||
// Wenn Warmwasser Anteil unbekannt und **kein** Solarsystem
|
||||
energieVerbrauchWarmwasser_1 = energetischeNutzflaeche * 20 * 3;
|
||||
energieVerbrauchWarmwasser_2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
let energieVerbrauchHeizung_1 = energieVerbrauchGesamt_1;
|
||||
let energieVerbrauchHeizung_2 = energieVerbrauchGesamt_2;
|
||||
|
||||
if (ausweis.warmwasser_enthalten) {
|
||||
energieVerbrauchHeizung_1 -= energieVerbrauchWarmwasser_1;
|
||||
energieVerbrauchHeizung_2 -= energieVerbrauchWarmwasser_2;
|
||||
}
|
||||
|
||||
let durchschnittsKlimafaktor =
|
||||
(klimafaktoren[0] + klimafaktoren[1] + klimafaktoren[2]) / 3 || 1;
|
||||
|
||||
let energieVerbrauchHeizungBereinigt_1 =
|
||||
energieVerbrauchHeizung_1 * durchschnittsKlimafaktor;
|
||||
let energieVerbrauchHeizungBereinigt_2 =
|
||||
energieVerbrauchHeizung_2 * durchschnittsKlimafaktor;
|
||||
|
||||
let kuehlungsZuschlag = 0;
|
||||
if (ausweis.wird_gekuehlt) {
|
||||
kuehlungsZuschlag = 6 * 3 * energetischeNutzflaeche;
|
||||
}
|
||||
|
||||
let durchschnittsEnergieVerbrauchHeizungBereingt =
|
||||
(energieVerbrauchHeizungBereinigt_1 +
|
||||
energieVerbrauchHeizungBereinigt_2) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
|
||||
let faktorDurchschnittsEnergieVerbrauchHeizungBereinigt =
|
||||
-0.0028 * durchschnittsEnergieVerbrauchHeizungBereingt + 0.9147;
|
||||
|
||||
if (faktorDurchschnittsEnergieVerbrauchHeizungBereinigt <= 0.25) {
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt = 0.25;
|
||||
} else if (faktorDurchschnittsEnergieVerbrauchHeizungBereinigt >= 1.0) {
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt = 1.0;
|
||||
}
|
||||
|
||||
let leerstandsZuschlagHeizung =
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt *
|
||||
leerstand *
|
||||
(energieVerbrauchHeizungBereinigt_1 +
|
||||
energieVerbrauchHeizungBereinigt_2);
|
||||
|
||||
let endEnergieVerbrauch_1 =
|
||||
(energieVerbrauchHeizungBereinigt_1 + energieVerbrauchWarmwasser_1) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
let endEnergieVerbrauch_2 =
|
||||
(energieVerbrauchHeizungBereinigt_2 + energieVerbrauchWarmwasser_2) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
|
||||
let endEnergieVerbrauchLeerstandsZuschlag =
|
||||
(leerstandsZuschlagHeizung + leerstandsZuschlagWarmwasser) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
let endEnergieVerbrauchKuehlungsZuschlag =
|
||||
kuehlungsZuschlag / (3 * energetischeNutzflaeche);
|
||||
|
||||
let primaerfaktorww = 0;
|
||||
let primaerfaktorww_1 = 0;
|
||||
|
||||
if (!ausweis.warmwasser_enthalten && ausweis.gebaeude_stammdaten.durchlauf_erhitzer) {
|
||||
primaerfaktorww = 1.8;
|
||||
primaerfaktorww_1 = 1.8;
|
||||
} else {
|
||||
primaerfaktorww = brennstoff_1.primaerenergiefaktor;
|
||||
primaerfaktorww_1 = brennstoff_2.primaerenergiefaktor;
|
||||
}
|
||||
|
||||
let primaerEnergieVerbrauch_1 =
|
||||
(energieVerbrauchHeizungBereinigt_1 *
|
||||
brennstoff_1.primaerenergiefaktor +
|
||||
energieVerbrauchWarmwasser_1 * primaerfaktorww) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
let primaerEnergieVerbrauch_2 =
|
||||
(energieVerbrauchHeizungBereinigt_2 *
|
||||
brennstoff_2.primaerenergiefaktor +
|
||||
energieVerbrauchWarmwasser_2 * primaerfaktorww_1) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
|
||||
let primaerEnergieVerbrauchLeerstandsZuschlag =
|
||||
endEnergieVerbrauchLeerstandsZuschlag *
|
||||
brennstoff_1.primaerenergiefaktor;
|
||||
let primaerEnergieVerbrauchKuehlungsZuschlag =
|
||||
endEnergieVerbrauchKuehlungsZuschlag * 1.8;
|
||||
|
||||
let co2Emissionen_1 = endEnergieVerbrauch_1 * brennstoff_1.coe;
|
||||
let co2Emissionen_2 = endEnergieVerbrauch_2 * brennstoff_2.coe;
|
||||
|
||||
let co2EmissionenLeerstandsZuschlag =
|
||||
endEnergieVerbrauchLeerstandsZuschlag * brennstoff_1.coe;
|
||||
let co2EmissionenKuehlungsZuschlag =
|
||||
endEnergieVerbrauchKuehlungsZuschlag * brennstoff_2.coe;
|
||||
|
||||
let endEnergieVerbrauchGesamt =
|
||||
endEnergieVerbrauch_1 +
|
||||
endEnergieVerbrauch_2 +
|
||||
endEnergieVerbrauchLeerstandsZuschlag +
|
||||
endEnergieVerbrauchKuehlungsZuschlag;
|
||||
let primaerEnergieVerbrauchGesamt =
|
||||
primaerEnergieVerbrauch_1 +
|
||||
primaerEnergieVerbrauch_2 +
|
||||
primaerEnergieVerbrauchLeerstandsZuschlag +
|
||||
primaerEnergieVerbrauchKuehlungsZuschlag;
|
||||
let co2EmissionenGesamt =
|
||||
co2Emissionen_1 +
|
||||
co2Emissionen_2 +
|
||||
co2EmissionenLeerstandsZuschlag +
|
||||
co2EmissionenKuehlungsZuschlag;
|
||||
|
||||
return {
|
||||
brennstoff_1: brennstoff_1,
|
||||
brennstoff_2: brennstoff_2,
|
||||
klimafaktoren: klimafaktoren,
|
||||
kuehlungsZuschlag: Math.round(kuehlungsZuschlag),
|
||||
durchschnittsKlimafaktor: Math.round(durchschnittsKlimafaktor),
|
||||
ausweis: ausweis,
|
||||
|
||||
anteil_heizung_1: 1 - (ausweis.anteil_warmwasser_1 || 0) / 100,
|
||||
anteil_heizung_2: 1 - (ausweis.anteil_warmwasser_2 || 0) / 100,
|
||||
|
||||
verbrauch_1_kwh: Math.round(
|
||||
(ausweis.verbrauch_1 || 0) * brennstoff_1.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_2_kwh: Math.round(
|
||||
(ausweis.verbrauch_2 || 0) * brennstoff_1.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_3_kwh: Math.round(
|
||||
(ausweis.verbrauch_3 || 0) * brennstoff_1.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_4_kwh: Math.round(
|
||||
(ausweis.verbrauch_4 || 0) * brennstoff_2.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_5_kwh: Math.round(
|
||||
(ausweis.verbrauch_5 || 0) * brennstoff_2.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_6_kwh: Math.round(
|
||||
(ausweis.verbrauch_6 || 0) * brennstoff_2.umrechnungsfaktor
|
||||
),
|
||||
|
||||
energetische_nutzfläche: Math.round(energetischeNutzflaeche),
|
||||
leerstand: leerstand,
|
||||
leerstandsZuschlagHeizung: Math.round(leerstandsZuschlagHeizung),
|
||||
leerstandsZuschlagWarmwasser: Math.round(leerstandsZuschlagWarmwasser),
|
||||
endEnergieVerbrauchLeerstandsZuschlag: Math.round(
|
||||
endEnergieVerbrauchLeerstandsZuschlag
|
||||
),
|
||||
endEnergieVerbrauchKuehlungsZuschlag: Math.round(
|
||||
endEnergieVerbrauchKuehlungsZuschlag
|
||||
),
|
||||
coeeffkg: co2EmissionenGesamt,
|
||||
energieVerbrauchGesamt_1: Math.round(energieVerbrauchGesamt_1),
|
||||
energieVerbrauchGesamt_2: Math.round(energieVerbrauchGesamt_2),
|
||||
energieVerbrauchWarmwasser_1: Math.round(energieVerbrauchWarmwasser_1),
|
||||
energieVerbrauchWarmwasser_2: Math.round(energieVerbrauchWarmwasser_2),
|
||||
energieVerbrauchHeizung_1: energieVerbrauchHeizung_1,
|
||||
energieVerbrauchHeizung_2: energieVerbrauchHeizung_2,
|
||||
anteil_warmwasser_1: (ausweis.anteil_warmwasser_1 || 0) / 100,
|
||||
anteil_warmwasser_2: (ausweis.anteil_warmwasser_2 || 0) / 100,
|
||||
|
||||
energieVerbrauchHeizungBereinigt_1: Math.round(
|
||||
energieVerbrauchHeizungBereinigt_1
|
||||
),
|
||||
energieVerbrauchHeizungBereinigt_2: Math.round(
|
||||
energieVerbrauchHeizungBereinigt_2
|
||||
),
|
||||
durchschnittsEnergieVerbrauchHeizungBereingt: Math.round(
|
||||
durchschnittsEnergieVerbrauchHeizungBereingt
|
||||
),
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt: Math.round(
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt
|
||||
),
|
||||
|
||||
endEnergieVerbrauch_1: Math.round(endEnergieVerbrauch_1),
|
||||
endEnergieVerbrauch_2: Math.round(endEnergieVerbrauch_2),
|
||||
|
||||
primaerEnergieVerbrauch_1: Math.round(primaerEnergieVerbrauch_1),
|
||||
primaerEnergieVerbrauch_2: Math.round(primaerEnergieVerbrauch_2),
|
||||
|
||||
primaerEnergieVerbrauchLeerstandsZuschlag: Math.round(
|
||||
primaerEnergieVerbrauchLeerstandsZuschlag
|
||||
),
|
||||
primaerEnergieVerbrauchKuehlungsZuschlag: Math.round(
|
||||
primaerEnergieVerbrauchKuehlungsZuschlag
|
||||
),
|
||||
|
||||
co2Emissionen_1: co2Emissionen_1,
|
||||
co2Emissionen_2: co2Emissionen_2,
|
||||
|
||||
co2EmissionenLeerstandsZuschlag: co2EmissionenLeerstandsZuschlag,
|
||||
co2EmissionenKuehlungsZuschlag: co2EmissionenKuehlungsZuschlag,
|
||||
|
||||
co2EmissionenGesamt: Math.round(co2EmissionenGesamt),
|
||||
|
||||
endEnergieVerbrauchGesamt: Math.round(endEnergieVerbrauchGesamt),
|
||||
primaerEnergieVerbrauchGesamt: Math.round(
|
||||
primaerEnergieVerbrauchGesamt
|
||||
),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user