Script zur Berechnung des Feuchtegehalts

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

DonGyros
Beiträge: 80
Registriert: 28.01.2008, 13:05

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von DonGyros » 20.12.2012, 14:46

Hmm ich denke ich muss das auch mal mit alternativen Messgeräten testen denn irgendwie hab ich das Gefühl das da irgendwas nicht passt.

@JPS:
ich habe hier momentan dein Skript im Einsatz und habe heute mal eine kleine Messung durchgeführt.
Tatort ist das Badezimmer. Überwacht wurde das heute von 12:00 Uhr-14:30 Uhr (hier stand die ganze Zeit das Fenster offen).

Luftfeuchtigkeit innen: um 12 Uhr 86% -> um 14:30 Uhr 53%
Temperatur innen: um 12 Uhr 21.8 C° -> um 14:30 Uhr 16.25 C°

Luffeuchtigkeit aussen: um 12 Uhr 89% -> um 14:30 Uhr 84%
Temperatur aussen: um 12 Uhr 0,75 C° -> um 14:30 Uhr 1,5 C°

Obwohl die Luftfeuchtigkeit innen um über 30% gefallen ist und die Temperatur um knapp über 5 Grad, bekomme ich weiterhin angezeigt das gelüftet werden sollte und Schimmelalarm besteht.

RaumBad_Lueften: ist wahr
RaumBad_Schimmel: Alarm

Kann mir einer der Experten sagen welche Werte ich rein theoretisch innen erreichen müsste damit ich keine Lüftungsaufforderung sowie den Schimmelalarm erhalte? Oder das zumindest aus dem Alarm eine Warnung wird?

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von paul53 » 20.12.2012, 15:00

Wenn bei der Lüftungsempfehlung auch die Raumtemperatur berücksichtigt wird (siehe http://homematic-forum.de/forum/viewtop ... =16#p76667), verschwindet die Lüftungsempfehlung bei Auskühlung des Raumes.
Bezüglich des Schimmelalarmes vermute ich, daß ein zu kleiner Wert für Rges gewählt wurde ?
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: AW: Script zur Berechnung der absoluten Feuchte

Beitrag von JPS » 20.12.2012, 15:48

paul53 hat geschrieben:Bezüglich des Schimmelalarmes vermute ich, daß ein zu kleiner Wert für Rges gewählt wurde ?
Ja, das glaube ich auch.

Hast du schon eine Messreihe mittels IR-Thermometer erstellt? Diese sollte bei möglichst tiefer Außentemperatur, üblicher Raumtemperatur und natürlich geschlossenem Fenster erstellt werden.

Welchen Rges verwendest momentan und wie ist die Wand beschaffen?

Gesendet von meinem HTC One X mit Tapatalk 2
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

DonGyros
Beiträge: 80
Registriert: 28.01.2008, 13:05

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von DonGyros » 20.12.2012, 21:59

Wird tatsächlich der Rges das Problem sein?
Da mein IR-Thermometer noch nicht angekommen ist, habe ich in meinem (nicht mehr) jugendlichen Leichtsinn gedacht,
das ich einfach mal den Wert aus dem Skript stehen lasse und teste. Früher oder später muss sich ja an der Schimmelwarnung und
der Lüftungsempfehlung was ändern (auch wenn das auf einem falschen Rges basiert).

Das Bad befindet sich im OG. Die Aussenwand (Nordseite) ist eine Dachschräge (Rigipsplatten verputzt und bestrichen, dahinter Dämmmaterial und dann irgendwann das Dach/Ziegel). In dieser Dachschräge ist auch ein Dachfenster vorhanden. Der unter Teil der Aussenwand (ca. 1,5 m) besteht aus YTONG (so wie der Rest des Hauses).

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von paul53 » 20.12.2012, 23:00

Der Rges-Wert von 0.268 (Script von JPS) ist extrem gering (Wärmebrücke).
Ein normaler Wert im Bereich der Fensterlaibung sollte eher zwischen 0,5 und 1 liegen. Rges für die Außenwände / Dachschräge sollte weit über 1,0 liegen.

Die Lüftungsempfehlung hat nichts mit Rges zu tun. Die Auswertung für die Lüftungsempfehlung sollte um die Temperaturdifferenz Innen/Aussen und um die Raumtemperatur ergänzt werden:

Code: Alles auswählen

! 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);}
}
Die Raumtemperaturgrenzwerte (im Beispiel 20,0°C/20,7°C) sollten den eigenen Bedürfnissen angepasst werden.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von JPS » 21.12.2012, 00:31

