Energiesparende Schimmelbekämpfung / Luftentfeuchtung in kritischen Räumen

Aus FHEMWiki
Zur Navigation springen Zur Suche springen

Voraussetzungen / Benötigte Technik

  • Einen Raum mit kalten Wandstellen
  • Innentemperatursensor und Luftfeuchtesensor im betroffenen Raum (z.B. HomeMatic Wandthermostat)
  • Außentemperatursensor (oder notfalls die aktuellen Wetterdaten von Yahoo und Co.)
  • Infrarotthermometer (ohne Anbindung an FHEM und nur leihweise für ein paar Tage, wird nur zum Einrichten benötigt)
  • Luftentfeuchter, der sich z.B. per HomeMatic-Zwischenstecker an/ausschalten lässt (optional, man kann sich natürlich auch nur Warnungen ausgeben lassen)

Ausgangslage

Schimmel will trinken, um Wachsen zu können. Möchte man einschätzen, ob in einem Raum Schimmelgefahr besteht, kann man das mit FHEM-Bordmitteln über das Taupunkt-Modul dewpoint machen. Wenn der Taupunkt der Raumluft über der Oberflächentemperatur der Wand liegt, dann kondensiert das Wasser und es schimmelt. Man muss also nur die Taupunkttemperatur Td(Raumtemperatur, rel. Raumluftfeuchte) mit der Wandtemperatur vergleichen. Hierzu muss man natürlich die Wandtemperatur (an der kältesten Stelle, hier kondensiert das Wasser aus der Luft zuerst) ersteinmal kennen. Das Problem haben wir aber immer, egal wie wir es anstellen - dazu später mehr.

Diese Variante per Taupunkt ist aber nur die halbe Miete: Laut verschiedenen Quellen wächst mancher Schimmelpilz schon viel früher - ohne kondensierten, flüssigen Wasserfilm, allein durch eine hohe relative Luftfeuchte von über 70% (manche Quellen sagen 80%). Hat eine Oberfläche genau die Taupunkttemperatur der Raumluft, ist die relative Luftfeuchte dort bei 100% - also deutlich über den gefährlichen 70-80%, so dass sich Schimmel dort schon recht wohlfühlen sollte.

Nun könnte man entweder ein paar Grad "Sicherheitsmarge" auf den Taupunkt addieren. Prima. Nur wie groß sollte unsere Sicherheitsmarge genau sein, ohne den Raum mit z.B. 200-300 Watt sehr energieintensiv zu viel zu entfeuchten? Dann vielleicht doch ganz simpel ansetzen und in FHEM definieren: Schimmelwarnung ausgeben oder Luftentfeuchter anschalten bei über 70% Raumluftfeuchte. Punkt. Dazu könnte man dann bequem z.B. einen Homematic-Raumthermostaten nehmen und dessen Sensorwert für die Luftfeuchtigkeit auf Überschreitung der 70%-Marke prüfen - so tun das sicher auch viele. Aber das kann wie in meinem Fall - die Wände sind an einigen Stellen kälter als die Raumluft - genau wie die Taupunkt-Methode jämmerlich schiefgehen.

Das Problem dabei ist nämlich, dass die Luft nicht einfach schlagartig an Flächen auskondensiert, die kälter sind als der Taupunkt. Die relative Luftfeuchte steigt mit jedem Grad weniger kontinuierlich an. Und dieser Effekt ist je nach Bausubstanz und "Wandkälte" durchaus erheblich. So ist die 70%-Marke an der Wand schon mitunter bei einer Luftfeuchtigkeit im Raum von 55% oder gar weniger überschritten. Eine „Sicherheitsmarge“ muss dann schon ganz schön groß ausfallen - und der Raum z.B. dauerhaft auf 50% entfeuchtet werden. Oh je, die Stromrechnung, denn das ist an wärmeren Tagen, wo die Wände vielleicht nur 2 Grad kälter sind als die Luft im Raum, viel zu viel. Bei mir liegt z.B. in den Fensterzargen die (mit einem Infrarotthermometer gemessene) Oberflächentemperatur an kalten Tagen mit Temperaturen unter dem Gefrierpunkt manchmal 10 Grad unter der Raumtemperatur - man spricht bei solchen nicht immer behebbaren Baumängeln von sog. „Kältebrücken“. Das wirkt sich an solchen Tagen schon extrem auf die relative Luftfeuchte aus und ließ bei mir den Schimmel wachsen.

Nur wie stark ist diese Auswirkung denn nun genau? Das hängt wie gesagt von der Differenz zwischen Raumtemperatur und Wandtemperatur (und damit der Außentemperatur) ab - je größer die Differenz, desto stärker der Feuchteanstieg in Wandnähe. Leider ist der Zusammenhang aber nicht linear, so dass man das ausrechnen muss. Da ich das nirgends fertig gefunden habe, habe ich hier die nötigen Formeln gefunden, umgestellt und in folgende Funktion für die 99_myUtils.pm gegossen:

sub shiftRelHumidity($$$)
# Uses a pair of relative humidity and temperature ($r1, $T1) to calculate the relative 
# humidity on spots with same absolute humidity of the air but different temperature $T2.
#
# Useful to calculate the relative humidity near the surface of cold walls. Therefore, use the rel. 
# humidity of the room ($r1 in percent), the room Temperature ($T2 in degrees of C) and the temperature
# of the surface of the wall ($T2 in degrees of C). Returns the rel. humidity on the surface in pct then.
{
  my ($T1, $r1, $T2) = @_;
  my $r2 =  ($r1 * 10**((7.62*$T1)/(234.175+$T1))*(273.15+$T2)) / ( 10**((7.62*$T2)/(234.175+$T2))*(273.15+$T1));
  return $r2;
}

Wen die Herleitung interessiert und wer nachrechnen möchte, ob ich mich vertan habe, der möge es mich wissen lassen. Einem Vergleich mit der Berechnung dieser Seite hält die Formel aber einigermaßen Stand.

Wir können hiermit nun also in Abhängigkeit von der Raumtemperatur, der relativen Luftfeuchte des Raumes und der Oberflächentemperatur der Wand die relative Luftfeuchte in Wandnähe ziemlich genau ausrechnen. Und dann das Ganze in ein UserReading packen und unseren Luftentfeuchter danach regeln - oder unsere Schimmelwarnung versenden, mit dem Hinweis, dass vielleicht mal gelüftet oder der Raum mehr beheizt werden müsste (beides kann helfen - das ist aber ein anderes Thema und will ich hier nicht weiter behandeln). Da gibt es vorher aber nach wie vor noch ein mittelprächtiges Problem: woher nehmen wir die Wandtemperatur?

Wandtemperatur ermitteln

Perfekt wäre natürlich, einen Oberflächentemperatursensor an der kältesten Stelle der Wand zu platzieren und den Wert direkt zu messen. Wer es ganz genau machen will und seinen Luftentfeuchter wirklich sparsam einsetzen will, der sollte das vielleicht auch so tun - dann kann man aber dort auch gleich die Luftfeuchtigkeit oder Oberflächenfeuchtigkeit messen. Meistens ist das aber relativ umständlich, unhübsch und kostet auch noch Geld für zusätzliche Sensoren.

Was sich bei mir aber auch als ziemlich genau herausgestellt hat, ist, die Wandtemperatur kontinuierlich zu schätzen - und zwar in Abhängigkeit von Innen- und Außentemperatur. Hierzu ist es nötig, eine kleine Messreihe mit einem Infrarotthermometer zu machen: Gemessen wird hiermit die Oberflächentemperatur der Wand an der kältesten Stelle, die sich im Raum finden lässt - also z.B. in der Fensterzarge. Zusätzlich benötigen wir die Innentemperatur des Raumes und die Außentemperatur, die FHEM zu dieser Zeit gemessen hat - die kann man ja nach der Messung im FileLog / DbLog nachschauen.

Aus diesen 3 Werten berechnen wir uns einen "Isolationsfaktor" K:

K = (Oberflächentemperatur - Außentemperatur) / (Innentemperatur - Außentemperatur)

Wichtig ist es, die Messung durchzuführen, wenn es draußen richtig schön kalt ist (spät abends / nachts bei Minusgraden) und die Raumtemperatur längere Zeit konstant war - direkt nach dem Aufheizen des Bades bei 15 Grad Außentemperatur ergibt das Ganze also eher keine genauen Werte. Die Außentemperatur sollte idealerweise auch konstant sein, aber das ist sie nunmal nicht, daher kann das Ganze nicht perfekt funktionieren - aber für unsere Zwecke durchaus ausreichend. Die Messung solltet ihr aber auf jeden Fall ein paar mal wiederholen (6-7 mal zu verschiedenen Zeiten, am besten an mehreren Tagen), ggf. Ausreißer aussortieren und dann K mitteln. Sollte K bei euch nicht sonderlich konstant sein - was je nach Bausubstanz / Beheizung durchaus möglich ist - nehmt tendentiell eher einen kleineren Wert, geht also von schlechterer Dämmung aus, wenn ihr sicher sein wollt, dass es nicht schimmelt. Bei mir ergaben sich für meine Altbauwohnung Werte zwischen 0,67 und 0,70 - Mittelwert ist 0,68, den verwende ich seitdem.

