Blog Obsolet

Homematic – Raumklimaüberwachung und Entfeuchtung

Letzte Aktualisierung am 8. Dezember 2023

Dieser Beitrag aus dem Jahr 2014 ist zwischenzeitlich veraltet, da es mittlerweile alternative Hardware und Methoden gibt. Er wird nicht mehr aktualisiert. Die Kommentare wurden geschlossen.

Ich setze die Methode hier nach wie vor unverändert in zwei Räumen ein, was in Bezug auf Schimmelanalyse und Entfeuchtersteuerung seit 2014 absolut problemlos und zuverlässig funktioniert.

Überwachung des Raumklimas und Steuerung von Klimageräten sind klassische Aufgaben der Hausautomatisierung. Der folgende Beitrag erläutert für das Homematic-System eine Methode zur Analyse des Raumklimas und zur Unterstützung der Bewohner bei der optimalen Raumlüftung und Schimmelvermeidung.


Features:
Berechnung bzw. Abgriff der absoluten Feuchte
Schimmelgefahranalyse
Lüftungsempfehlung
Entfeuchter- bzw. Lüftersteuerung

Grundlagen und Begriffsbestimmungen

Als Grundlage für die Beschäftigung mit diesem Themenkomplex ist es sinnvoll, sich zunächst mit einigen physikalischen Rahmenbedingungen auseinanderzusetzen.

Die absolute Luftfeuchtigkeit ist die in der jeweils betrachteten Luftmasse tatsächliche enthaltene Wassermenge. Sie wird in \frac{g}{m^3} oder \frac{g}{kg} angegeben.

Als relative Luftfeuchtigkeit wird dagegen die in der jeweils betrachteten Luftmasse enthaltene Wassermenge im Verhältnis zu der Wassermenge bezeichnet, die dieselbe Luftmenge bei gleicher Temperatur maximal enthalten kann. Dieser Wert wird in der Regel in \% angegeben.

Der Ursprungsbeitrag aus 2014 wurde in Abstimmung mit dem Nutzer „paul53“ aus dem HomeMatic-Forum erstellt. Von ihm stammen viele der physikalischen Ableitungen und das alternative Skript zur Bestimmung der absoluten Luftfeuchte.

Vielen Dank!

Wenn die Wassermenge 100 % relative Luftfeuchtigkeit erreicht, bezeichnet man das als Sättigung. Bei Überschreitung dieser Wassermenge bildet sich an Gegenständen (z.B. der Außenwand des Raumes) Tauwasser, da ein Teil der in der Luft enthaltenen Feuchtigkeit kondensiert. Die Temperatur, ab der dies auftritt, ist die Taupunkttemperatur. Diese ist wiederum abhängig vom absoluten Feuchtegehalt der Luft.

Die diesbezüglichen Zusammenhänge lassen sich aus dem Mollier-h-x-Diagramm ableiten, sie im Einzelnen zu beschreiben würde den Rahmen dieses Artikels sprengen, weswegen ich allen an Detailinformationen interessierten Leserinnen und Lesern der u.a. Link zu dem entsprechenden Wikipedia-Artikel empfehle.

Mollier-h-x-Diagramm
Mollier-h-x-Diagramm

Harstu, CC BY-SA 3.0 http://creativecommons.org/licenses/by-sa/3.0/, via Wikimedia Commons
Seite „Mollier-h-x-Diagramm“. In: Wikipedia – Die freie Enzyklopädie. URL: https://de.wikipedia.org/w/index.php?title=Mollier-h-x-Diagramm&oldid=126124634

In der Praxis besteht die Gefahr der Schimmelbildung, wenn die relative Luftfeuchtigkeit an einer Bauteiloberfläche über mehrere Tage einen Wert von ca. 80 % erreicht. Gemeinhin ist die Empfehlung, dass die relative Feuchte in Wohnräumen über einen längeren Zeitraum nicht über 60 % liegen soll.

Relativ hohe Luftfeuchtigkeiten bis hin zum Auftreten von Tauwasser bilden sich vor allem an Wärmebrücken der Außenwände.

Zum Austausch der Raumluft ist ein mehrmaliges „Stoßlüften“ während des Tages das gängige und empfohlene Verfahren. Aufgrund der schwankenden absoluten Luftfeuchte in der Außenluft und der dadurch ebenfalls schwankenden Aufnahmekapazität für Luftfeuchtigkeit bei Erwärmung können – insbesondere im Sommer – klimatische Konstellationen auftreten, bei denen ein Lüften die relative Luftfeuchtigkeit innerhalb des Raumes sogar ansteigen ließe. Dadurch erhöht sich – entgegen der eigentlichen Absicht – mit dem Lüften die Gefahr einer Schimmelbildung.

Es ist daher sinnvoll, beim Lüften im Sommer die absolute Luftfeuchtigkeit außen und innen zu vergleichen und nur dann zu lüften, wenn die absolute Außenfeuchte kleiner ist als die absolute Innenfeuchte.

Berechnung der absoluten Feuchte

Die Homematic-Klimasensoren liefern derzeit nur die relative Luftfeuchtigkeit. Die absolute Luftfeuchtigkeit muss errechnet werden. Hierzu liefern die Näherungsformeln von wettermail.de eine hinreichende Genauigkeit.

Die Berechnung der Taupunkttemperatur nach diesen Näherungsformeln ist mittels Homematic-Skript nicht ohne weiteres möglich, da in Homematic-Skript keine Logarithmusfunktionen zur Verfügung stehen. Zur Berechnung müsste man z.B. auf ein extern aufgerufenes TCL-Skript ausweichen. Wer auf diese Weise vorgehen möchte, findet im Homematic-Forum den ein oder anderen Ansatz.

Jedoch gibt es weitere, weniger aufwändige Lösungen zur Errechnung der absoluten Luftfeuchtigkeit, von denen ich zwei mögliche Alternativen nachfolgend erläuterte. Es gibt bestimmt weitere Möglichkeiten.

Verwendung des CUxD

In den aktuellen Versionen berechnet der CUxD für dort angelegte Klimasensoren die Taupunkttemperatur in °C sowie die absolute Luftfeuchtigkeit in \frac{g}{m^3} nach den Näherungsformeln von wettermail.de.

Homematic-Sensoren lassen sich z.B. über das „Thermostat Wrapper-Device“ des CUxD einbinden und die darüber errechneten Werte in der CCU weiter nutzen.

Hierzu legt man im CUxD ein Gerät vom Typ „90“ mit der Funktion „Thermostat“ an…

CUxD

Klassische Homematic-Geräte werden für den hiesigen Anwendungsfall wie folgt konfiguriert…

CUxD

Der Haken bei WEATHER|USE_HMDATAPT ist zu setzen und bei WEATHER|HMSERIAL sind Seriennummer sowie Kanal des entsprechenden Sensors einzutragen.


Die nachfolgenden Skripte nutzen für die absolute Luftfeuchte die Einheit \frac{g}{kg} . Damit diese korrekt rechnen, muss bei allen CUxD Geräten unter WEATHER|MODE die voreingestellte Einheit \frac{g}{m^3} in \frac{g}{kg} geändert werden.

