Für (m)eine kleine Wetterstation habe ich mir einmal weitere Kenngrößen der Meteorologie angeschaut. Ein Wert, der hierzulande aus meiner Sicht ein Schattendasein führt, ist der Taupunkt.
In amerikanischen Wetterberichten wird diese Kennzahl oft mit den Standard-Temperaturen genannt. Der Wert des Taupunkts gibt an, bei welcher Temperatur das in der Luft enthaltene Wasserdampf kondensiert. Somit kann man eine Beurteilung über trockene oder feucht-schwüle Luft vornehmen. Der Taupunkt ist abhängig von der Temperatur und der relativen Luftfeuchte. Die physikalische Regel dazu ist, dass die Luft bei höheren Temperaturen mehr Wasserdampf enthalten kann als bei niedrigeren. Irgendwo ist mal gesagt worden, dass ab einer Taupunkttemperatur von 17 °C die Luft als schwül empfunden wird.
Eine Methode zur Bestimmung des Taupunktes ist, wenn man die Luft in einem Raum soweit herunterkühlt bis sich auf der Oberfläche z.B. eines Bleches Tau bildet, dann ist die Temperatur des Taupunktes erreicht. Experten mögen mir bitte verzeihen, wenn ich es falsch ausgedrückt habe.
Auf dem Dashboard (m)einer kleinen Wetterstation habe ich neben der Außentemperatur und -luftfeuchte nun auch die Taupunkttemperatur berechnet und dargestellt. Auch in den Chartgrafiken wird dieser Wert zur Verlaufsansicht mit eingezeichnet.
Es gibt eine Näherungsformel für die Berechnung des Taupunkts aus den genannten Werten, die ich wie folgt im Nodered hinterlegt habe:
var t = global.get("outdoor_temperature"); var r = global.get("outdoor_humidity"); var tp = 0.000; // Konstante var mw = 18.016; //Molekulargewicht des Wasserdampfes (kg/kmol) var gk = 8314.3; // universelle Gaskonstante (J/(kmol*K)) var t0 = 273.15; // Absolute Temperatur von 0 °C (Kelvin) var tk = t + t0; // Temperatur in Kelvin var a, b; if (t >= 0) { a = 7.5; b = 237.3; } else if (t < 0) { a = 7.6; b = 240.7; } // Sättigungsdampfdruck (hPa) var sdd = 6.1078 * Math.pow(10, (a*t)/(b+t)); // Dampfdruck (hPa) var dd = sdd * (r/100); // Wasserdampfdichte bzw. absolute Feuchte (g/m3) var af = Math.pow(10,5) * mw/gk * dd/tk; // v-Parameter var v = Math.log10(dd/6.1078); // Taupunkttemperatur (°C) tp = Math.round( ((b*v) / (a-v))*100)/100;
Das Ergebnis ist für meine kleinen Zwecke völlig ausreichend. Und so sieht die Anzeige auf dem Dashboard aus, wobei TP die Taupunkttemperatur von 9,2 °C ankündigt.
Hallo,
vielen, vielen Dank für diesen Artikel. Dies hatte ich schon lange gesucht.
Gruß Holger
Da ist ein kleiner Tipper in deiner universellen Gaskonstante. 8214.3 Richtig ist 8314.3
https://de.wikipedia.org/wiki/Gaskonstante
Au, verdammt… gut gesehen, vielen Dank!
Hallo,
ich finde den Artikel sehr interessant. Ich beschäftige mich seit Kurzem auch mit NodeRed. Allerdings sind meine Kenntnisse noch sehr rudimentär. Ich weiß deshalb nicht, wie ich diese Formeln in den NodeRed Flow einbauen muss. Ich habe einen Sensor DHT22 den ich mittels Wemos D1 mini und ESP_Easy in IoBroker eingebunden habe. Die Werte davon mit NodeRed auslesen und als Text anzeigen im UI ist mir schon gelungen. Nun würde ich auch gerne den Taupunkt anzeigen lassen, weiß aber nicht wie ich das Anstellen soll. Könntest Du bitte mal Dein Flowschema von NodeRed zu der Taupunktanzeige posten?
Vielen Dank schon mal im Voraus.
Gruß Fritz
Meine Flows hier darzustellen ist etwas müßig, ist auch nicht das Thema dieses Beitrags.
Was ich anraten kann ist, dass dieses Skript in einem function-Node ausgeführt wird sobald dieser angetriggert wird. Diesen setzt du hinter deine DHT22-Mimik an den Ausgang und fütterst die Function im Eingang eben mit deinen Werten Temperatur und Luftfeuchte. Das msg-Objekt im function-Node versiehst Du mit dem Wert der Variablen tp. Setze dahinter einmal den Debug-Node. Der sollte dann eigentlich die Taupunkt-Temperatur ausgeben. Das UI-Textobjekt bei mir setzt sich aus verschiedenen Variablen zusammen, was zugegeben bei mir etwas komplexer ist und nicht einfach herausgelöst werden kann.
Um alle Werte überall in meinen diversen Flows im Zugriff zu haben, initialisiere ich am Anfang durch einen Einmal-Timer globale Variablen. Werte von überall werden dann zur Laufzeit in die Variablen gespeichert..