Automatische Lüftungsempfehlung mit HomeMatic IP auf der CCU3 mit Wetterstation und Thermostat

Geöffnetes Badezimmerfenster

Wer kennt es nicht: beschlagene Spiegel und hohe Luftfeuchte nach dem Duschen. Doch wann lohnt es sich tatsächlich, das Bad zu lüften? Mit Homematic IP, einer CCU3, der Wetterstation, einem Thermostat im Bad und etwas Mathematik lässt sich diese Entscheidung automatisieren. In diesem Beitrag erfährst du, wie man ein Homematic Script erstellt, das anhand von Temperatur- und Feuchtigkeitswerten automatisch entscheidet, ob Lüften sinnvoll ist – und wie die Physik dahinter funktioniert.

Warum absolute Feuchte zählt

Die relative Luftfeuchtigkeit (z. B. 60 %) hängt stark von der Temperatur ab, was sie als Steuergröße ungeeignet macht. Kältere Luft kann weniger Wasser aufnehmen, weshalb winterliche Außenluft zwar eine hohe relative, aber sehr niedrige absolute Feuchte hat. Erst durch Erwärmen wird sie drinnen spürbar „trockener“. Deshalb vergleicht unser Script die absolute Luftfeuchtigkeit innen und außen.

Die Mathematik dahinter

Um die absolute Luftfeuchte zu berechnen, nutzen wir drei bekannte Formeln aus der Hygrometrie:

  1. Magnus-Formel (Sättigungsdampfdruck über Wasser):
    e_s(T) = 6.112 * exp(17.62*T / (243.12 + T))
    Hier ist T die Temperatur in °C und e_s(T) das Ergebnis in hPa. Sie beschreibt den maximal möglichen Wasserdampfdruck bei gegebener Temperatur.
    Quelle: Wikipedia: Magnus-Formel
  2. tatsächlicher Dampfdruck:
    e = (RH / 100) * e_s(T)
    RH ist die relative Feuchte in %, e ergibt den tatsächlichen Dampfdruck des Wasserdampfes in der Luft.
  3. absolute Feuchte (in g/m³):
    a = (216.679 * e) / (T + 273.15)
    Diese Formel wandelt den Dampfdruck e in die absolute Masse an Wasserdampf um, die ein Kubikmeter Luft enthält.
    Quelle: RechnerOnline: Luftfeuchtigkeit Umrechnung

Das Script berechnet für beide Seiten (innen und außen) die absolute Luftfeuchte und ermittelt deren prozentuale Differenz. Erst wenn die Innenluft mindestens 15 % „feuchter“ ist als die Außenluft, wird eine Lüftungsempfehlung ausgegeben. Diese Schwelle lässt sich in einer Variablen anpassen.

Funktionsweise des Scripts

Für die Berechnung benötigen wir Messwerte von zwei Homematic-IP-Geräten:

  • HmIP-SWO-PL – Wetterstation (Außentemperatur & Luftfeuchtigkeit)
  • HmIP-STHD – Thermostat (Raumtemperatur & Luftfeuchtigkeit)

Das Script liest die vier Messwerte aus, wendet die oben genannten Formeln an und schreibt zwei Systemvariablen:

  • Bad Lüften → Bool (ob Lüften empfohlen ist)
  • Bad Lüften Differenz → Zahl (Prozentuale Feuchte-Differenz)

Voraussetzungen

  • CCU3 oder RaspberryMatic
  • beide Sensoren angelernt
  • Systemvariablen Bad Lüften (Logikwert) und Bad Lüften Differenz (Zahl) erstellt

Das komplette Homematic-Script

! HomeMatic Script: Lüftungsauswertung mit Differenz-Speicherung

! ========== KONFIGURATION ==========
real FEUCHTE_DELTA_PROZENT = 15.0; ! Mindestdifferenz innen vs. außen in Prozent für Lüftungsempfehlung

string wetterstation_sn = "00123456789ABC"; ! Seriennummer Wetterstation
string thermostat_sn = "000123456789AB"; ! Seriennummer Thermostat
string sysvar_bool = "Bad Lüften"; ! Name der Variable ob gelüftet werden soll
string sysvar_diff = "Bad Lüften Differenz"; ! Name der Variable mit der Prozentualen Abweichung der Luftfeuchtigkeit.