Bei Homematic-IP Geräten ist es erforderlich, die Werte „aktiv“ in den CUxD zu übertragen. Hierzu gibt es verschiedene Möglichkeiten. In meiner üblichen Vorgehensweise setze ich den Haken bei WEATHER|USE_HMDATAPT nicht. Daher ist kein Feld für die Eingabe der Seriennummer zu sehen…

CUxD

Die Übertragung in den CUxD geschieht wie folgt, wobei die CUxD-Seriennummer ggf. auf die eingenen Werte anzupassen ist…

CUxD
dom.GetObject("CUxD.CUX9002004:1.SET_TEMPERATURE").State(dom.GetObject("UG Bad Raumregler:1").DPByHssDP("ACTUAL_TEMPERATURE").Value());
dom.GetObject("CUxD.CUX9002004:1.SET_HUMIDITY").State(dom.GetObject("UG Bad Raumregler:1").DPByHssDP("HUMIDITY").Value());

Für die späteren Berechnungen sind CUxD-Pendants für alle verwendeten Außen- und Innensensoren anzulegen, die nach erfolgreicher Konfiguration zusätzlich Taupunkt, absolute Feuchte und – sofern ausgewählt – Statistikwerte anzeigen…

CUxD

Details und alternative Verfahren sind im CUxD-Handbuch beschrieben.

Berechnung mittels CCU-Skript

„paul53“ hat ein Skript entwickelt, das auf Grundlage des Mollier-h-x-Diagramms den absoluten Luftfeuchtegehalt in \frac{g}{kg} im Temperaturbereich von 0 °C bis 34 °C in guter Näherung berechnet. Lediglich oberhalb von 34 °C beträgt die Abweichung mehr als 0.1 \frac{g}{kg} .

Ich habe diesen Programmteil jahrelang genutzt und mit dem CUxD-Verfahren verglichen. Die Abweichungen sind in der Praxis vernachlässigbar. Wer keinen CUxD einsetzt oder dort keine zusätzlichen Geräte anlegen möchte, kann also alternativ ohne Funktionseinschränkungen den nachfolgenden Code zur Berechnung der absoluten Feuchten innen und außen verwenden…

! Absolute Luftfeuchte berechnen und in Systemvariable schreiben

! Raumname ist Bestandteil des Kanalnamens (Raum.Sensor)
! und des Namens der Systemvariable (Raum:Feuchtegehalt)
string raum = "Wohnen";

! Lokale Variablen
real    t;   ! Temperatur in °C
integer rf;  ! relative Feuchte in %
real    af;  ! Feuchtegehalt in g/kg

