Frage zum Taupunkt, Temperperatur und Luftfeuchte....

Hallo zusammen,

ich bin auf der Suche nach einer Möglichkeit mir anzeigen zu lassen, ob sich das Lüften lohnt.

Im Web bin ich auf diese Seite hier gestossen:

Klick mich…

Leider fehlt mir der Ansatz, dass in meinem Symcon umzusetzen. Im Forum gibt es ja ne Menge Threads zu dem Thema, aber leider habe ich keine für mich als Laien verständliche Lösung gefunden.

Folgende Messwerte stehen mir zur Verfügung:

Luftfeuchte pro Raum
Temperatur pro Raum

Luftfeuchte Aussen
Temperatur Aussen

Gibt es da vielleicht etwas fertiges, was ich anpassen kann für mich?

Danke und Gruß!

Hallo,

das nutze ich um auszurechnen ob ein Lüften sinnvoll ist oder nicht.

Gruß
Mike

<?
// Angaben manuell
$temperaturID = 22036 /*[Geräte\Erdgeschoss\Bad\WAT-Bad\Temperatur]*/;
$relfeuchteID = 27283 /*[Geräte\Erdgeschoss\Bad\WAT-Bad\Luftfeuchte]*/;
$absFeuchte_aussenID = 21561 /*[Geräte\Erdgeschoss\Balkon\KLM-Balkon\Abs_Luftfeuchte_Aussen]*/;

$temperatur = GetValue($temperaturID);
$relfeuchte = GetValue($relfeuchteID);
$absFeuchte_aussen = GetValue($absFeuchte_aussenID);

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------

// Instanz herausfinden
$parentID = IPS_GetParent($_IPS['SELF']);

// Variablen anlegen (0 = Boolean; 1 = Integer; 2 = Float; 3 = String)
$Taupunkt_ID 				= CreateVariableByName($parentID, "Taupunkt", 2, "~Temperature", "Innentemperatur","");
$Taupunktabstand_ID 		= CreateVariableByName($parentID, "Taupunktabstand", 2, "~Temperature", "Innentemperatur", "");
$Wandtemperatur_ID 			= CreateVariableByName($parentID, "Wandtemperatur", 2, "~Temperature", "Innentemperatur", "");
$Abs_Luftfeuchte_Innen_ID 	= CreateVariableByName($parentID, "Abs_Luftfeuchte_Innen", 2, "abs.humidity", "Luftfeuchte", "");
$Schimmel_TF_70_ID 			= CreateVariableByName($parentID, "Schimmel_TF_70", 2, "~Temperature", "Innentemperatur", "");
$Schimmel_TF_80_ID 			= CreateVariableByName($parentID, "Schimmel_TF_80", 2, "~Temperature", "Innentemperatur", "");
$AW_Wert_ID 				= CreateVariableByName($parentID, "AW_Wert", 2, "aw.value", "Information", "");
$Schimmelgefahr_ID 			= CreateVariableByName($parentID, "Schimmelgefahr", 1, "Schimmel", "Warning", "");
$Lueften_Sinnvoll_ID 		= CreateVariableByName($parentID, "Lueften_Sinnvoll", 0, "switch.ja_nein", "Information", "");

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------

// Event Anlegen (0 = Variablenaktualisierung, 1 = Variablenänderung, 2 = Grenzüberschreitung. Grenzwert wird über IPS_SetEventTriggerValue festgelegt, 3 = Grenzunterschreitung. Grenzwert wird über IPS_SetEventTriggerValue festgelegt, 4 = bestimmtem Wert. Wert wird über IPS_SetEventTriggerValue festgelegt

// Legt ein Trigger-Event (bei Variablenänderung) für die Variable mit der Objekt-ID ... an (damit dieses Skript hier ausgeführt wird, wenn die Variable sich ändert)
CreateEventTrigger(IPS_GetName($temperaturID), $temperaturID, $_IPS['SELF'], 1); 
CreateEventTrigger(IPS_GetName($relfeuchteID), $relfeuchteID, $_IPS['SELF'], 1);

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------