@ DonGyros
Du musst zunächst wirklich mal die Werte für die Berechnung des Rges selbst ermitteln. Bei meinem Wert handelt es sich um einen (absichtlich) vollkommen ungedämmten Nutzraum und dabei wurde die kälteste Stelle am Boden im Bereich einer Außentür identifiziert, das kann auf deine Gegebenheiten nicht passen.

@ Paul53
Mir ist der Mehrwert des Einbeziehens von Temperaturdifferenz Innen/Aussen und Raumtemperatur zur Ermittlung der Lüftungsempfehlung noch nicht ganz klar, vor allem, wie man die idealen Werte für die Raumtemperaturgrenzwerte ermittelt. Kannst du das noch etwas näher erläutern?
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von paul53 » 21.12.2012, 10:33

Die Einbeziehung der Temperaturdifferenz Innen/Außen ergibt sich daraus, dass man im Sommer nicht nur zu feuchte Luft, sondern auch nicht zu warme Luft von Außen einströmen lassen will, um den Raum nicht weiter aufzuheizen.

Die Einbeziehung der Raumtemperatur soll eine zu starke Auskühlung des Raumes im Winter vermeiden, denn die Auskühlung muß 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. 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 Hysterese.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: AW: Script zur Berechnung der absoluten Feuchte

Beitrag von JPS » 21.12.2012, 11:26

okay, jetzt ist mir das klar. Damit erhält man die Empfehlung, das Lüften wieder zu beenden. Das hatte ich so nicht gewechselt. Ich hatte die Anzeige bisher immer nur als Indikator für den Beginn des Lüftens begriffen.
So gesehen ist das schon ein deutlicher Mehrwert. Ich baue das mal bei mir ein.
Vielen Dank und schöne Weihnachten.

Gesendet von meinem HTC One X mit Tapatalk 2
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von paul53 » 21.12.2012, 15:55

Ergänzung zur Raumtemperaturgrenze:
Wie individuell die Festlegung der Raumtemperaturgrenze erfolgen muß, ergibt sich schon aus dem Konflikt "Viel frische Luft" contra "Energieeinsparung".

Frohe Weihnachten.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von JPS » 22.12.2012, 21:00

Ich habe das jetzt mal in das Script eingebaut und mit manuell errechneten Referenzwerten verglichen. Hierbei ist mir aufgefallen, dass der Codeschnipsel
paul53 hat geschrieben:Die Auswertung für die Lüftungsempfehlung sollte um die Temperaturdifferenz Innen/Aussen und um die Raumtemperatur ergänzt werden:

Code: Alles auswählen

! 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);}
}
nicht funktioniert. So funktioniert es problemlos:

Code: Alles auswählen

	! 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);}
	}
Beim Testen habe ich noch einen Bug im o.a. Beispiel-Script bemerkt. Ich hatte versehentlich den Wert der Außenfeuchte aus dem Innenthermostat ausgelesen. Besonders bei deutlichen Unterschieden zwischen der Innen- und Außenfeuchte führt das zu falschen Ergebnissen, sorry.

Hier das korrigierte Beispiel-Script, in dem auch die Lüftungsempfehlung mit 0,5 g/kg und 0,7 K Hysterese eingebaut ist. Wer das Script von oben nutzt, sollte diese korrigierte Version übernehmen:

Code: Alles auswählen

    ! RaumXY Berechnung der Schimmelwarnung und Lüftungsempfehlung 
    object oTHi = dom.GetObject("RaumXY_Raumregler:1");
    object oTi = oTHi.DPByHssDP("TEMPERATURE");
    object oHi = oTHi.DPByHssDP("HUMIDITY");
    object oSchimmel = dom.GetObject("RaumXY_Schimmel");
	object oLueften = dom.GetObject("RaumXY_Lueften");
    object oTHa = dom.GetObject("Aussen_TempFeuSens:1");
    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.29 * tin) + (0.0046 * tin * tin) + (0.00051 * tin * tin * tin)) * 0.01 * rfin;
    }
    else
    { afin = (7.62 + (0.51 * (tin-10.0)) + (0.0143 * (tin-10.0) * (tin-10.0)) + (0.00045 * (tin-10.0) * (tin-10.0) * (tin-10.0))) * 0.01 * rfin;
    }
	! Berechnung der absoluten Feuchte außen
	if (tau < 0.0) {tau = 0.0;}
    if (tau < 10.0)
    { afau = (3.78 + (0.29 * tau) + (0.0046 * tau * tau) + (0.00051 * tau * tau * tau)) * 0.01 * rfau;
    }
    else
    { afau = (7.62 + (0.51 * (tau-10.0)) + (0.0143 * (tau-10.0) * (tau-10.0)) + (0.00045 * (tau-10.0) * (tau-10.0) * (tau-10.0))) * 0.01 * rfau;
    }
	! 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.Variable(true);}
	else
	{ if ((afau >= (afin - 0.3)) || (tau >= (tin - 0.3)) || (tin <= YY.Y))
	{oLueften.Variable(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.29 * t) + (0.0046 * t * t) + (0.00051 * t * t * t)) * 0.01 * rf;
    }
    else
    { afw = (7.62 + (0.51 * (t-10.0)) + (0.0143 * (t-10.0) * (t-10.0)) + (0.00045 * (t-10.0) * (t-10.0) * (t-10.0))) * 0.01 * rf;
    }
    ! Berechnung Alarm-Grenzfeuchte
    rf = 80;
    if (t < 0.0) {t = 0.0;}
    if (t < 10.0)
    { afa = (3.78 + (0.29 * t) + (0.0046 * t * t) + (0.00051 * t * t * t)) * 0.01 * rf;
    }
    else
    { afa = (7.62 + (0.51 * (t-10.0)) + (0.0143 * (t-10.0) * (t-10.0)) + (0.00045 * (t-10.0) * (t-10.0) * (t-10.0))) * 0.01 * rf;
    }
 	! Schimmelwarnung
	! 0 - keine Gefahr
	! 1 - Warnung
	! 2 - Alarm
	if (afin > afa) {oSchimmel.Variable(2);}
        else {
            if (afin > afw) {oSchimmel.Variable(1);}
            else {oSchimmel.Variable(0);}
        }
Individuell an die eigenen Gegebenheiten anzupassen sind folgende Werte:

Zeile 02 (Name des Sensors innen):
RaumXY_Raumregler

Zeile 05 (Systemvariable für das Lüften - Werteliste: keine Gefahr;Warnung;Alarm):
RaumXY_Schimmel

Zeile 06 (Systemvariable für die Lüftungsempfehlung - Logikwert: wahr = ist wahr, falsch = ist falsch):
RaumXY_Lueften

Zeile 07 (Name des Sensors außen):
Aussen_TempFeuSens

Zeile 35 (oberer Raumtemperaturgrenzwert in °C):
XX.X

Zeile 38 (unterer Raumtemperaturgrenzwert in °C, siehe oben):
YY.Y

Zeile 46 (Mittels eigener Messung ermittelter Gesamtübergangswiderstand Rges, siehe oben):
Z.ZZZ
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“