Über den Wert können wir nun mit folgender Funktion für die 99_myUtils.pm künftig die Wandtemperatur jederzeit aus Innen- und Außentemperatur schätzen:

sub wallSurfaceTemp($$$)
# Estimates the temperature of the inner wall surface given the outside Temperature in degrees of C as $Tinside,
# the outdoor-temperature $Toutside in degrees of C and an insulation Factor $Kinsulation with K = 1 (theoretical perfect insulation, e.g. vacuum) and
# K = 0 (no insulation at all, means: less than a sheet of paper). You have to calculate K on your own by measuring inside-, outside-, and wall-temperature,
# preferably by averaging multiple measurements on cold days with constant heating of the room. 
{
  my ($Tinside, $Toutside, $Kinsulation) = @_;
  my $Tsurface =  ($Tinside * $Kinsulation) + ($Toutside * (1 - $Kinsulation));
  return $Tsurface;
}

Wirklich genau ist die Methode wie gesagt nicht und unterliegt gewissen Schwankungen. Sie ist inspiriert durch diesen Artikel (und auf das für uns nötigste weiter vereinfacht). Dort sind auch die prinzipiellen Nachteile dieser Schätzung diskutiert worden. Ich habe meine Messreihe vor knapp einem Jahr durchgeführt und immer mal wieder das Ergebnis mit der realen Wandtemperatur verglichen: die Abweichung lag maximal bei 1,5 Grad, normalerweise stimmte sie aber auf +/- 0,5 Grad genau. Damit kann ich gut leben ;-) Möglicherweise funktioniert das bei euch nicht so gut - einfach testen.

Alles zusammenpacken

Die zwei neuen Werte (Wandtemperatur und „Wandfeuchte“ - bessergesagt, relative Luftfeuchte in Wandnähe) können wir nun z.B. in die UserReadings unseres Wandthermostaten packen. Hier mal ein Beispiel zum kopieren in das Feld für das UserReadings-Attribut:

wandTemp { sprintf("%.1f", wallSurfaceTemp(ReadingsVal("kuechenthermometer","temperature",15),ReadingsVal("aussenthermometer","temperature",0),0.68)) }, \
   wandHumidity { sprintf("%.1f", shiftRelHumidity( ReadingsVal("kuechenthermometer","temperature",17), ReadingsVal("kuechenthermometer","humidity",90), \
   wallSurfaceTemp( ReadingsVal("kuechenthermometer","temperature",15), ReadingsVal("aussenthermometer","temperature",0), 0.68) ) ) }

Nicht vergessen, die 0.68 durch euren ermittelten K-wert zu ersetzen und event-on-change-reading anzupassen falls gesetzt, so dass ihr auch Events für die Userreadings bekommt.

Nun könnt ihr beide Werte ganz normal in Plots einfügen, euch Warnungen bei wandHumidity > 70% oder 80% schicken lassen oder das ganze auch per DOIF zur Entfeuchterregelung benutzen:

define di_bad.oben.luftentfeuchter \
   DOIF ([bad.oben.thermometer:wandHumidity] > 68 and [bad.oben.fenster] eq "geschlossen") (set bad.oben.luftentfeuchter_Sw on) \
   DOELSEIF ([bad.oben.thermometer:wandHumidity] < 60) (set bad.oben.luftentfeuchter_Sw off) \
   DOELSEIF ([bad.oben.fenster] eq "offen") (set bad.oben.luftentfeuchter_Sw off)

Hier regele ich einen Luftentfeuchter an einem HomeMatic Zwischenstecker mit Leistungsmessung genau so, dass die Wand immer unter 70% bleibt (mit 2% Sicherheitsmarge). Und beim Lüften geht das Ding sofort aus. Ihr müsst dann nur noch einen Luftentfeuchter finden, der diese Art des Ein-/Ausschaltens per Steckerziehen mitmacht und ein wenig mit der Hysterese (dem Abschaltpunkt - hier 60%) spielen, so dass es in euren Raum passt. Ich verwende übrigens einen comfee MDF2-16DEN3 - ein sehr preiswerter Luftentfeuchter, der nicht wie viele andere die Eigenart hat, nach Stromwiederkehr einfach auszubleiben. Er genehmigt seinem Kompressor danach zwar eine kurze Zwangspause, läuft dann aber wieder an.

Links