// Variablen für Berechnung
$lueften_sinnvoll 	= @IPS_GetObjectIDByName("Lueften_Sinnvoll", $parentID);
$dewpointID 		= @IPS_GetObjectIDByName("Taupunkt", $parentID);
$dewpointdistanceID = @IPS_GetObjectIDByName("Taupunktabstand", $parentID);
$walltemperatureID 	= @IPS_GetObjectIDByName("Wandtemperatur", $parentID);
$abshumID 			= @IPS_GetObjectIDByName("Abs_Luftfeuchte_Innen", $parentID);
$abshum_wandID 		= @IPS_GetObjectIDByName("Abs_Luftfeuchte_Wand", $parentID);
$schimmel70ID 		= @IPS_GetObjectIDByName("Schimmel_TF_70", $parentID);
$schimmel80ID 		= @IPS_GetObjectIDByName("Schimmel_TF_80", $parentID);
$schimmelgefahrID 	= @IPS_GetObjectIDByName("Schimmelgefahr", $parentID);
$awID 				= @IPS_GetObjectIDByName("AW_Wert", $parentID);

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------

// alle Formeln nach http://www.wettermail.de/wetter/feuchte.html
if( $temperatur >= 0 ){
	$a=7.5; $b=237.3;
}else{
	$a=7.6; $b=240.7;
}

// Berechnung Taupunkt nach Magnusformel //
//Berechnung Sättigungsdampfdruck
$sdd = 6.1078 * pow(10.0, ( ($a*$temperatur) / ($b+$temperatur) ) );

//Berechnung Dampfdruck
$dd =($relfeuchte/100.0) * $sdd;

//Berechnung Taupunkt
$v =log10 ( ($dd/6.1078) );
$td =($b*$v) / ($a-$v);
$taupunkt =($td*100+0.5) / 100;
SetValue($dewpointID, $taupunkt);

//Berechnung Taupunktabstand
$taupunktdistance = (($temperatur-3)-$taupunkt);
SetValue($dewpointdistanceID, $taupunktdistance);

//Berechnung Wandtemperatur
$walltemperature = ($temperatur-3);
SetValue($walltemperatureID, $walltemperature);

//Berechnung Absolute Feuchte Luft
$absFeuchte = (exp(log(10) * 5) * 18.016/8314.3 * $dd/(273.15 + $temperatur));
SetValue($abshumID, $absFeuchte);

//Lüften sinnvoll berechnen
$differenz = ($absFeuchte - $absFeuchte_aussen);

If ($differenz > 0)
{
	SetValue($lueften_sinnvoll, true);
}
Else If ($differenz <= 0)
{
	SetValue($lueften_sinnvoll, false);
}

//Berechnung Schimmelgefahr TF70
$v2 =log10 ( ((($relfeuchte/100.0) * $sdd)/(6.1078*0.7)) );
$td2 =($b*$v2) / ($a-$v2);
$tempSchimmel70 =($td2*100+0.5) / 100;
SetValue($schimmel70ID, $tempSchimmel70);

//Berechnung Schimmelgefahr TF80
$v2 =log10 ( ((($relfeuchte/100.0) * $sdd)/(6.1078*0.8)) );
$td2 =($b*$v2) / ($a-$v2);
$tempSchimmel80 =($td2*100+0.5) / 100;
SetValue($schimmel80ID, $tempSchimmel80);

//Berechnung normierte Feuchte (20°C)
$normfeu = $sdd*$relfeuchte/2340;

//Berechnung Schimmelwert aw-Wert
$sdd2 = 6.1078 * pow(10.0, ( ($a*($temperatur-3)) / ($b+($temperatur-3)) ) );
$aw = ($dd/$sdd2);
SetValue($awID, $aw);
if($aw < 0.7)
{
	SetValue($schimmelgefahrID,0);
}
if(($aw >= 0.695) and ($aw < 0.795))
{
	SetValue($schimmelgefahrID,1);
}
else If ($aw >= 0.795)
{
	SetValue($schimmelgefahrID,2);
}
Else
{
	SetValue($schimmelgefahrID,0);
}

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------

/// Funktion um Vaiablen anzulegen
function CreateVariableByName($ParentID, $VarName, $VarTyp, $VarProfile = "", $VarIcon = "",$VarActionScript = "") 
{
	$VarID = @IPS_GetVariableIDByName($VarName, $ParentID);
	if($VarID === false) 
	{
	    $VarID = IPS_CreateVariable($VarTyp);
		IPS_SetParent($VarID, $ParentID);
		IPS_SetName($VarID, $VarName);
		IPS_SetInfo($VarID, "This variable was created by script #".$_IPS["SELF"]);
	  
	  	if($VarProfile !== "") 
		{
	        IPS_SetVariableCustomProfile($VarID, $VarProfile);
	    }
		
		if($VarIcon !== "") 
		{
			IPS_SetIcon($VarID, $VarIcon);
	    }
	    
		if($VarActionScript !== "") 
		{
	        IPS_SetVariableCustomAction($VarID, $VarActionScript);
	    }
	}
	return $VarID;
}

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------

// Funktion um Event anzulegen
function CreateEventTrigger($EventName, $VarID, $ParentID, $EventTyp) 
{
    $eid = @IPS_GetEventIDByName($EventName, $ParentID);
    if (is_numeric($eid) == false) {
        $eid = IPS_CreateEvent(0);
        IPS_SetEventTrigger($eid, $EventTyp, $VarID);
        IPS_SetParent($eid, $ParentID);
        IPS_SetName($eid, $EventName);
        IPS_SetEventActive($eid, true);
    }
}
?>

$absFeuchte_aussenID = 21561 /[Geräte\Erdgeschoss\Balkon\KLM-Balkon\Abs_Luftfeuchte_Aussen]/;

Müsste ich dann aber ausrechnen oder?

Keller lüften :slight_smile:

Grüße
galleto

Gute Idee, leider hab ich keinen Luftdruck… :wink:

Danke, hast Du mal die Profile für mich? Das Meiste ist klar, aber was sind folgende:

Warning: Profile with name #aw.value does not exist in /var/lib/symcon/scripts/45847.ips.php on line 146 <- Da hab ich keine Idee… :wink:

Warning: Profile with name #Schimmel does not exist in /var/lib/symcon/scripts/45847.ips.php on line 146 <- True = Ja?

Warning: Profile with name #switch.ja_nein does not exist in /var/lib/symcon/scripts/45847.ips.php on line 146 <- True = Ja?

Habe es jetzt mal so gelöst für mich:

Berechnung pro Raum, getriggert auf Änderung von einem der Drei Werte, danke an die ursprünglichen Scriptersteller:

<? 
// *********** Lesen ********** 
$temperatur = GetValue(20677 /*[Luft und Temperatur\Luft Badezimmer\Aktuelle Temperatur]*/); 
$relfeuchte = GetValue(48611 /*[Luft und Temperatur\Luft Badezimmer\Luftfeuchtigkeit]*/); 
$abs_aussen = GetValue (22929 /*[Luft und Temperatur\Lüften Sinnvoll?\Aussenbereich\Abs. Feuchte Aussen]*/);

// *********** Script ********** 
include ("taupunkt_absfeuchte.php"); 

// *********** Schreiben ********** 
// $taupunkt = Taupunkt 
// $sattdampfdruck = Saettigungsdampfdruck 
// $dampfdruck = Dampfdruck 
// $absfeuchte = Absolute Feuchte 

