Auskühlung_Messung

Bibliotheken importieren

# Name des aktuellen Notebooks für die exportierten Datein
file_name = "Auskuehlung_Messung" 
# Ordner auf dem Server (nach files/)
ftp_folder = 'Notebooks/Auswertung'
## Bibliotheken, Module und Text- bzw- Grafikformatierungen aus zentraler Datei laden
%run ../Template/libraries_and_styles.ipynb 

from uncertainties import ufloat
from uncertainties.umath import *
from uncertainties import unumpy
## Warum auch immer muss rcParams.update() in eine eigene Zelle...
mpl.rcParams.update(params)

Daten Import

auskuehlung_t    = pd.read_csv("auskuehlung_testo.csv", sep=";", decimal="," , thousands='.'  ,encoding="cp1252") #09.02. - 11.02.
auskuehlung_t['Datum'] = pd.to_datetime(auskuehlung_t['Datum'],dayfirst=True)
auskuehlung_t.set_index(['Datum'], inplace=True)
auskuehlung_t = auskuehlung_t.resample('15s').fillna(method='ffill').interpolate()

auskuehlung_i    = pd.read_csv("auskuehlung_ibms.csv", sep=";", decimal="," , thousands='.'  ,encoding="cp1252") #09.02. - 11.02.
auskuehlung_i['Zeit'] = pd.to_datetime(auskuehlung_i['Zeit'],dayfirst=True)
auskuehlung_i.set_index(['Zeit'], inplace=True)

auskuehlung_i = auskuehlung_i.resample('15s').fillna(method='ffill').interpolate()

daten  = pd.concat([auskuehlung_t['2019-02-08 13:00:00':'2019-02-11 08:30:00'], auskuehlung_i], axis=1, sort=False, join='inner')


daten.rename(columns={  daten.filter(regex='Zuluft Seminarraum 1.*').columns[0]:                     'Seminarraum_1_Zuluft', 
                        daten.filter(regex='VSR 1 Zuluft Seminarraum 2.*').columns[0]:               'Seminarraum_2_Zuluft',
                        daten.filter(regex='VSR 1 Zuluft Flur/Vorraum 3.*').columns[0]:              'Vorraum_3_Zuluft', 
                        daten.filter(regex='Duschen-D Ablufttfeuchte.*').columns[0]:                 'Duschen_Ablufttfeuchte', 
                        daten.filter(regex='Duschen-D Ablufttemperaturfuehler.*').columns[0]:        'Duschen_Ablufttemperatur', 
                        daten.filter(regex='Seminarraum 2 Raumtempertaturfuehler.*').columns[0]:     'Seminarraum_2_Raumtempertatur', 
                        daten.filter(regex='Seminarraum 2 Raum-CO2-Fuehler.*').columns[0]:           'Seminarraum_2_CO2', 
                        daten.filter(regex='Seminarraum 1 Raumtempertaturfuehler.*').columns[0]:     'Seminarraum_1_Raumtempertatur',  
                        daten.filter(regex='Seminarraum 1 Raum-CO2-Fuehler.*').columns[0]:           'Seminarraum_1_CO2'},  
                   inplace=True)

# display(daten.head())

HT-Wert Berechnung

Übersicht

## Messzeitraum
von  = pd.to_datetime('2019-02-08 13:00:00')
bis  = pd.to_datetime('2019-02-11 08:30:00')

fig, ax = plt.subplots() 
color = [ colo('blau',1), colo('blau',1.7), colo('rot',1), colo('rot',1.7), colo('grün',1), colo('grün',1.7), colo('orange',1), colo('orange',1.7)]
daten[['Sem1_1','Sem1_2','Sem2_1','Sem2_2','Aussen']].plot(ax=ax,color=color,linewidth=0.5)
ax.set_ylabel(r'\textbf{Temperatur} (C)')


ax.set_ylim(3,23)
h0, l0 = ax.get_legend_handles_labels() 
legend = plt.legend(h0, l0, ncol=3, loc=1) 
set_legend_linewidth(legend) 

# print(abs(von - bis).total_seconds() / 3600.0)
# print(daten[['Sem2_2','Aussen']].head(1))
# print(daten[['Sem2_2','Aussen']].tail(1))
# print(daten['Aussen'].head(1)[0])
# print(daten['Aussen'].mean())

Beispielrechnung

HT_Energiebedarfsrechnung = round(267.17 * 0.252,2) ## Umfassungsfläche * H'T
HT_Bauteilekatalog        = 169.2    
T_au          = 7
T_in_Start    = 19.8
T_in_Ende     = 13.4
t             = 67.5 # h
dT_in_Start   = T_in_Start - T_au # K
dT_in_Ende    = T_in_Ende - T_au  # K
c_wirk        =  8838 # Wh/K  
HT            =  round( c_wirk * np.log(dT_in_Start/dT_in_Ende) / t ,2) # W/K
print_md(f'HT_gemessen: ${HT}~$W/K  \nHT_Energiebedarfsrechnung: ${HT_Energiebedarfsrechnung}~$W/K<br>HT_Bauteilekatalog: ${HT_Bauteilekatalog}~$W/K')

HT_gemessen: $90.76~$W/K
HT_Energiebedarfsrechnung: $67.33~$W/K
HT_Bauteilekatalog: $169.2~$W/K

HT-Wert inkl. Unsicherheiten

Seminarraum 1

daten_sub        = daten[von : bis]
# print(daten_sub.head())
uT_innen         = 2
uT_außen         = .4
t                = abs(von - bis).total_seconds() / 3600.0   # h   
T_au             = ufloat(daten_sub['Aussen'].mean(),uT_außen)  
T_in_Start       = (ufloat(daten_sub['Sem1_1'].loc[von],uT_innen)+ufloat(daten_sub['Sem1_2'].loc[von],uT_innen))/2
T_in_Ende        = (ufloat(daten_sub['Sem1_1'].loc[bis],uT_innen)+ufloat(daten_sub['Sem1_2'].loc[bis],uT_innen))/2

dT_in_Start      = T_in_Start - T_au # K
dT_in_Ende       = T_in_Ende  - T_au  # K
c_wirk           = ufloat(8838,884) # Wh/K
dT_innen         = dT_in_Start - dT_in_Ende
HT_1             = (c_wirk * unumpy.log(dT_in_Start/dT_in_Ende)) / t # W/K

print_md(f'Seminarraum 1 <br> HT-Wert: {round(HT_1.n,2)} +/- {round(HT_1.s,2)} W/K')
print(f'Dauer: {(t)} Stunden')
print(f'Temp. Außen Durschnitt: {T_au} °C')
print(f'Temp. innen Start: {T_in_Start} °C')
print(f'Temp. innen Ende: {T_in_Ende} °C')  
print(f'Temp. Verlust: {dT_innen} °C')  

Seminarraum 1
HT-Wert: 121.69 +/- 40.27 W/K

Dauer: 67.5 Stunden
Temp. Außen Durschnitt: 7.3+/-0.4 °C
Temp. innen Start: 20.6+/-1.4 °C
Temp. innen Ende: 12.6+/-1.4 °C
Temp. Verlust: 8.1+/-2.0 °C

Seminarraum 2

daten_sub        = daten[von : bis]
# print(daten_sub.head())
uT_innen         = 2
uT_außen         = .4
t                = abs(von - bis).total_seconds() / 3600.0   # h   
T_au             = ufloat(daten_sub['Aussen'].mean(),uT_außen)  
T_in_Start       = (ufloat(daten_sub['Sem2_1'].loc[von],uT_innen)+ufloat(daten_sub['Sem2_2'].loc[von],uT_innen))/2
T_in_Ende        = (ufloat(daten_sub['Sem2_1'].loc[bis],uT_innen)+ufloat(daten_sub['Sem2_2'].loc[bis],uT_innen))/2

dT_in_Start      = T_in_Start - T_au # K
dT_in_Ende       = T_in_Ende  - T_au  # K
c_wirk           = ufloat(8838,884) # Wh/K
dT_innen         = dT_in_Start - dT_in_Ende
HT_2             = (c_wirk * unumpy.log(dT_in_Start/dT_in_Ende)) / t # W/K

print_md(f'Seminarraum 2 <br> HT-Wert: {round(HT_2.n,2)} +/- {round(HT_2.s,2)} W/K')
print(f'Dauer: {(t)} Stunden')
print(f'Temp. Außen Durschnitt: {T_au} °C')
print(f'Temp. innen Start: {T_in_Start} °C')
print(f'Temp. innen Ende: {T_in_Ende} °C')  
print(f'Temp. Verlust: {dT_innen} °C')  

Seminarraum 2
HT-Wert: 92.33 +/- 35.09 W/K

Dauer: 67.5 Stunden
Temp. Außen Durschnitt: 7.3+/-0.4 °C
Temp. innen Start: 19.8+/-1.4 °C
Temp. innen Ende: 13.4+/-1.4 °C
Temp. Verlust: 6.3+/-2.0 °C

Plot

daten_diff             = daten.rolling(150, center=True).mean()
daten_diff['Sem1']     = (daten_diff['Sem1_2'] + daten_diff['Sem1_1'])/2
daten_diff['Sem2']     = (daten_diff['Sem2_2'] + daten_diff['Sem2_1'])/2
daten_diff['Sem_diff'] = (daten_diff['Sem1']   - daten_diff['Sem2'])
## Plot
fig, ax = plt.subplots(figsize=[5.9,2])   
daten_diff['Sem1'].plot(ax=ax,color=colo('orange',1),  linewidth=0.8, label="Seminarraum 1", x_compat=True)
daten_diff['Sem2'].plot(ax=ax,color=colo('violet',1),  linewidth=0.8, label="Seminarraum 2", x_compat=True)
daten_diff['Aussen'].plot(ax=ax,color=colo('blau',1),  linewidth=0.8, label="Außentemperatur", x_compat=True)
daten_diff['Sem_diff'].plot(ax=ax,color=colo('rot',1), linewidth=0.8, label="$\Delta$T(Sem1 - Sem2)", x_compat=True)
ax.axhline(0, linewidth=0.3,color='black') 
# props = dict(edgecolor="black", linewidth=0.3, facecolor='white')   
# ax.text(0.075,  0.30, '$\overline{H_{T}1}: '+str(int(HT_1.n))+'~\pm~'+str(int(HT_1.s))+'~$W/K', transform=ax.transAxes, fontsize=8, bbox=props)
# ax.text(0.075,  0.10, '$\overline{H_{T}2}: '+str(int(HT_2.n))+'~\pm~'+str(int(HT_2.s))+'~$W/K', transform=ax.transAxes, fontsize=8, bbox=props)   
ax.set_ylim(-2,22)
ax.set_yticks([0,5,10,15,20])   

ax.xaxis.set_major_locator(mdates.HourLocator([0]))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d.%b')) 
# ax.xaxis.set_minor_locator(mdates.HourLocator(byhour=range(24), interval=1))
plt.setp(ax.get_xticklabels(), rotation=0, ha="center", rotation_mode="anchor")
ax.set_ylabel(r'\textbf{Temperatur} ($^\circ$C)')   

h0, l0 = ax.get_legend_handles_labels()  
legend = plt.legend(h0, l0, ncol=2, loc=1) 
set_legend_linewidth(legend)  
ax.set(xlim=[pd.to_datetime("2019-02-08 14:00:00"),pd.to_datetime("2019-02-11 08:00:00")])
# plt.savefig(output_folder + '/' + file_name + '_gesamt.pdf') 
[(737098.5833333334, 737101.3333333334)]

Plot ln

# daten_diff             = daten.rolling(50, center=True).mean()
daten_diff['Sem1']     = (daten_diff['Sem1_2'] + daten_diff['Sem1_1'])/2
daten_diff['Sem2']     = (daten_diff['Sem2_2'] + daten_diff['Sem2_1'])/2
daten_diff['Sem_diff'] = (daten_diff['Sem1']   - daten_diff['Sem2'])

