T37, T38, T39 und T40 fertiggestellt

This commit is contained in:
Jens Cornelsen
2025-02-18 23:03:05 +01:00
parent 47533d5794
commit 2b0fda66f1
8 changed files with 96 additions and 31 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -3,27 +3,27 @@ import { createCallerFactory } from "astro-typesafe-api/server";
export const createCaller = createCallerFactory({ export const createCaller = createCallerFactory({
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"), "klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"), "postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid].ts"), "aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid].ts"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"), "aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"), "auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
"geg-nachweis-verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-verbrauchsausweis-wohnen/[uid].ts"), "geg-nachweis-verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-verbrauchsausweis-wohnen/[uid].ts"),
"geg-nachweis-verbrauchsausweis-wohnen": await import("../src/pages/api/geg-nachweis-verbrauchsausweis-wohnen/index.ts"), "geg-nachweis-verbrauchsausweis-wohnen": await import("../src/pages/api/geg-nachweis-verbrauchsausweis-wohnen/index.ts"),
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
"objekt": await import("../src/pages/api/objekt/index.ts"), "objekt": await import("../src/pages/api/objekt/index.ts"),
"ticket": await import("../src/pages/api/ticket/index.ts"),
"rechnung": await import("../src/pages/api/rechnung/index.ts"), "rechnung": await import("../src/pages/api/rechnung/index.ts"),
"ticket": await import("../src/pages/api/ticket/index.ts"),
"user": await import("../src/pages/api/user/index.ts"), "user": await import("../src/pages/api/user/index.ts"),
"user/self": await import("../src/pages/api/user/self.ts"), "user/self": await import("../src/pages/api/user/self.ts"),
"verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"), "verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"),
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
"verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"), "verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"),
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"), "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
"objekt/[uid]/bilder": await import("../src/pages/api/objekt/[uid]/bilder.ts"), "objekt/[uid]/bilder": await import("../src/pages/api/objekt/[uid]/bilder.ts"),
"objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"), "objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"),
"objekt/[uid]/unterlagen": await import("../src/pages/api/objekt/[uid]/unterlagen.ts"), "objekt/[uid]/unterlagen": await import("../src/pages/api/objekt/[uid]/unterlagen.ts"),

View File

@@ -1,34 +1,28 @@
export function funktionDoppelteInterpolation(SuchSpalte: number, DatenZeile: number, dataZeile: any, dataBox: any): number { export function funktionEinfacheInterpolation(gegebenerWert: number, gegebeneZeile: string, dataset: any) {
function interpolate(x: number, x0: number, y0: number, x1: number, y1: number): number { function interpolate(x: number, x1: number, y1: number, x2: number, y2: number): number {
return y0 + ((y1 - y0) * (x - x0)) / (x1 - x0); return y1 + ((x - x1) * (y2 - y1)) / (x2 - x1);
} }
function findNearestPoints(data: any[], value: number, key: string): any[] { function getInterpolatedValue(gegebenerWert: number, gegebeneZeile: string) {
let lower = data[0]; const SuchZeile = dataset[0].DatenSpalte;
let upper = data[data.length - 1]; const systemValues = dataset.find(item => item.SuchSpalte.includes(gegebeneZeile))?.DatenSpalte;
for (let i = 0; i < data.length - 1; i++) { if (!systemValues) {
if (data[i][key][0] <= value && data[i + 1][key][0] >= value) { throw new Error(`Leitungssystem ${gegebeneZeile} nicht gefunden`);
lower = data[i]; }
upper = data[i + 1];
break; for (let i = 0; i < SuchZeile.length - 1; i++) {
if (gegebenerWert >= SuchZeile[i] && gegebenerWert <= SuchZeile[i + 1]) {
return interpolate(gegebenerWert, SuchZeile[i], systemValues[i], SuchZeile[i + 1], systemValues[i + 1]);
} }
} }
return [lower, upper]; throw new Error(`LeitungsLaenge ${gegebenerWert} außerhalb des Bereichs`);
} }
const interpolierterWert = getInterpolatedValue(gegebenerWert, gegebeneZeile);
const [lowerSuchSpalte, upperSuchSpalte] = findNearestPoints(dataBox, SuchSpalte, 'SuchSpalte'); return interpolierterWert;
const lowerIndex = dataZeile[0].DatenZeile.findIndex((val: number) => val >= DatenZeile) - 1;
const upperIndex = lowerIndex + 1;
const lowerDatenZeile = dataZeile[0].DatenZeile[lowerIndex];
const upperDatenZeile = dataZeile[0].DatenZeile[upperIndex];
const lowerDatenSpalte = interpolate(DatenZeile, lowerDatenZeile, lowerSuchSpalte.DatenSpalte[lowerIndex], upperDatenZeile, lowerSuchSpalte.DatenSpalte[upperIndex]);
const upperDatenSpalte = interpolate(DatenZeile, lowerDatenZeile, upperSuchSpalte.DatenSpalte[lowerIndex], upperDatenZeile, upperSuchSpalte.DatenSpalte[upperIndex]);
return interpolate(SuchSpalte, lowerSuchSpalte.SuchSpalte[0], lowerDatenSpalte, upperSuchSpalte.SuchSpalte[0], upperDatenSpalte);
} }

View File