! Werte einlesen
t = dom.GetObject(raum#".Sensor").DPByHssDP("TEMPERATURE").Value();
rf = dom.GetObject(raum#".Sensor").DPByHssDP("HUMIDITY").Value();

! Berechnung Sättigungsfeuchtegehalt
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ af = (3.78 + (0.285 * t) + (0.0052 * t * t) + (0.0005 * t * t * t));
}
else
{ af = (7.62 + (0.524 * (t-10.0)) + (0.0131 * (t-10.0) * (t-10.0)) + (0.00048 * (t-10.0) * (t-10.0) * (t-10.0)));
}
! Feuchtegehalt
af = (af * rf) / (100.0 + af * (100.0 - rf) / 622);

!In Systemvariable schreiben
dom.GetObject(raum#":Feuchtegehalt").State(af);

Die Ermittlung der Koeffizienten für den linearen, quadratischen und kubischen Anteil in der im Skript angegebenen Formel erfolgte mittels MS Excel. Als Grundlage hierfür diente die Magnusformel zur Berechnung des Sättigungsdampfdrucks.

Schimmelwarnung

Zur Realisierung einer Schimmelwarnung ist zunächst die jeweils „kritischste“ Bauteiloberfläche in dem zu betrachtenden Raum empirisch zu ermitteln. Dies gelingt ohne Wärmebildkamera am besten, indem man bei sehr niedrigen Außentemperaturen im Winter mit einem IR-Thermometer in dem Raum die kälteste Stelle an den Außenwänden sucht. Mit hoher Wahrscheinlichkeit wird diese an einer Wärmebrücke (z.B. an den Fensterlaibungen oder in den Ecken) zu finden sein.

Die Messungen von Raumtemperatur, Außentemperatur und Oberflächentemperatur der Außenwand (innen an der kältesten Stelle) sollten über mehrere, möglichst kalte Tage erfolgen und in einer Messreihe dokumentiert werden. Diese braucht man zur späteren Berechnung des Gesamtwärmedurchgangswiderstandes der Außenwand, wenn der exakte Aufbau der Außenwand unbekannt ist (siehe unten).


Ideal ist eine Messreihe, während der an mehreren Tagen hintereinander Außentemperatur (t_a) , Raumtemperatur (t_i) und Oberfächentemperatur an der kältetesten Stelle der Außenwand (t_w) in °C bestimmt und in einer Tabelle notiert werden.

Eine einfache Möglichkeit zur Bewertung der Wahrscheinlichkeit für eine Schimmelbildung ist der direkte Vergleich von Wandtemperatur (t_w) und Taupunkttemperatur (t_p) , z.B. nach folgender Regel…


keine Schimmelgefahr, wenn t_w mehr als 2 °C über t_p .
Schimmelwarnung, wenn t_w zwischen 1°C bis 2 °C über t_p .
Schimmelalarm, wenn t_w unter oder bis zu 1 °C über t_p .

Man könnte dazu einen zusätzlichen Temperatursensor innen an genau dieser „kritischen“ Stelle anbringen und die Taupunkttemperatur über ein „Thermostat Wrapper-Device“ des CUxD ermitteln.

Da dies in der Praxis meist nicht so einfach ist, wurde ein etwas anderer Ansatz gewählt. Zunächst werden die absoluten Grenzfeuchten für einen Schimmelalarm (80% relative Luftfeuchtigkeit) und für eine Schimmelwarnung (70% relative Luftfeuchtigkeit) bestimmt und für einen Vergleich mit der absoluten Luftfeuchtigkeit im Raum herangezogen.

Bei bekanntem Gesamtwärmedurchgangswiderstand der Wand (R_{ges} in \frac{m^2K}{W} ) lässt sich die die aktuelle Wandtemperatur (t_w) aus der jeweiligen Außentemperatur (t_a) und Raumtemperatur (t_i) wie folgt berechnen…


t_w = t_i + (\frac{0.13}{R_{ges}}*(t_a - t_i))
! Berechnung der Oberflächentemperatur der Außenwand
real tw;      ! Oberflächentemperatur der Außenwand in °C
real ta;      ! Außentemperatur in °C
real ti;      ! Raumtemperatur in °C
real Rges;    ! gesamter Wärmedurchgangswiderstand der Außenwand in m²*K/W

tw = ti + ((0.13 / Rges) * (ta - ti));

Der R_{ges} kann berechnet werden, wenn man den genauen Aufbau der Außenwand kennt. In den meisten Bestandsbauten dürfte dies ohne eine Kernbohrung jedoch schwierig werden.

Nach Umstellung der Formel kann der Gesamtwärmedurchgangswiderstand der Wand (R_{ges} ) alternativ auch aus den empirisch ermittelten Werten der bereits angelegten Messreihe bestimmt werden. In die Formel sollte das arithmetische Mittel der jeweiligen Messwerte eingesetzt werden…


R_{ges} = 0.13 * \frac{(t_a - t_i)}{(t_w - t_i)}

Der Wert 0,13 in der Formel ist der Wärmeübergangswiderstand von der Wandoberfläche zur Raumluft.


Ein normaler Wert für R_{ges} im Bereich einer Fensterlaibung liegt zwischen 0.5 und 1, für Außenwände / Dachschrägen weit über 1.0. Bei extremen Wärmebrücken kann er jedoch auch deutlich unter 0.5 liegen. In diesem Fall sollte man über eine Sanierung nachdenken.
Für das Skript ist es sinnvoll, immer die kälteste Stelle an der Außenwand im Raum (t_w) zu Grunde zu legen.

Nun liegen alle für die Berechnung der absoluten Grenzfeuchten erforderlichen Werte vor…

! Lokale Variablen
real    t;    ! Temperatur in °C
integer rf;   ! relative Feuchte in %
real    afw;  ! Schimmelwarn-Grenzfeuchte in g/kg
real    afa;  ! Schimmelalarm-Grenzfeuchte in g/kg
real    afs;  ! Sättigungsfeuchte der Wand in g/kg
 
! Berechnung der Sättigungsfeuchte der Wand
t = tw;
if (t < 10.0)
{ afs = (3.78 + (0.285 * t) + (0.0052 * t * t) + (0.0005 * t * t * t));
}
else
{ afs = (7.62 + (0.524 * (t-10.0)) + (0.0131 * (t-10.0) * (t-10.0)) + (0.00048 * (t-10.0) * (t-10.0) * (t-10.0)));
}
 
! Berechnung Warn-Grenzfeuchte
rf = 70;
afw = (afs * rf) / (100.0 + afs * (100.0 - rf) / 622);
 
! Berechnung Alarm-Grenzfeuchte
rf = 80;
afa = (afs * rf) / (100.0 + afs * (100.0 - rf) / 622);

Für die „Schimmelgefahranalyse“ (s) wird die absolute Luftfeuchtigkeit (af_{in}) des Raumes mit den absoluten Grenzfeuchten verglichen…

integer s = 0;  ! Schimmelwarnung
if (afi > afw) {s = 1;}
if (afi > afa) {s = 2;}

Wichtig für eine korrekte Schimmelgefahranalyse und eine darauf basierende Entfeuchtung ist, dass der Gesamtwärmedurchgangswiderstand (R_{ges} ) möglichst nahe der tatsächlichen Außenwandkonstruktion entspricht. Daher ist es nicht möglich, eine pauschale Empfehlung abzugeben.

Lüftungsempfehlung

Hier geht es um eine Lüftungsempfehlung, ausschließlich zum Zweck der Schimmelvermeidung.

Luftgüte, Virenlasten etc. sind nicht Gegenstand dieser Betrachtungen!

Oft ist nicht auf den ersten Blick erkennbar, ob die absolute Luftfeuchtigkeit in einem Innenraum größer als draußen ist und damit bedenkenlos gelüftet werden kann oder ob diese geringer als außen ist, weswegen eine Lüftung das Schimmelrisiko erhöhen würde. Eine Anzeige für „Nicht Lüften“ oder „Lüften empfohlen“, über eine beliebige Homematic-Anzeige und/oder eine Systemvariable ist hier hilfreich…

Homematic Raumklimaüberwachung und Entfeuchtung
Homematic Raumklimaüberwachung und Entfeuchtung
Homematic Raumklimaüberwachung und Entfeuchtung
Homematic Raumklimaüberwachung und Entfeuchtung

Die Berechnung der Lüftungsempfehlung (oLueften) in Abhängigkeit von der Außentemperatur (t_{au}) , der Raumtemperatur (t_{in}) sowie der absoluten Luftfeuchtigkeit außen (af_{au}) und im Raum (af_{in}) mit 0,5 \frac{g}{kg} kann über den folgenden Codeschnipsel erfolgen…

! Berechnung der Lüftungsempfehlung mit 0,5 g/kg und 0,7 K Hysterese
if ((afau <= (afin - 0.8)) && (tau <= (tin - 1.0)) && (tin > 20.7))
{oLueften.Variable(true);}
else
{ if ((afau >= (afin - 0.3)) || (tau >= (tin - 0.3)) || (tin <= 20.0))
{oLueften.Variable(false);}
}

Ein Lüften wird immer dann empfohlen, wenn die Außenluft trockener ist als die Innenluft. Somit ist es im Winter meist sinnvoll zu Lüften. Die hier ermittelte Lüftungsempfehlung bzw. automatische Lüftung ist für die „kritischen Jahreszeiten“ gedacht (Sommer bzw. Übergangszeit mit Außentemperaturen über 15°C).

Mit der Einbeziehung der Temperaturdifferenz Innen/Außen im obigen Code wird vermieden, dass im Sommer nicht nur zu feuchte Luft, sondern auch zu warme Luft von außen einströmt, um den Raum nicht weiter aufzuheizen.


Die Berücksichtigung der Raumtemperatur soll zudem eine zu starke Auskühlung des Raumes im Winter verhindern, denn die Auskühlung muss anschließend wieder durch die Heizung kompensiert werden. Einen idealen Wert für die Raumtemperaturgrenzen gibt es nicht, denn dieser hängt stark von der Raumnutzung und individuellen Erfordernissen ab. Das hierdurch per se entstehende Dilemma „viel frische Luft“ versus „Energieeinsparung“ muss jeder für sich selbst lösen.

Der Ausschaltwert (im Beispiel 20,0 °C) ist der Wert, unter den die Raumtemperatur nicht sinken soll. Der Einschaltwert ergibt sich aus dem Ausschaltwert plus einer Hysterese (hier 0,7 K). Diese verhindert, dass die Anzeige im Grenzbereich ständig hin und her wechselt. Somit erhält man neben einer Empfehlung zum Lüften auch eine Empfehlung, das Lüften wieder zu beenden.

Steuerung eines Luftentfeuchters bzw. Lüfters

Viele Luftentfeuchter bieten die Möglichkeit, sich automatisch beim Erreichen einer bestimmten relativen Luftfeuchtigkeit einzuschalten. Aufgrund des hohen Energieverbrauchs dieser Geräte ist es aber wirtschaftlicher, den Entfeuchter automatisiert nur dann einzuschalten, wenn auch eine Gefahr zur Bildung von Schimmel besteht. Zur Steuerung von Luftentfeuchtern gab es bei Homematic-Inside mal ein Skript, das zur Schonung des Entfeuchter-Kompressors den Zustand „Ein“ bzw. „Aus“ jeweils mindestens 45 min (2700 sec) lang aufrechterhält. Dieses Skript lässt sich sehr einfach um eine Abfrage des Ergebnisses der Schimmelgefahranalyse erweitern. Dabei kann die relative Luftfeuchtigkeit über einen (optionalen) Grenzwert (hier 64 %) zur Verbreiterung der Hysterese einbezogen werden…

object Feuchtigkeit = dom.GetObject("RaumXY_Raumregler:1.HUMIDITY"); ! Name des Temperatur-/Feuchtesensors im Innenraum
object Entfeuchter = dom.GetObject("RaumXY_Raumregler:1.STATE"); ! Name des Aktors, an dem der Luftentdeuchter angeschlossen ist
object Schimmelgefahr = dom.GetObject("RaumXY_Schimmel"); ! Name der Systemvariablen für die Schimmelgefahranalyse (Werteliste: keine Gefahr;Warnung;Alarm)
time timestamp = Entfeuchter.Timestamp();
time now = system.Date("%Y-%m-%d %H:%M:%S").ToTime();
integer diff = now.ToInteger() - timestamp.ToInteger();
if (diff > 2700) {
  if ((Feuchtigkeit.Value() > 64) && (Entfeuchter.Value() == 0) && (Schimmelgefahr.Value() > 1)) {
     Entfeuchter.State(1);
  }
  if ((Feuchtigkeit.Value() < 64) && (Entfeuchter.Value() == 1)) {
     Entfeuchter.State(0);
  }
}

Da bei Homematic-IP-Geräten der Zeitstempel – zumindest bei solch großen Zeitspannen – oftmals frühzeitig zurückgesetzt wird, sollte man bei Nutzung eines IP-Aktors besser z.B. „LastDPActionTime“ oder alternativ einen einfachen Zähler mit einer zusätzlichen Systemvariablen einsetzen. Das folgende Beispielskript wird über einen Timer alle 293 Sekunden aufgerufen. Nach knapp 44 Minuten springt der Zähler auf 9 und schaltet bei Bedarf den Entfeuchter. Er verbleibt auf dem Wert 9, bis der Entfeuchter das nächste Mal geschaltet wird…

object Feuchtigkeit = dom.GetObject("HmIP-RF.000XXXXXXXXXXX:1.HUMIDITY");
object Entfeuchter = dom.GetObject("HmIP-RF.000XXXXXXXXXXX:3.STATE");
object Schimmelgefahr = dom.GetObject("RaumXY_Schimmel");
object Counter = dom.GetObject("RaumXY_Entfeuchter_Timestamp");
Counter.State(Counter.Value()+1);
if (Counter.Value() > 8) {
  Counter.State(9);
  if ((Feuchtigkeit.Value() > 64) && (Entfeuchter.Value() == 0) && (Schimmelgefahr.Value() > 1)) {
     Entfeuchter.State(1);
     Counter.State(0);
  }
  if ((Feuchtigkeit.Value() < 64) && (Entfeuchter.Value() == 1)) {
     Entfeuchter.State(0);
     Counter.State(0);
  }
}

Statt eines Entfeuchters kann auch ein Wandventilator eingebunden werden. Falls dieser nicht nur die feuchte Luft nach draußen leitet, sondern einen Austausch mit der Außenluft vornimmt, bietet es sich an, analog zu der Berechnung der Lüftungsempfehlung vorzugehen und das Ergebnis der Schimmelgefahranalyse (oSchimmel) mit einzubeziehen…

! Prüfen, ob Raum schon zu kalt
if (ti > 20.0)
    { if ((afau <= (afin - 0.8)) && (ta <= (ti - 1.0)) && (Licht.Value() == 0) && (oSchimmel.Value() == 2))
        {Ventilator.State(1);}
        else
        { if ((afau >= (afin - 0.3)) || (ta >= (ti - 0.3)) || (Licht.Value() == 1) || (oSchimmel.Value() == 1) || (oSchimmel.Value() == 0))
        {Ventilator.State(0);}
        }
    }
else
    { if (ti <= 19.5)
    {Ventilator.State(0);}
    }

Beispielskripte

Für die folgenden kompletten Beispielskripte sind vorher die entsprechenden SystemVariablen anzulegen und die Gerätenamen auf die eigenen Sensoren und Aktoren anzupassen.


Name des Sensors innen: „RaumXY_Raumregler“
Systemvariable für das Lüften – Werteliste: keine Gefahr;Warnung;Alarm: „RaumXY_Schimmel“
Systemvariable für die Lüftungsempfehlung – Logikwert: wahr = ist wahr, falsch = ist falsch: „RaumXY_Lueften“
Name des Sensors außen: „Aussen_TempFeuSens“

Weiterhin sind die eigenen Wünsche/Werte für die folgenden Konstanten einzutragen…


Oberer Raumtemperaturgrenzwert in °C: „XX.X“
Unterer Raumtemperaturgrenzwert in °C: „YY.Y“
Mittels eigener Messung ermittelter Gesamtwärmeübergangswiderstand R_{ges} : „Z.ZZZ“

Bei Bedarf kann man natürlich weitere Systemvariablen für die anderen Werte (z.B. die absolute Feuchte) anlegen und in die Skripte einbauen.

Beispiel 1

Schimmelgefahranalyse in einem suboptimal isolierten Kellerraum mit manueller Lüftung (Fenster) und einem elektrischen Luftentfeuchter ohne CUxD-Nutzung

Das nachfolgende Skript für die Schimmelgefahranalyse und die Lüftungsempfehlung wird immer dann aufgerufen, wenn die relative Raum- oder Außenfeuchte aktualisiert wird:

Homematic Raumklimaüberwachung und Entfeuchtung
! Berechnung der Schimmelwarnung und Lueftungsempfehlung
object oTHi = dom.GetObject("RaumXY_Raumregler:1"); ! Name des Temperatur-/Feuchtesensors im Innenraum
object oTi   = oTHi.DPByHssDP("TEMPERATURE");
object oHi   = oTHi.DPByHssDP("HUMIDITY");
object oSchimmel = dom.GetObject("RaumXY_Schimmel");! Name der Systemvariablen für die Schimmelgefahranalyse (Werteliste: keine Gefahr;Warnung;Alarm)
object oLueften = dom.GetObject("RaumXY_Lueften"); ! Name der Systemvariablen für die Lüftungsempfehlung (Logikwert: wahr = ist wahr, falsch = ist falsch)
object oTHa = dom.GetObject("Aussen_TempFeuSens:1"); ! Name des Temperatur-/Feuchtesensors im Außenbereich
object oTa = oTHa.DPByHssDP("TEMPERATURE");
object oHa = oTHa.DPByHssDP("HUMIDITY");
! Programmteil Lüftungsempfehlung
! Lokale Variablen
real tin = oTi.Value(); ! Temperatur in °C innen
integer rfin = oHi.Value(); ! relative Feuchte in % innen
real afin; ! absolute Feuchte in g/kg innen
real tau = oTa.Value(); ! Temperatur in °C außen
integer rfau = oHa.Value(); ! relative Feuchte in % außen
real afau; ! absolute Feuchte in g/kg außen
! Berechnung der absoluten Feuchte innen
if (tin < 0.0) {tin = 0.0;}
if (tin < 10.0)
{ afin = (3.78 + (0.285 * tin) + (0.0052 * tin * tin) + (0.0005 * tin * tin * tin));
}
else
{ afin = (7.62 + (0.524 * (tin-10.0)) + (0.0131 * (tin-10.0) * (tin-10.0)) + (0.00048 * (tin-10.0) * (tin-10.0) * (tin-10.0)));
}
afin = (afin * rfin) / (100.0 + afin * (100.0 - rfin) / 622);
! Berechnung der absoluten Feuchte außen
if (tau < 0.0) {tau = 0.0;}
if (tau < 10.0)
{ afau = (3.78 + (0.285 * tau) + (0.0052 * tau * tau) + (0.0005 * tau * tau * tau));
}
else
{ afau = (7.62 + (0.524 * (tau-10.0)) + (0.0131 * (tau-10.0) * (tau-10.0)) + (0.00048 * (tau-10.0) * (tau-10.0) * (tau-10.0)));
}
afau = (afau * rfau) / (100.0 + afau * (100.0 - rfau) / 622);
! Berechnung der Lüftungsempfehlung mit 0,5 g/kg und 0,7 K Hysterese
if ((afau <= (afin - 0.8)) && (tau <= (tin - 1.0)) && (tin > XX.X))
{oLueften.State(true);}
else
{ if ((afau >= (afin - 0.3)) || (tau >= (tin - 0.3)) || (tin <= YY.Y))
{oLueften.State(false);}
}
! Programmteil Schimmelwarnung
! Berechnung der Oberflächentemperatur der Außenwandecke
real tw; ! Oberfächentemperatur der Außenwandecke in °C
real ta = oTa.Value(); ! Außentemperatur in °C
real ti = oTi.Value(); ! Raumtemperatur in °C
tw = ti + ((0.13 / Z.ZZZ) * (ta - ti)); ! Rges = Z.ZZZ empirisch ermittelt
! Lokale Variablen
real    t;    ! Temperatur in °C
integer rf;   ! relative Feuchte in %
real    afw;  ! Schimmelwarn-Grenzfeuchte in g/kg
real    afa;  ! Schimmelalarm-Grenzfeuchte in g/kg
real    afs;  ! Sättigungsfeuchte der Wand in g/kg
! Berechnung der Sättigungsfeuchte der Wand
t = tw;
if (t < 10.0)
{ afs = (3.78 + (0.285 * t) + (0.0052 * t * t) + (0.0005 * t * t * t));
}
else
{ afs = (7.62 + (0.524 * (t-10.0)) + (0.0131 * (t-10.0) * (t-10.0)) + (0.00048 * (t-10.0) * (t-10.0) * (t-10.0)));
}
! Berechnung Warn-Grenzfeuchte
rf = 70;
afw = (afs * rf) / (100.0 + afs * (100.0 - rf) / 622);
! Berechnung Alarm-Grenzfeuchte
rf = 80;
afa = (afs * rf) / (100.0 + afs * (100.0 - rf) / 622);
! Schimmelwarnung
! 0 - keine Gefahr
! 1 - Warnung
! 2 - Alarm
if ((afin > afa) && (rfin > 64 )) {oSchimmel.State(2);}
    else {
        if ((afin > afa) || (afin > afw)) {oSchimmel.State(1);}
        else {oSchimmel.State(0);}
    }

Die Aktivierung des Entfeuchters erfolgt mit einem der bereits oben beschriebenen Skripte, das über das WebUI-Zeitmodul…

Homematic Raumklimaüberwachung und Entfeuchtung

…oder einen CUxD SystemTimer…

Homematic Raumklimaüberwachung und Entfeuchtung

…ca. alle 5 Minuten aufgerufen wird, z.B. wie hier für einen klassischen Homematic-Schaltaktor…

object Feuchtigkeit = dom.GetObject("RaumXY_Raumregler:1.HUMIDITY"); ! Name des Temperatur-/Feuchtesensors im Innenraum
object Entfeuchter = dom.GetObject("RaumXY_Raumregler:1.STATE"); ! Name des Aktors, an dem der Luftentdeuchter angeschlossen ist
object Schimmelgefahr = dom.GetObject("RaumXY_Schimmel"); ! Name der Systemvariablen für die Schimmelgefahranalyse (Werteliste: keine Gefahr;Warnung;Alarm)
time timestamp = Entfeuchter.Timestamp();
time now = system.Date("%Y-%m-%d %H:%M:%S").ToTime();
integer diff = now.ToInteger() - timestamp.ToInteger();
if (diff > 2700) {
  if ((Feuchtigkeit.Value() > 64) && (Entfeuchter.Value() == 0) && (Schimmelgefahr.Value() > 1)) {
     Entfeuchter.State(1);
  }
  if ((Feuchtigkeit.Value() < 64) && (Entfeuchter.Value() == 1)) {
     Entfeuchter.State(0);
  }
}

Diese Analyse und Entfeuchtungslogik sorgt hier in einem „Problemraum“ seit Jahren für ein absolut Schimmel-freies Raumklima bei möglichst minimaler Laufzeit des Entfeuchters.

Die folgende Grafik zeigt beispielhaft das Erreichen der Alarm-Grenzfeuchte und das Einschalten des Entfeuchters gegen 06:15 Uhr. Obwohl die Schimmelgefahr bereits nach wenigen Minuten wieder gebannt war, lief das Gerät noch die eingestellten 45 Minuten weiter.

Die Grafik zeigt auch, dass der Entfeuchter sich bei einer Regelung nach der relativen Luftfeuchte, wie sie viele handelsübliche Geräte von Hause aus mitbringen, bei einer angenommenen Schaltschwelle von 69 % gegen 16:15 Uhr nochmals eingeschaltet hätte. Zu diesem Zeitpunkt lag aber nicht einmal eine Schimmelwarnung vor. Somit wäre im Grunde keine aktive Entfeuchtung zur Schimmelvermeidung erforderlich gewesen…

Homematic Raumklimaüberwachung und Entfeuchtung

Beispiel 2

Schimmelgefahranalyse in einem isolierten Badezimmer mit Sauna unter Verwendung des CUxD

Das folgende Skript wird wie in Beispiel 1, jedoch auf die Aktualisierung der CUxD-Sensor-Pendants getriggert…

! Berechnung der Schimmelwarnung und Lueftungsempfehlung
object oTHi = dom.GetObject("RaumXY_Raumregler_CUxD:1");
object oTi   = oTHi.DPByHssDP("TEMPERATURE");
object oHi   = oTHi.DPByHssDP("HUMIDITYF");
object oAi   = oTHi.DPByHssDP("ABS_HUMIDITY");
object oTHa = dom.GetObject("Aussen_TempFeuSens_CUxD:1");
object oTa = oTHa.DPByHssDP("TEMPERATURE");
object oHa = oTHa.DPByHssDP("HUMIDITYF");
object oAa = oTHa.DPByHssDP("ABS_HUMIDITY");
object oSchimmel = dom.GetObject("RaumXY_Schimmel");
object oLueften = dom.GetObject("RaumXY_Lueften");
! Programmteil Lüftungsempfehlung
! Lokale Variablen
real tin = oTi.Value(); ! Temperatur in °C innen
integer rfin = oHi.Value(); ! relative Feuchte in % innen
real afin = oAi.Value();  ! absolute Feuchte in g/kg innen
real tau = oTa.Value(); ! Temperatur in °C außen
integer rfau = oHa.Value(); ! relative Feuchte in % außen
real afau = oAa.Value();  ! absolute Feuchte in g/kg außen
! Berechnung der Lüftungsempfehlung mit 0,5 g/kg und 0,7 K Hysterese
if ((afau <= (afin - 0.8)) && (tau <= (tin - 1.0)) && (tin > XX.X))
{oLueften.State(true);}
else
{ if ((afau >= (afin - 0.3)) || (tau >= (tin - 0.3)) || (tin <= YY.Y))
{oLueften.State(false);}
}
! Programmteil Schimmelwarnung
! Berechnung der Oberflächentemperatur der Außenwandecke
real tw; ! Oberfächentemperatur der Außenwandecke in °C
real ta = oTa.Value(); ! Außentemperatur in °C
real ti = oTi.Value(); ! Raumtemperatur in °C
tw = ti + ((0.13 / Z.ZZZ) * (ta - ti)); ! Rges = Z.ZZZ empirisch ermittelt
! Lokale Variablen
real    t;    ! Temperatur in °C
integer rf; ! relative Feuchte in %
real    afw;  ! Schimmelwarn-Grenzfeuchte in g/kg
real    afa;  ! Schimmelalarm-Grenzfeuchte in g/kg
t = tw;
! Berechnung Warn-Grenzfeuchte
rf = 70;
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ afw = (3.78 + (0.285 * t) + (0.0052 * t * t) + (0.0005 * t * t * t));
}
else
{ afw = (7.62 + (0.524 * (t-10.0)) + (0.0131 * (t-10.0) * (t-10.0)) + (0.00048 * (t-10.0) * (t-10.0) * (t-10.0)));
}
afw = (afw * rf) / (100.0 + afw * (100.0 - rf) / 622);
! Berechnung Alarm-Grenzfeuchte
rf = 80;
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ afa = (3.78 + (0.285 * t) + (0.0052 * t * t) + (0.0005 * t * t * t));
}
else
{ afa = (7.62 + (0.524 * (t-10.0)) + (0.0131 * (t-10.0) * (t-10.0)) + (0.00048 * (t-10.0) * (t-10.0) * (t-10.0)));
}
afa = (afa * rf) / (100.0 + afa * (100.0 - rf) / 622);
! Schimmelwarnung
! 0 - keine Gefahr
! 1 - Warnung
! 2 - Alarm
if ((afin > afa) && (rfin > 64 )) {oSchimmel.State(2);}
    else {
        if ((afin > afa) || (afin > afw)) {oSchimmel.State(1);}
        else {oSchimmel.State(0);}
    }