daten_diff['timecode'] = 0
for i in range(1, 16201):
    daten_diff['timecode'].iloc[i] = i * (1/240)

HT2      = 92.33
T_start2 = 19.8
HT1      = 121.69
T_start1 = 20.6

T_außen  = 7.3
t_code   = daten_diff['timecode']
c        = 8838.0 

daten_diff['Sem1_ln'] = (T_start1 - T_außen) / 2.718281828**(HT1*t_code/c) + T_außen
daten_diff['Sem2_ln'] = (T_start2 - T_außen) / 2.718281828**(HT2*t_code/c) + T_außen



## Plot
fig, ax = plt.subplots(figsize=[5.9,2.5])   
daten_diff['Sem1'].plot(ax=ax,color=colo('rot',1),  linewidth=0.8, label="Seminarraum 1", x_compat=True)
daten_diff['Sem1_ln'].plot(ax=ax,color=colo('rot',1.5),  linewidth=0.5, label="", x_compat=True)
daten_diff['Sem2'].plot(ax=ax,color=colo('blau',1),  linewidth=0.8, label="Seminarraum 2", x_compat=True)
daten_diff['Sem2_ln'].plot(ax=ax,color=colo('blau',1.5),  linewidth=0.5, label="", x_compat=True)

# daten_diff['Aussen'].plot(ax=ax,color=colo('blau',1),  linewidth=0.8, label="Außentemperatur", x_compat=True)
# daten_diff['Sem_diff'].plot(ax=ax,color=colo('rot',1), linewidth=0.8, label="$\Delta$T(Sem1 - Sem2)", x_compat=True)
# ax.axhline(0, linewidth=0.3,color='black')   
ax.set_ylim(12,21)
ax.set_yticks([12,16,20])   

ax.xaxis.set_major_locator(mdates.HourLocator([0]))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d.%b')) 
# ax.xaxis.set_minor_locator(mdates.HourLocator(byhour=range(24), interval=1))
plt.setp(ax.get_xticklabels(), rotation=0, ha="center", rotation_mode="anchor")
ax.set_ylabel(r'\textbf{Temperatur} ($^\circ$C)')   

h0, l0 = ax.get_legend_handles_labels()  
legend = plt.legend(h0, l0, ncol=2, loc=1) 
set_legend_linewidth(legend)  
ax.set(xlim=[pd.to_datetime("2019-02-08 13:00:00"),pd.to_datetime("2019-02-11 08:24:00")])
# plt.savefig(output_folder + '/' + file_name + '_gesamt.pdf') 



sem1_mess = round(daten_diff['Sem1']["2019-02-11 08:24:00"],2)
sem1_ln   = round(daten_diff['Sem1_ln']["2019-02-11 08:24:00"],2)
sem2_mess = round(daten_diff['Sem2']["2019-02-11 08:24:00"],2)
sem2_ln   = round(daten_diff['Sem2_ln']["2019-02-11 08:24:00"],2)
print_md(f'Innenraumendtemperatur') 
print_md(f'Seminarraum 1 - gemessen: {sem1_mess} °C | berechnet: {sem1_ln} °C') 
print_md(f'Seminarraum 2 - gemessen: {sem2_mess} °C | berechnet: {sem2_ln} °C') 

Innenraumendtemperatur

Seminarraum 1 - gemessen: nan °C | berechnet: 12.56 °C

Seminarraum 2 - gemessen: nan °C | berechnet: 13.48 °C

Save & Upload

## Skriptlaufzeit Ende (Funktion in: libraries_and_styles.ipynb)
hours, minutes, seconds = laufzeit()
## Notebook speichern vor dem Upload (Funktion in: libraries_and_styles.ipynb)
save_notebook() 
## Notebook als Markdown Datei mit eingebetten Grafiken speichern und auf den Server laden
%run ../Template/save_and_upload.ipynb  
 Lueftung_aus monatlicher_Gasverbrauch