SetValue(29068 /*[Luft und Temperatur\Lüften Sinnvoll?\Badezimmer\Abs. Feuchte Badezimmer]*/, $absfeuchte); 


	
if ($abs_aussen < $absfeuchte) 
    setvalue (54499 /*[Luft und Temperatur\Lüften Sinnvoll?\Badezimmer\Lüften Sinnvoll Bad]*/, true);
else
    setvalue (54499 /*[Luft und Temperatur\Lüften Sinnvoll?\Badezimmer\Lüften Sinnvoll Bad]*/, false);
?>

Inhalt der „aupunkt_absfeuchte“ unverändert übernummen von RWN (Rainer) - Hier

Und dann die Absolute Feuchtigkeit für Aussen:

<? 
// *********** Lesen ********** 
$temperatur = GetValue(40679 /*[Homematic\Aussentemperatur Nord\Aussentemperatur]*/); 
$relfeuchte = GetValue(45471 /*[Homematic\Aussentemperatur Nord\Luftfeuchtigkeit Aussen]*/); 

// *********** Script ********** 
include ("taupunkt_absfeuchte.php"); 

// *********** Schreiben ********** 
// $taupunkt = Taupunkt 
// $sattdampfdruck = Saettigungsdampfdruck 
// $dampfdruck = Dampfdruck 
// $absfeuchte = Absolute Feuchte 

SetValue(27635 /*[Luft und Temperatur\Lüften Sinnvoll?\Wohnen\Abs. Feuchte Wohnen]*/, $absfeuchte); 

$abs_aussen = getvalue (22929 /*[Luft und Temperatur\Lüften Sinnvoll?\Aussenbereich\Abs. Feuchte Aussen]*/);
?>

Ebenfalls durch Änderungen der Temperatur oder Luftfeuchtigkeit von Aussen getriggert.

Hey @zerfasm gutes Skript, danke!
Aber welche Einheit für die Abs. Feuchte benutzt Du da?
g/m³ oder g/kg oder kg/kg?

Gruß,
Maeffjus

Ich möchte gerne noch mal die Diskussion beleben.
Habt ihr inzwischen ein laufendes Sript?

Es gibt sogar ein fertiges Modul.

Oh, das ich cool :slight_smile:

Magst Du das Ergebnis hier präsentieren?

Nee, so funktioniert das Forum hier nicht. :smiley:

Im Modulstore suche nach „Luftfeuchtigkeitssensor“

Alles schön selbsterklärend.

Es gibt noch das Modul „Lüftungsüberwachung“. Nochmal etwas umfangreicher.

Viel Erfolg.

Ah, die Module kenne ich. Die informieren aber nur und lüften/regeln nicht automatisch.

Ich möchte aber nicht per Hand lüften, sondern meine Lüftungsanlage darüber steuern. Daher passen beide Module leider nicht.

Den Rest stelle ich mir allerdings einfach vor. Wenn Du den Auslöser hast, dass gelüftet werden soll, ist der Rest ja nur ein Zusatz, den Du per Automation (Logikplan, Ablaufplan oder Skript) ergänzen kannst.

Ich lüfte noch klassisch manuell.

Ich bin gewillt, meinen Gehirnschmalz hineinzubringen, aber es fängt ja bei mir schon damit an, dass ich eine zentrale Lüftungsanlage für das gesamte Haus und zwei Bäder, also zwei Sensoren, habe und auf Sicht noch einen CO2 Sensor für das Wohnzimmer. Außerdem hat die Anlage acht Lüftungsstufen.
Ich könnten sicherlich für jeden Raum eine Kopie der Scripts implementieren, doch wenn der eine Raum „zu feucht“ meldet und der andere genau das Gegenteil, wird es schwierig.

Für einen Kellerraum mit einem einfachen Lüfter sind die Scrips wahrscheinlich einfach anpassbar.
Ich habe auch im Internet nirgendswo ein Blockschaltbild einer passenden Steuerung gefunden.

Mit dem Modul sollten alle Probleme gelöst werden können. Du kannst doch den Rechner für jeden Bereich neu einsetzen und konfigurieren.