'use client'; import { useState, useEffect, useRef } from 'react'; import { useMediaQuery } from 'react-responsive'; import Image from 'next/image'; import { updateAmpelkarteEWS } from '@/redux/ampelkarteEWSSlice'; import { updateResourcesEWS } from '@/redux/resourcesEWSSlice'; import { updateCadastralData } from '@/redux/cadastreSlice'; import { updateComputationResultEWS } from '@/redux/computationsEWSSlice'; import { useAppSelector, useAppDispatch } from '@/redux/hooks'; import { initializeInfoPanelHandlers } from './potenzialkarte'; import { TableAmpelkarteEWS } from '@/app/ews/table-ampelkarte-ews'; import Collapsible from '@/app/components/collapsible'; import Footer from '@/app/components/footer'; import Warning from '@/app/components/warning'; import Success from '@/app/components/success'; import { textTemplates } from '@/app/config/config'; import print from '@/app/utils/print'; const tableDataCSS = 'w-full break-words border-b border-solid border-gray-300'; export default function Panel() { const image = useRef(null); const image_bal = useRef(null); const image_borefield = useRef(null); const innerRef = useRef(null); const [address, setAddress] = useState([]); const [closenessWarning, setClosenessWarning] = useState(false); const [outsideWarning, setOutsideWarning] = useState(false); const [scaleWarning, setScaleWarning] = useState(true); const [opened, setOpened] = useState(true); const ampelkarte: any = useAppSelector((store) => store.ampelkarteEWS.value); const resources: any = useAppSelector((store) => store.resourcesEWS.value); const cadastralData: any = useAppSelector((store) => store.cadastre.value); const computationResult: any = useAppSelector((store) => store.computationsEWS.value); const screenshot: any = useAppSelector((store) => store.screenshot.value); const dispatch = useAppDispatch(); const isTablet = useMediaQuery({ maxWidth: 1180 }); // initialize query handlers useEffect(() => { dispatch(updateAmpelkarteEWS([])); dispatch(updateResourcesEWS([])); dispatch(updateCadastralData({})); dispatch(updateComputationResultEWS({})); initializeInfoPanelHandlers(setAddress, setClosenessWarning, setOutsideWarning, setScaleWarning); return () => { setAddress([]); dispatch(updateAmpelkarteEWS([])); dispatch(updateResourcesEWS([])); dispatch(updateCadastralData({})); dispatch(updateComputationResultEWS({})); }; }, [dispatch, isTablet]); // print pdf report const clickHandler = () => { print( true, true, Object.keys(computationResult).length > 0, screenshot, image_bal, image, Object.keys(cadastralData).length > 0, closenessWarning || outsideWarning ? true : false, image_borefield, computationResult.calculationMode, 'EWS', Object.keys(resources).length > 0 ); }; // format values const formatEWS = (layerId: number, layerName: string, value: string) => { if (value !== 'NoData') { if ([0, 1, 2, 4, 5, 6].includes(layerId)) { value = parseFloat(value).toFixed(1); } else { value = parseFloat(value).toFixed(0); } return (textTemplates as any)[layerId][0] + value + (textTemplates as any)[layerId][1]; } else { return layerName + ': keine Daten'; } }; const handleClick = () => { setOpened(!opened); if (innerRef && innerRef.current) { innerRef.current.classList.toggle('hidden'); } }; return (
1 ? 'bottom-4' : ''}`} >
Berechnungsergebnis {opened ? '-' : '+'}
{Object.keys(cadastralData).length > 0 ? (
Katastralgemeinde: {cadastralData.KG}

Grundstücksnummer: {cadastralData.GNR}
) : null} {address && address.length > 0 ? (
{address[0]}
{address[1]} {address[3]}
) : null} {Object.keys(cadastralData).length > 0 ? (
Grundstücksgrenze 2,5-Meter-Abstand zur Grundstücksgrenze
) : null} {scaleWarning ? ( Object.keys(cadastralData).length === 0 ? (
Bitte zoomen Sie hinein um Ihr gewünschtes Grundstück durch Mausklick auszuwählen.
) : (
Bitte zoomen Sie hinein, wenn Sie ein anderes Grundstück auswählen möchten.
) ) : Object.keys(cadastralData).length === 0 ? (
Sie können jetzt Ihr Grundstück auswählen.
) : (
Sie können jetzt die Berechnungen starten oder ein anderes Grundstück auswählen.
)} {closenessWarning || outsideWarning ? (
{closenessWarning ? ( Achtung: Mindestens ein Punkt liegt näher als fünf Meter zu einem anderen Punkt! ) : null}
{outsideWarning ? ( Achtung: Mindestens ein Punkt liegt außerhalb der zugelassenen Grenzen! ) : null}
) : null} {ampelkarte && ampelkarte.length > 0 ? : null} {Object.keys(computationResult).includes('error') ? (
{computationResult.error}
) : null} {resources && resources.length > 0 ? (
{resources.slice(3, 7).map((result: any) => { return ( ); })} {resources.slice(0, 3).map((result: any) => { return ( ); })}
Ressourcen für vordefinierte Erdwärmesondenanlage
{formatEWS( result.layerId, result.layerName, result.feature.attributes['Classify.Pixel Value'] )}
Standortabhängige Parameter
{formatEWS( result.layerId, result.layerName, result.feature.attributes['Classify.Pixel Value'] )}
) : null} {Object.keys(computationResult).length > 1 ? ( {computationResult.calculationMode === 'norm' ? ( ) : ( )} {computationResult.meanBoreholeSpacing > 0 && ( )} {computationResult.calculationMode === 'user' && ( <> )} {computationResult.calculationMode === 'norm' && ( <> )} {resources && resources.length > 0 && computationResult && computationResult.GTcalc && ( <> )} {computationResult.points >= 10 && (computationResult.Efactor_user > 1.1 || computationResult.Efactor_user < 0.9) && ( )}
Berechnungsvorgaben
Es wurde keine Betriebsfunktion vom Benutzer vorgeben. Die Berechnung der möglichen Leistung des gewählten Sondenfelds erfolgt mit Norm-Jahresbetriebsstunden für Heizen und Kühlen am Standort eines typischen Wohngebäudes. Die Berechnung berücksichtigt zudem Untergrunddaten, fixe Sondenparameter und Temperaturgrenzen für die Fluidtemperatur in der Sonde. Ergebnisse sind die maximal erzielbare Leistung (kW) und Energiemenge (MWh/a) bei einem Betrieb von 20 Jahren. Die Berechnung erfolgt für das gewählte Sondenfeld mit der benutzerdefinierten Betriebsfunktion, bestehend aus den Jahresbetriebsstunden und dem Leistungsverhältnis zwischen Heizen und Kühlen. Die Berechnung berücksichtigt zudem Untergrunddaten, fixe Sondenparameter und Temperaturgrenzen für die Fluidtemperatur in der Sonde. Ergebnisse sind die maximal erzielbare Leistung (kW) und Energiemenge (MWh/a) bei einem Betrieb von 20 Jahren.
Benutzereingabe
Sondenanzahl: {computationResult.points}
Durchschnittlicher Sondenabstand: {computationResult.meanBoreholeSpacing} m
Sondentiefe: {computationResult.boreDepth} m
Jahresbetriebsstunden Heizen: {computationResult.BS_HZ} h
Jahresbetriebsstunden Kühlen: {computationResult.BS_KL} h
Heizleistung Gebäude: {computationResult.P_HZ} kW
Kühlleistung Gebäude: {computationResult.P_KL} kW
Vorlauftemperatur Heizung: {computationResult.T_radiator} °C
Standortabhängige Parameter
Norm-Jahresbetriebsstunden Heizen: {computationResult.BS_HZ_Norm} h
Norm-Jahresbetriebsstunden Kühlen: {computationResult.BS_KL_Norm} h
Wärmeleitfähigkeit:{' '} {parseFloat(resources[2].feature.attributes['Classify.Pixel Value']).toFixed(1)} W/m/K
Untergrundtemperatur: {computationResult.GTcalc.toFixed(1)} °C
Hinweis: Größere Sondenfelder sollten mit einer möglichst ausgeglichenen Jahresenergiebilanz zwischen Heizen und Kühlen betrieben werden. Dadurch beeinflussen sich die Sonden gegenseitig kaum und der Sondenabstand kann auf ungefähr 5 Meter reduziert werden. Dies ermöglicht eine optimale thermische Nutzung des Untergrunds und es können höhere Leistungen erreicht werden. Überlegen Sie eine Verbesserung der Energiebilanz zwischen Heizen und Kühlen!
Grafik mit Sondenfeld {computationResult.cover > 0 && ( )} {computationResult.balanced === 0 && ( )}
{computationResult.calculationMode === 'norm' ? 'Berechnungsergebnisse für den Normbetrieb' : 'Berechnungsergebnisse für den benutzerdefinierten Betrieb '}
Heizbetrieb mit{' '} {computationResult.BS_HZ > 0 ? computationResult.BS_HZ : computationResult.BS_HZ_Norm} h/a
Wärmeentzugsleistung aus Erdwärmesonden: {computationResult.P_HZ_user.toFixed(1)} kW
+ Elektrische Leistung Wärmepumpe (bei COP {computationResult.COP.toFixed(1)}):{' '} {computationResult.Pel_heatpump_user.toFixed(1)} kW
= Heizleistung Erdwärmeanlage: {computationResult.heizleistung.toFixed(1)} kW
Jährlicher Wärmeentzug aus Erdwärmesonden: {computationResult.E_HZ_user.toFixed(1)} MWh/a
+ Strombedarf Wärmepumpe (bei JAZ {computationResult.SCOP.toFixed(1)}):{' '} {computationResult.Eel_heatpump_user.toFixed(1)} MWh/a
= Heizarbeit Erdwärmeanlage: {computationResult.heizarbeit.toFixed(1)} MWh/a
Kühlbetrieb mit{' '} {computationResult.BS_KL > 0 ? computationResult.BS_KL : computationResult.BS_KL_Norm} h/a
Wärmeeintragsleistung in Erdwärmesonden: {computationResult.P_KL_user.toFixed(1)} kW
- Elektrische Leistung Wärmepumpe (bei EER {computationResult.EER.toFixed(1)}):{' '} {computationResult.Pel_chiller_user.toFixed(1)} kW
= Kühlleistung Erdwärmeanlage: {computationResult.kuehlleistung.toFixed(1)} kW
Jährlicher Wärmeeintrag in Erdwärmesonde: {computationResult.E_KL_user.toFixed(1)} MWh/a
- Strombedarf Wärmepumpe (bei SEER {computationResult.SEER.toFixed(1)} ): {computationResult.Eel_chiller_user.toFixed(1)} MWh/a
= Kühlarbeit Erdwärmeanlage: {computationResult.kuehlarbeit.toFixed(1)} MWh/a
Deckungsgrad gesamt: {computationResult.cover} %
Ihre Energie- und Leistungsvorgaben des Gebäudes für Heizen und Kühlen bewirken eine ausgeglichene Betriebsweise im Erdsondenfeld. Die Auslegung ist optimal für den saisonalen Speicherbetrieb geeignet.
Grafik mit Berechnungsergebnissen
) : null} {Object.keys(computationResult).length > 1 && computationResult.balanced === 1 ? ( {computationResult.meanBoreholeSpacing > 5 && ( <> )} {computationResult.cover > 0 && ( )} {computationResult.Efactor_user >= 1 ? ( ) : ( )}
Die Berechnung erfolgt für das gewählte Sondenfeld im saisonalen Speicherbetrieb. Die folgenden Ergebnisse beziehen sich auf eine automatisch angepasste Betriebsweise, wobei das Sondenfeld über das Jahr gesehen gleich stark be- und entladen wird.{' '} {computationResult.Efactor_user >= 1 && `Um eine ausgeglichene Betriebsweise zu erreichen ist eine zusätzliche Wärmequelle notwendig. Die Zusatzquelle (Solar, Luft, Abwärme, etc.) kann außerhalb der Heizsaison betrieben werden und gleicht die Jahresenergiebilanz der Erdwärmesonden aus. Alternativ zur Zusatzquelle kann auch eine Reduktion der vorgegebenen Heizleistung mit klassischen Wärmequellen (Fernwärme, Biomasse, etc.) in Betracht gezogen werden. Versuchen Sie auch eine manuelle Anpassung der Leistungsvorgabe!`} {computationResult.Efactor_user < 1 && `Um eine ausgeglichene Betriebsweise zu erreichen ist eine zusätzliche Wärmesenke notwendig. Als Zusatzsenke bietet sich eine Wärmeversorgung benachbarter Objekte an, wodurch die Jahresenergiebilanz in den Erdwärmesonden ausgeglichen werden kann.`}
Hinweis: Im saisonalen Speicherbetrieb kann der Sondenabstand auf ungefähr fünf Meter reduziert werden ohne dass sich die einzelnen Erdwärmesonden nennenswert gegenseitig beeinflussen. Somit kann der Flächenbedarf ohne signifikante Einbußen der Sondenleistung reduziert werden. Versuchen Sie eine Reduktion des Sondenabstands!
Berechnungsergebnisse
Heizbetrieb {computationResult.Efactor_user < 1 && 'und Zusatzsenke'} mit{' '} {computationResult.BS_HZ_bal} h/a
Wärmeentzugsleistung aus Erdwärmesonden: {computationResult.P_HZ_bal.toFixed(1)} kW
+ Elektrische Leistung Wärmepumpe (bei COP {computationResult.COP_bal.toFixed(1)}):{' '} {computationResult.Pel_heatpump_bal.toFixed(1)} kW
= Heizleistung Erdwärmeanlage: {computationResult.heizleistungBal.toFixed(1)} kW
Jährlicher Wärmeentzug aus Erdwärmesonden: {computationResult.E_HZ_bal.toFixed(1)} MWh/a
+ Strombedarf Wärmepumpe (bei JAZ {computationResult.SCOP_bal.toFixed(1)}):{' '} {computationResult.Eel_heatpump_bal.toFixed(1)} MWh/a
= Heizarbeit Erdwärmeanlage: {computationResult.heizarbeitBal.toFixed(1)} MWh/a
Kühlbetrieb {computationResult.Efactor_user >= 1 && 'und Zusatzquelle'} mit{' '} {computationResult.BS_KL_bal} h/a
Wärmeeintragsleistung in Erdwärmesonden: {computationResult.P_KL_bal.toFixed(1)} kW
- Elektrische Leistung Wärmepumpe (bei EER {computationResult.EER_bal.toFixed(1)}):{' '} {computationResult.Pel_chiller_bal.toFixed(1)} kW
= Kühlleistung Erdwärmeanlage: {computationResult.kuehlleistungBal.toFixed(1)} kW
Jährlicher Wärmeeintrag in Erdwärmesonden: {computationResult.E_KL_bal.toFixed(1)} MWh/a
- Strombedarf Wärmepumpe (bei SEER {computationResult.SEER_bal.toFixed(1)}):{' '} {computationResult.Eel_chiller_bal.toFixed(1)} MWh/a
= Kühlarbeit Erdwärmeanlage: {computationResult.kuehlarbeitBal.toFixed(1)} MWh/a
Deckungsgrad: {computationResult.cover_bal} %
Bei einer ausgeglichenen Betriebsweise mit einer zusätzlichen Wärmequelle kann die Heizarbeit um{' '} {computationResult.cover_rise.toFixed(1)} % gesteigert werden.
Bei einer ausgeglichenen Betriebsweise mit einer zusätzlichen Wärmesenke kann die Kühlarbeit um{' '} {computationResult.cover_rise.toFixed(1)} % gesteigert werden.
Grafik mit bilanzierten Berechnungsergebnissen
) : null}
); }