@@ -0,0 +1,18 @@
import { funktionEinfacheInterpolation } from "./funktionEinfacheInterpolation.js";
export function funktionHilfsenergieDifferenzdruckKesselBWNTbis34kwT39(maximaleHeizlast: number, UebergabeSystem: string) {
if (maximaleHeizlast < 2.5) { maximaleHeizlast = 2.5; }
if (maximaleHeizlast > 34) { maximaleHeizlast = 34; }
const dataset = [
{SuchSpalte: ["maxHeizlast"], DatenSpalte: [2.5, 5, 10, 20, 30, 34]},
{SuchSpalte: ["Heizkörper 15K"], DatenSpalte: [0.4, 1.7, 6.7, 26.9, 60.5, 77.7]},
{SuchSpalte: ["Heizkörper 10K"], DatenSpalte: [0.9, 3.8, 15.1, 60.5, 136.1, 174.8]},
{SuchSpalte: ["Fußbodenheizung 7K"], DatenSpalte: [1.9, 7.7, 30.9, 123.5, 277.8, 356.8]}
];
const VolumenStrom = funktionEinfacheInterpolation(maximaleHeizlast, UebergabeSystem, dataset);
return VolumenStrom;
}

View File

@@ -0,0 +1,16 @@
import { funktionEinfacheInterpolation } from "./funktionEinfacheInterpolation.js";
export function funktionHilfsenergieDifferenzdruckLeitungsLaengenT37(LeitungsLaenge: number, LeitungsSystem: string) {
if (LeitungsLaenge < 25) { LeitungsLaenge = 25; }
const dataset = [
{SuchSpalte: ["maxLeitungslänge"], DatenSpalte: [25, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 250, 300, 350, 400, 450, 500]},
{SuchSpalte: ["Heizkörper"], DatenSpalte: [5.3, 8.5, 9.8, 11.1, 12.4, 13.7, 15, 16.3, 17.6, 18.9, 20.2, 21.5, 22.8, 24.1, 25.4, 26.7, 28, 34.5, 41, 47.5, 54, 60.5, 67]},
{SuchSpalte: ["Fußbodenheizung"], DatenSpalte: [30.3, 33.5, 34.8, 36.1, 37.4, 38.7, 40, 41.3, 42.6, 43.9, 45.2, 46.5, 47.8, 49.1, 50.4, 51.7, 53, 59.5, 66, 72.5, 79, 85.5, 92]}
];
const DifferenzDruck = funktionEinfacheInterpolation(LeitungsLaenge, LeitungsSystem, dataset);
return DifferenzDruck;
}

View File

@@ -0,0 +1,18 @@
import { funktionEinfacheInterpolation } from "./funktionEinfacheInterpolation.js";
export function funktionHilfsenergieTermPumpeT40(BelastungsGrad: number, PumpenRegelung: string) {
if (BelastungsGrad < 0.1) { BelastungsGrad = 0.1; }
if (BelastungsGrad > 1) { BelastungsGrad = 1; }
const dataset = [
{SuchSpalte: ["Belastungsgrad"], DatenSpalte: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]},
{SuchSpalte: ["variabel"], DatenSpalte: [1.9, 1.4, 1.2, 1.2, 1.1, 1.1, 1.0, 1.0, 1.0, 1.0]},
{SuchSpalte: ["konstant"], DatenSpalte: [3.3, 2.0, 1.6, 1.4, 1.3, 1.2, 1.1, 1.1, 1.0, 1.0]},
{SuchSpalte: ["ungeregelt"], DatenSpalte: [7.8, 4.0, 2.8, 2.1, 1.8, 1.5, 1.3, 1.2, 1.1, 1.0]}
];
const TermPumpe = funktionEinfacheInterpolation(BelastungsGrad, PumpenRegelung, dataset);
return TermPumpe;
}

View File

@@ -0,0 +1,19 @@
import { funktionEinfacheInterpolation } from "./funktionEinfacheInterpolation.js";
export function funktionHilfsenergieVolumenstromT38(maximaleHeizlast: number, UebergabeSystem: string) {
if (maximaleHeizlast < 2.5) { maximaleHeizlast = 2.5; }
if (maximaleHeizlast > 400) { maximaleHeizlast = 400; }
const dataset = [
{SuchSpalte: ["maxHeizlast"], DatenSpalte: [2.5, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 300, 400]},
{SuchSpalte: ["Heizkörper 15K"], DatenSpalte: [0.14, 0.29, 0.58, 1.16, 1.74, 1.97, 2.32, 2.9, 3.48, 4.06, 4.64, 5.22, 5.8, 6.38, 6.96, 7.54, 8.12, 8.7, 9.28, 9.86, 10.43, 11.01, 17.39, 23.19]},
{SuchSpalte: ["Heizkörper 10K"], DatenSpalte: [0.22, 0.43, 0.87, 1.74, 2.61, 3.48, 4.35, 5.22, 6.09, 6.96, 7.83, 8.7, 9.57, 10.43, 11.3, 12.17, 13.04, 13.91, 14.78, 15.65, 16.52, 17.39, 26.09, 34.78]},
{SuchSpalte: ["Fußbodenheizung 7K"], DatenSpalte: [0.31, 0.62, 1.24, 2.48, 3.73, 4.97, 6.21, 7.45, 8.7, 9.94, 11.18, 12.42, 13.66, 14.91, 16.15, 17.39, 18.63, 19.88, 21.12, 22.36, 23.6, 24.84, 37.27, 49.69]}
];
const VolumenStrom = funktionEinfacheInterpolation(maximaleHeizlast, UebergabeSystem, dataset);
return VolumenStrom;
}