Montage des Außensensors

Abschließend noch eine Anmerkung zur Montage des Außensensors.

Wenn dieser so montiert ist, dass er immer im Schatten liegt, genügt ein Sensor. Falls das nicht möglich ist, bringen zwei Sensoren Abhilfe. Von denen ist dann jeweils einer in Abhängigkeit von der Tageszeit (Sonnenstand) auszuwählen.

Den Sensor bitte nicht in der unmittelbaren Nähe von Türen oder Fenstern montieren. Auf keinem Fall über Tür oder Fenster. In der Nähe geöffneter Fenster/Türen mischt sich die Außenluft mit der ausströmenden Raumluft und verfälscht das Ergebnis. Dieser Effekt ist um so geringer, je weiter der Sensor von Fenster oder Tür entfernt ist.

Zum korrespondierenden Beitrag im…

HomeMatic-Forum



Bitte beachten...

SMART WOHNEN in Stern's Haus ist ein rein privates, nicht kommerzielles Projekt. Meine Hinweise, Anleitungen, Schaltungen und Software werden so angeboten, „wie sie sind“, Support kann ich nur im Rahmen meiner begrenzten Freizeit leisten, hierfür bitte ich um Verständnis.
Die Verwendung meiner Hinweise, Anleitungen, Schaltungen und Software erfolgt auf eigenes Risiko. Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung! Für die Einhaltung der einschlägigen technischen Vorschriften ist jeder Anwender selbst verantwortlich!
Creative Commons Lizenzvertrag
Copyright © Jens-Peter Stern | SMART WOHNEN in Stern's Haus | sternshaus.de
  1. Hallo,
    im Script von Beispiel 2: Schimmelgefahranalyse in einem isolierten Badezimmer mit Sauna und einem einfachen Wandlüfter

    fehlen die Zeilen 8 und 9
    object oTa = oTHa.DPByHssDP(„TEMPERATURE“);
    object oHa = oTHa.DPByHssDP(„HUMIDITY“);

    • Stimmt, war wohl ein Kopierfehler. Ist bereits oben im Beitrag geändert.
      Danke für den Hinweis.

  2. Hiran Chaudhuri

    Der gesamte Artikel ist sehr gut gelungen. Vielen Dank, dass ich einerseits meine bislang gesammelte Erfahrung bestätigt sehen darf und durch die Erläuterung noch dazulerne.

    Für mich als Anfänger mit der Homematic war es jedoch nicht ganz einfach, das Script einzusetzen. Dies liegt im Wesentlichen an der Homematic Skriptsprache, aber ein wenig auch beim Skript selbst, welches ja für Homematic gebaut wurde:

    Die Messwerte und Systemvariablen werden über
    object oTHi = dom.GetObject(„RaumXY_Raumregler:1″);
    bzw weiter oben über
    t = dom.GetObject(raum+“.Sensor“).DPByHssDP(„TEMPERATURE“).Value();
    geholt. Dabei wird keinerlei Prüfung unternommen, ob das Objekt existiert oder einen Kanal repräsentiert. Und leider steigt die Homematic Skriptbearbeitung ohne jeglichen Kommentar aus. Mein Fehler war, durch Unwissen sowohl den Kanal als auch das Gerät mit dem Namen „Badezimmer.Sensor“ benannt zu haben – laut Dokumentation kein Fehler. Nur Objekte gleichen Typs müssen eindeutige Namen haben.

    Es wäre hilfreich, wenn das Skript testet, ob wirklich ein Kanal gefunden wurde und evtl. eine Log-Meldung schreibt.

    • Danke für den Beitrag, eine solche Prüfung würde möglicherweise helfen, individuelle Skriptfehler beim Einrichten einzugrenzen. Wenn das Skript einmal läuft, wird sie aber eigentlich ja nicht mehr benötigt. Mir ist es da lieber, das Skript schlanker zu halten aber das ist Geschmacksache. Bei Bedarf kann man es ja nach den eigenen Bedürfnissen anpassen.

  3. Super Beitrag, der mir sehr weiter geholfen hat. Danke dafür! 🙂

    Ein kleiner Fehler hat sich im Code des Beispiel 2 eingeschlichen (bei der Variable fehlen zwei Buchstaben).
    In Zeile 37 muss wie folgt lauten:
    afau = (afau * rfau) / (100.0 + afau * (100.0 – rfau) / 622);

    • Hallo Jörn,

      danke für das positive Feedback und den Hinweis auf den Fehler im Beispiel 2.
      Ich habe das oben im Skript bereits korrigiert.

      Liebe Grüße
      Jens

  4. Wolfgang S

    Hallo zusammen,
    ich bin beim Skripteschreiben ein absoluter Anfänger und hab keine Ahnung wie ich das Dingens so in die Homematik einbauen kann, dass es auch wirklich funktioniert.
    Zur Umgebung: ich habe ein Aussenthermometer und mehrere Innenthermometer. Die Idee war jeweils ein Pärchen gegeneinander zu vergleichen und eine Empfehlung zum Lüften oder eben nicht zu geben.
    Dann habe ich mal die erste Systemvariable z.B. Garten.Abs_Feuchte definiert (als Zahl etc)
    Weiters ein HM Programm, dass alle 5 min das erste Skript laufen lässt.
    Beim Skript testen bin ich schon mit Fehlermeldung hängen geblieben.
    Das nachfolgende ging dann wenigstens ohne Fehlermeldung: http://homematic-forum.de/forum/viewtopic.php?f=31&t=9835.
    Aber der Wert, der ausgegeben wird ist immer 0,0 g/kg.
    Gibt es irgendwo eine Schritt für Schritt Anleitung?
    Gruß
    Wolfgang

    • Hallo Wolfgang,
      da das Vorgehen hier sehr stark von den jeweiligen Gegebenheiten abhängt, gibt es da keine allgemein gültige Schritt für Schritt Anleitung, jedoch ganz unten einige Beispiele.

      So ganz ohne Skript Kenntnisse ist dieses Projekt möglicherweise jedoch eine Herausforderung.

  5. Frank Janka

    Ich verstehe die Bezeichnung irgendwie nicht:

    ! Absolute Luftfeuchte berechnen und in Systemvariable schreiben

    ! Raumname ist Bestandteil des Kanalnamens (Raum.Sensor)
    ! und des Namens der Systemvariable (Raum:Feuchtegehalt)
    string raum = „Wohnen“;

    ! Lokale Variablen
    real t; ! Temperatur in °C
    integer rf; ! relative Feuchte in %
    real af; ! Feuchtegehalt in g/kg

    ! Werte einlesen
    t = dom.GetObject(raum#“.Sensor“).DPByHssDP(„TEMPERATURE“).Value();
    rf = dom.GetObject(raum#“.Sensor“).DPByHssDP(„HUMIDITY“).Value();

    ++++++++++++++++

    „Wohnen“ ist ein Platzhalter für den Raumnamen. Kannst Du mal ein ausgefülltes Skript posten damit man das besser nachvollziehen kann?

    Danke und Grüße

    • Hallo Frank,

      die Codeschnipsel im oberen Teil dienen der Erläuterung der Berechnung und der Skriptbestanddteile. „Ausgefüllte Skripte“ findest du im Abschnitt 6. Beispielskripte. Die Beispiele 1 und 2 laufen bei mir im Keller bzw. in einem UG-Bad seit 2014 genau in dieser Form. Du musst nur die folgenden Paramter auf deine Situation umschreiben…

      Name des Sensors innen: „RaumXY_Raumregler“ -> Name deines Temp-/Feuchte Sensors oder Raumreglers im zu überwachenden Raum

      Systemvariable für das Lüften – Werteliste: keine Gefahr;Warnung;Alarm: „RaumXY_Schimmel“ -> Name der von dir angelegten Systemvariable

      Systemvariable für die Lüftungsempfehlung – Logikwert: wahr = ist wahr, falsch = ist falsch: „RaumXY_Lueften“ -> Name der von dir angelegten Systemvariable

      Name des Sensors außen: „Aussen_TempFeuSens“ -> Name deines Temp-/Feuchte Sensors im Außenbereich (Schatten)

      Weiterhin sind die eigenen Wünsche/Werte für die folgenden Konstanten einzutragen:

      Oberer Raumtemperaturgrenzwert in °C: „XX.X“ -> siehe Abschnitt 4. Lüftungsempfehlung

      Unterer Raumtemperaturgrenzwert in °C: „YY.Y“ -> siehe Abschnitt 4. Lüftungsempfehlung

      Mittels eigener Messung ermittelter Gesamtwärmeübergangswiderstand R_{ges} : „Z.ZZZ“ -> siehe Abschnitt 3. Schimmelwarnung

      Liebe Grüße Jens

  6. Hallo, super Artikel. Danke dafür.
    Habe mal eine Frage: im Beispiel 2 wird ein „Wandventilator“ gesteuert. Verstehe ich als einen Ventilator der die Raumluft durch ein Loch in der Außenwand nach draußen bläst.
    Wenn Luft raus geht, muss ja auch welche rein kommen. Da wenn dieser läuft wahrscheinlich kein Fenster auf ist, müsste die Luft doch durch angeschlossene Zimmer abgezogen werden. Das ganze rum gerechnet wie die Temperatur/Feuchtigkeit draußen ist könnte man sich in dem Beispiel daher doch sparen weil gar nicht mit der Außenluft getauscht wird. Oder wo ist mein Denkfehler?

    Danke und VG
    Maik

    • Hallo Maik,

      in diesem Beispiel wird tatsächlich ein einfacher Wandventilator (mit Verschlusslamellen) angesteuert. Ich stand hier damals vor der Entscheidung, eine vorhandene Wandöffnung zu verschließen oder mit einem Ventilator zu versehen. Letztlich habe ich mich für eben diesen einfachen Ventilator entschieden. Was du schreibst stimmt natürlich im Grunde. Die Luft, die rausgeblasen wird, muss auch nachfließen. Dafür gibt es die bekannten Tür-Lüftungsgitter. Bei mir dient der Ventilator dazu, nach dem Betrieb der Sauna die feuchte Luft schnell abzuziehen. Aufgrund der vorherigen Gänge ins Freie über den Flur und einen Kellerraum ist dann regelmäßig genügend frische Luft zum Austausch vorhanden. Das ist ein sehr spezieller Anwendungsfall, der aber in der Praxis prima funktioniert.

      Für andere Anwendungsfälle ist möglicherweise ein Ventilator mit Kreuzplattenwärmetauscher die bessere Lösung. Hierzu gibt es in den im Tutorial ganz unten zum HomeMatic-Forum verlinkten Beiträgen einige Diskussionen. Falls du dazu irgendwelche speziellen Fragen hast, stelle sie bitte besser im Forum, da die diesbezüglichen Überlegungen von „paul53“ stammen und er wohl eher dort mitliest.

      Liebe Grüße Jens

  7. Richtig episch wäre es nun, wenn ein Entfeuchtet den Raum schützt.
    Über ioBroker könnte man den immer so einschalten, dass das beste rauskommt erreicht wird. =)

    • Hallo Paul,
      Für die Einbeziehung eines Entfeuchters braucht es nicht unbedingt den ioBroker, das geht auch mit „Bordmitteln“, siehe oben im Beispielskript 1.
      Grüße Jens

  8. Hi ..
    Super Skript – DANKE.
    Nach langem hin und hier, habe ich es zum laufen gekriegt.
    Frage: welchen Rges Wert könnte ich als „generic Value“ eintragen, damit ich es nicht für mich selber Berechnen muss? 0.5?

    DANKE
    Mike

  9. Hallo Paul, tolle Arbeit.

    Ich entschuldige mich am Anfang, ich bin kein Deutschsprecher, ich habe es maschinell übersetzt.

    Ich habe ein Problem, das ich gerne mit Ihrem Skript lösen würde.

    Ich habe bestimmte Räume in meinem Haus, die schwieriger zu lüften sind. Dort kommt es aufgrund der schlechten Isolierung der Wände (Wärmebrücken) bei sehr feuchtem Wetter und niedrigen Temperaturen manchmal zu Schimmelbildung durch Feuchtigkeit an den kalten Wänden.

    Ich habe dieses Problem bisher mit kleinen lokalen Lüftern (5 V, niedrige Wattzahl) gelöst, die von der CCU über intelligente Steckdosen gesteuert werden. Diese sorgen für eine „Aufwirbelung“ der Luft an dieser Stelle, was das Problem ein Stück weit löst.

    Ich würde aber gerne zu einer intelligenteren Form der Steuerung übergehen (z.B. auch für ganze Räume).

    Ich müsste Ihr Skript abändern, aber ich bin ein absoluter Laie, deshalb bitte ich Sie um Ihre Hilfe bei der Änderung:

    – Ich habe Außentemperatur und Luftfeuchtigkeit in lokalen HM-Variablen gespeichert, ich verwende keinen HM-Außensensor, sondern eine Tempest-Wetterstation. Die Variablen heißen „WF_relative_humidity“ und „WF_air_temperature“.

    – Ich verwende alte (ansonsten unbenutzte), aber immer noch sehr genaue HM-Thermostate HM-CC-TC zur Messung von Temperatur und Luftfeuchtigkeit in den Problembereichen

    – Wie kann ich eine intelligente Steckdose steuern, die meinen Ventilator schaltet?

    Könnte ich Sie bitten, Ihr Skript so zu ändern, dass es die verschiedenen Quellen für meine Außentemperatur und Luftfeuchtigkeit und die verschiedenen internen Thermostate für die Innenwerte berücksichtigt, wie ich es oben beschrieben habe?

    Vielen Dank, und ich werde mich freuen, Ihre Bemühungen zu belohnen 🙂
    Petr

    • Hallo Petr,

      ich schaue mir das gerne einmal an und melde mich dann per Mail, da es sich ja um eine eher individuelle Anpassung handelt, die für die Allgemeinheit nicht so interessant ist.

      Vorab wäre es aber wichtig zu wissen, ob der Gesamtwärmedurchgangswiderstand (Rges) der Außenwände aller Räume bekannt ist, in denen die Entfeuchtung berechnet werden soll (Aufbau der Wand oder Messreihe -> siehe Kapitel 3. Schimmelwarnung im Tutorial).

      Es ist für die hier zugrunde liegende Methode essenziell, dass dieser möglichst nahe der tatsächlichen Außenwandkonstruktion entspricht, ansonsten wird das nicht wirklich funktionieren.
      Für den Rges eine pauschale Empfehlung abzugeben ist leider nicht möglich!

      Grüße Jens

  10. Wolfgang

    Hallo,
    geht das Skript auch für Temperaturen unter 0 Grad?
    Es wäre für eine Garage, die innen Schimmel ansetzt wegen zu hoher Luftfeuchte …

    • Hallo Wolfgang,
      das ist eine gute Frage. Unter Nutzung der CUxD-Variante sollten zumindest Taupunkt und absolute Feuchte korrekt berechnet werden. Ich weiß aber nicht wirklich, ob diese Methodik für eine Garage mit der wohl kritischsten Wärmebrücke am Tor sinnvoll ist, da ich selbst kein Fachmann für die hinter dem Skript stehende Thermodynamik bin. Das diesbezügliche Wissen hat der Nutzer „paul53“ aus dem Homematic-Forum beigetragen. Ich schlage vor, die Frage dort mal zu stellen…
      https://homematic-forum.de/forum/viewtopic.php?f=43&t=9835
      Grüße Jens

  11. Hallo,

    ich habe entsprechend dem Hinweis unter 3. Schimmelwarnung einen Temperatur/Feuchtefühler an der kältesten Außenwandstelle montiert und ihn in CUxD eingebunden. Das liefert mit die Wandtemperatur tw und die Taupunkttemperatur tp.
    Ist es damit wirklich möglich, über die Entscheidungsregeln

    keine Schimmelgefahr, wenn tw mehr als 2°C über tp
    Schimmelwarnung, wenn tw zwischewn 1°C bis 2°C über tp
    Schimmelalarm, wenn tw unter oder bis zu 1°C über tp

    zu einer Entscheidung zu kommen? Müsste da nicht die Temperatur und Feuchtigkeit außen (wäre vorhanden) mit einbezogen werden, oder die Temperatur und Feuchtigkeit innen?

    Danke jolo

    • Hallo jolo,

      wie oben geschrieben, hatte ich diesen Artikel 2014 unter Mitwirkungen des Users „paul53“ aus dem Homematic-Forum erstellt. Der Beitrag ist quasi eine Zusammenfassung der dortigen Diskussionen. Von paul53 stammen die physikalischen Hintergrundüberlegungen und entsprechenden Skriptanteile. Da ich nicht glaube, dass paul53 hier regelmäßig mitliest, empfehle ich, deine Frage im korrespondierenden „Faden“ des Forums zu stellen, der ist Ende des Artikels verlinkt.

      Aus der Praxis kann ich dir aber berichten, dass ich das hier seit 2012 in zwei Räumen genau so betreibe und sowohl Schimmelanalyse als auch Lüftungsempfehlung und Entfeuchterschaltung prima funktionieren.

      Grüße Jens

      • Hallo Jens,

        danke für die schnelle Antwort. Den „Faden“ werde ich aufsuchen. Anschlussfrage: bedeutet in deiner Antwort „genau so“, dass du es wie von mir beschrieben betreibst oder wie im obigen Beitrag beschrieben?

        Danke

  12. Nochmals danke.
    Ich habe mir jetzt den Abschnitt „Beispiel 2: Schimmelgefahranalyse in einem isolierten Badezimmer mit Sauna unter Verwendung des CUxD“ angesehen. Dort werden offenbar zwei Temp-Feucht-Sensoren mit CUxD verwendet. Beide habe ich (der außen ist bereits für eine Garagenlüftung in Betrieb). Ist der Sensor für innen so gedacht, dass er an der kältesten Stelle der Innenwand montiert ist, wie in 3. Schimmelwarnung beschrieben?

    Danke und Grüße

    • Die beiden Beispiele stellen meine „Live“-Konfiguration dar. Beispiel 2 ist ein Badezimmer mit Sauna. Der Sensor ist dort ein HmIP-BWTH, der an einer Innenwand eingebaut wurde, wo vorher ein „altes“ Thermostat für die FBH saß. Im Beispiel 1 ist es ein älterer HM-CC-TC Raumregler, ebenfalls an einer Innenwand in einem Kellerraum. Die Innensensoren brauchen nicht an der kältesten Stelle zu sein und sind es an den Innenwänden hier auch nicht. Lediglich der Außensensor muss im Schatten montiert sein, das ist bei mir ein ebenfalls noch älterer HM-WDS10-TH-O.
      Die kälteste Stelle im Raum spielt aber eine Rolle bei der Ermittlung des Rges, siehe Kapitel 3.
      Grüße Jens

  13. Danke für die ausführliche Antwort.
    Meine Idee war, den Temp-Feucht-Sensor an der kältesten Innenwandstell anzubringen, damit er mir tw liefert, um die „unscharfe“ Bestimmung von Rges zu umgehen. Dann brauche ich aber einen weiteren Temp-Feucht-Sensor für die Innen-Temperatur und -Feuchtigkeit.
    Der oben genannte Hinweis unter 3. Schimmelwarnung hat mich auf die Idee kommen lassen, dass dies nicht notwendig ist. Ich hätte dann aber in der Formel für Rges die Situation tw = ti.

    Werde jetzt das Script für CUxd am Ende des Artikels versuchen umzusetzen. Die Bestimmung von Rges entweder mit zweitem Temp-Feucht-Fühler oder per Messreihe und einem Temp-Feucht-Fühler.

    Grüße

Kommentare sind geschlossen.

WordPress Cookie Plugin von Real Cookie Banner