object dp_temp_aussen = dom.GetObject("HmIP-RF." # wetterstation_sn # ":1.ACTUAL_TEMPERATURE");
object dp_hum_aussen = dom.GetObject("HmIP-RF." # wetterstation_sn # ":1.HUMIDITY");
object dp_temp_innen = dom.GetObject("HmIP-RF." # thermostat_sn # ":1.ACTUAL_TEMPERATURE");
object dp_hum_innen = dom.GetObject("HmIP-RF." # thermostat_sn # ":1.HUMIDITY");
object sysvar_boolobj = dom.GetObject(sysvar_bool);
object sysvar_diffobj = dom.GetObject(sysvar_diff);

if (!dp_temp_aussen || !dp_hum_aussen || !dp_temp_innen || !dp_hum_innen) {
WriteLine("FEHLER: Sensor-Datenpunkte nicht gefunden!");
if (!dp_temp_aussen) { WriteLine("- Außentemperatur fehlt"); }
if (!dp_hum_aussen) { WriteLine("- Außenfeuchte fehlt"); }
if (!dp_temp_innen) { WriteLine("- Innentemperatur fehlt"); }
if (!dp_hum_innen) { WriteLine("- Innenfeuchte fehlt"); }
quit;
}
if (!sysvar_boolobj) { WriteLine("FEHLER: Systemvariable '" # sysvar_bool # "' fehlt!"); quit; }
if (!sysvar_diffobj) { WriteLine("FEHLER: Systemvariable '" # sysvar_diff # "' fehlt!"); quit; }

real T_o = dp_temp_aussen.Value();
real RH_o = dp_hum_aussen.Value();
real T_i = dp_temp_innen.Value();
real RH_i = dp_hum_innen.Value();

! Magnus-Formel für Sättigungsdampfdruck (hPa)
real expo_o = (0.0 + (17.62 * T_o) / (T_o + 243.12));
real expo_i = (0.0 + (17.62 * T_i) / (T_i + 243.12));
real e_s_o_hPa = 6.112 * (expo_o.Exp());
real e_s_i_hPa = 6.112 * (expo_i.Exp());

real e_o_hPa = ((e_s_o_hPa * RH_o) / 100.0);
real e_i_hPa = ((e_s_i_hPa * RH_i) / 100.0);

real a_o = (216.679 * e_o_hPa) / (T_o + 273.15);
real a_i = (216.679 * e_i_hPa) / (T_i + 273.15);

real delta_pct = 100.0 * (a_i - a_o) / a_o;

boolean lueften = (delta_pct >= FEUCHTE_DELTA_PROZENT);

real RH_o_warm = 100.0 * (e_o_hPa / e_s_i_hPa);
WriteLine("Innen: " # T_i.ToString(1) # "°C " # RH_i.ToString(0) # "% rF");
WriteLine("Außen: " # T_o.ToString(1) # "°C " # RH_o.ToString(0) # "% rF");
WriteLine("AbsFeuchtInnen: " # a_i.ToString(2) # " g/m³");
WriteLine("AbsFeuchtAußen: " # a_o.ToString(2) # " g/m³");
WriteLine("Feuchte-Differenz: " # delta_pct.ToString(2) # " %");
if (lueften) {
WriteLine("✓ Lüften empfohlen, RH neu: " # RH_o_warm.ToString(1) # "%");
} else {
WriteLine("✗ Nicht lüften, RH neu: " # RH_o_warm.ToString(1) # "%");
}

sysvar_boolobj.State(lueften); ! Empfehlung als Bool
sysvar_diffobj.State(delta_pct.ToString(2)); ! Prozentwert mit 2 Nachkommastellen

Ergebnisse interpretieren

Nach der Ausführung werden zwei Werte in der CCU3 angezeigt:

  • Bad Lüftentrue, wenn Innenfeuchte mindestens FEUCHTE_DELTA_PROZENT% höher ist
  • Bad Lüften Differenz → numerischer Wert der relativen Differenz

Mit diesen Informationen lassen sich weitere CCU3-Programme erstellen, z. B. eine automatische Benachrichtigung oder Anzeige auf einem Display.

Fazit

Dieses Homematic-Script nutzt bewährte physikalische Formeln, um die Lüftungsempfehlung datenbasiert zu treffen. Es ist leicht anpassbar, transparent in der Berechnung und erweitert das Smart‑Home um eine praxisnahe Funktion für Energieeffizienz und Schimmelprävention.

Quellen: Wikipedia: Magnus-Formel, RechnerOnline.de

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert