NEWS
[Skript] Absolute Feuchte berechnen
-
Woran mache ich fest, das gelüftet werden sollte?
Irgendwie habe ich die Logik dahinter noch nicht verstanden … kann mir jemand das mal in einfachen Worten versuchen zu erklären? `
Ob du mich verstehen wirst???Wenn ich dein/Pauls Skript richtig verstehe sind folgende Parameter involviert
-
Temperatur innen <-> außen
-
Feuchtegehalt innen <-> außen
zusätzlich gibt es zu jedem Raum noch einen Zielwert für die Temperatur.
Die absolute Feuchte muss innen um 0,6 g/kg höher sein ->Lüften (Teil1) true
Die Temperatur muss aussen niedriger sein als die Innentemperatur, wenn die innentemperatur über der Solltemperatur liegt ->Lüften (Teil2) true
Die Temperatur muss aussen höher sein als die Innentemperatur, wenn die innentemperatur unter der Solltemperatur liegt ->Lüften (Teil3) true
Zurück ähnlich, nur:
Die absolute Feuchte muss innen max, um 0,1 g/kg höher sein ->Lüften (Teil1) false (Hysterese)
Gruß
Rainer
-
-
Verstanden - Deine Ausführung war nicht so schwer zu verstehen
Die Werte (0,6 g/kg, usw.), sind die irgendwo "definiert", oder hat jemand die einfach mal festgelegt (paul53 / ruhr70 ?)?
Dann baue ich das morgen Abend ein.
Ich habe auch mal ein ganz kurzes Testskript gemacht. Da trägt man oben die Temp. und die rel. Luftfeuchte ein und es berechnet dann die einzelnen Werte - kann man dann mit anderen Berechnungs-Varinten (Internet, usw.) abgleichen.
Ich poste es einfach ma hier rein:
!
// Historie // ----------------------------------------------------------------------------- // 09.06.2015 Erstellung eric2905 // Berechnung komplett überarbeitet // Quelle : http://www.hobby-photo.de/shop/pg45.htm // Berechnungsformeln wurden aus der Excel-Tabelle "geliehen" // ----------------------------------------------------------------------------- ! var temp = 19.4; var relHumm = 54; ! // Ab hier nichts ändern - nicht notwendig ! var SaettDruck = (610.8 * Math.exp(17.1 * temp / (234.2 + temp))); log("Sättigungsdruck : " + SaettDruck); ! var maxAbsHumm = SaettDruck * 0.018 / 8.314 / (273.15 + temp) * 1000; log("max. Wassergehalt : " + maxAbsHumm); ! var istAbsHumm = maxAbsHumm / 100 * relHumm; log ("tats. Wassergehalt : " + istAbsHumm); ! var istDampfPress = (SaettDruck /100) * relHumm / 100; log("Dampfdruck : " + istDampfPress); ! var Taupunkt = 241.2 * (Math.log(istDampfPress) - Math.log(6.112)) / (17.5043 - (Math.log(istDampfPress) - Math.log(6.112))); log("Taupunkt : " + Taupunkt); !
Gruß,
Eric
-
Die Werte (0,6 g/kg, usw.), sind die irgendwo "definiert", oder hat jemand die einfach mal festgelegt (paul53 / ruhr70 ?)? `
ich denke, dass paul die Temperturdifferenzen in seinen uraltskripten bereits hatte, es ergibt ja auch einen sinn mit der Hysterese.g/kg ist halt die (eine) offizielle Größe für den Feuchtegehalt nur nicht jedem Laien verständlich zu machen.
Aber da sind noch mehr Faktoren im Skript, die noch nicht eingearbeitet worden sind.
z.B. die Zieltemperatur:
im Header steht Zieltemperatur xy, wenn im Raum nicht anders definiert.
Dadurch dass ich die Räume einfach kopiert habe, stehtfür diese Variable natürlich auch in jedem Raum ein Wert.
Ich könnte mir denken, dass man oben ienen allgemeingültigen Wert, z.B. 21°C eingeben soll und NUR in den Räumen, die einen anderen Zielwrt haben (Schlafzimmer 19°C, Bad 24°C) muss dies beim Raum noch extra angegeben werden.
Sollte dann diese Zeile in allen anderen Räumen auskommentiert/gelöscht werden? Oder ein bestimmter Platzhalter eingegeben werden?
Dann baue ich das morgen Abend ein.
Ich habe auch mal ein ganz kurzes Testskript gemacht. Da trägt man oben die Temp. und die rel. Luftfeuchte ein und es berechnet dann die einzelnen Werte `
Das klingt ja schon fast nach einem Ansatz für einen Adapter mit komfortabler Einzelraumkonfiguration :mrgreen: :mrgreen: :mrgreen:
Das hast du nu davon!
Gruß
Rainer
-
Woran mache ich fest, das gelüftet werden sollte?
Lüften,
- wenn abs. Aussenfeuchte < abs. Innenfeuchte - Hysterese (Entfeuchten)
- UND Aussentemperatur < Innentemperatur - Hysterese (Kühlen)
- UND Innentemperatur >= Raumtemperaturminimum + Hysterese (Auskühlschutz)
Die Hysterese hatte ich auf 0,3 g/kg und 0,5 K festgelegt, damit ein Lüfter im Grenzbereich nicht zu häufig ein- und ausschaltet. Da meine Fühler gut übereinstimmen und ich das nur zur Lüftungsempfehlung (Fenster) verwende, habe ich bei mir die Hysterese auf
0,2 g/kg und 0,3 K verringert.
-
Eine Frage beschäftigt mich aber noch ….
Woran mache ich fest, das gelüftet werden sollte?
Irgendwie habe ich die Logik dahinter noch nicht verstanden ... kann mir jemand das mal in einfachen Worten versuchen zu erklären?
Dann baue ich das noch mit ein. `
Du musst zunächst für dich selbst definieren, warum du wie lüften willst.
Bei mir habe ich das System mit automatischen Fensteröffnern im Keller zur Entfeuchtung implementiert. Die Temperaturen sind mir dabei ziemlich egal, die Fenster sollen auch nicht immer offen sein wenn wenn absolute Feuchte draußen geringer als im Keller.
Für mich habe ich definiert: Wenn im Keller die relative Feuchte über 70 % steigt, soll er lüften, und damit aufhören, wenn es unter 55 % fällt (damit es nicht permanent offen ist im WInter). Die absolute Feuchte nehme ich dann nur zur Berechnung, die zu haltende Mindesttemperatur orientiert sich am Taupunkt im Keller und eine maximale gibt es nicht, da es nie über 20 °C wird im Keller.
Für Wohnräume sieht das vielleicht anders aus, da ist die Bandbreite bei 40 bis 60 % (zB).
Meine Öffnungsdifferenz für den Keller beträgt 0,9 g/kg und die zum Schließen 0,3 g/kg. Mit 0,4/0,3 oder ähnliche Werte hatte ich das Problem, dass die Fenster im 10 Minutentakt auf und zu gegangen sind, deshalb habe ich die Öffnungsdifferenz erhöht, es muss also (absolut) deutlich trockener draußen sein um drin zu lüften.
Es kommt natürlich auch daraus an wo die Sensoren stehen. Wenn die im Keller zwischen den Fenstern (also im Zug) stehen dann reagiert der schneller, steht der an einer Wand ohne Zug reagiert er deutlich langsamer, weil die Luft dort nicht so schnell ausgetauscht wird. Das muss mit rein in die Überlegungen und der Anpassung der Hysterese.
Man kann auch eine "Sperre" einbauen, nach den bisherigen Skripten ist es ja auch so, dass die Feuchte drin mit der Außenfeuchte ansteigen kann durch das lüften, so lange es drin immernoch feuchter als draußen ist (aber draußen steigt die Feuchte ja auch ab dem Morgen). Das kann evtl. ungeschickt sein. DIe Temperatur berücksichtige ich gar nicht, außer es ist im Keller nahe der Taupunktgrenze oder es werden über 25 °C im Keller, dann deaktiviert sich die Öffnung und es schließt..
Nachts ist es immer deutlich trockener (wenn es also kühler ist draußen). Im Winter kann man eigentlich immer den ganzen Tag lüften, es ist immer trockener draußen. Im Sommer gibt es tagsüber Probleme, das geht soweit, dass man tagelang bei schwülem Wetter die Kellerfeuchte nicht unter 80 % bekommt nur durch das Lüften. Ich baue mir deshalb noch eine Zeitprüfung ein, um wenn es morgens um 8 drin trockener als draußen ist, sollen die Fenster zugehen, damit nicht mit der Außenfeuchte die Innenfeuchte mit steigt (man sich also die feuchte Luft von außen reinholt). Geht ganz leicht, einfach mit on bei einer bestimmten Uhrzeit die Fenster schließen, wenn es drin trockener als draußen ist. Sobald die Macimalfeuchte im Keller danach erreicht wird, öffnet er wieder nach der Automatik.
Wenn man nur die Fenster ab und zu manuell aufmachen möchte im Wohnraum, brauch man so etwas natürlich nicht. Bei elektrischen Lüftern oder automatischen Fenstern muss man aber etwas probieren und Erfahrnungswerte sammeln.
Ich habe ja wegen dem Lüften mit iobroker angefangen und muss sagen, was besseres konnte mir nicht passieren, als iobroker zu entdecken. Tolle Software! Führt leider dazu, dass man den Rest des Hauses gleich mit anbindet :lol:
-
super Beschreibung Solear.
Und mit der Erklärung vom Paul habe ich ein Gefühl, wo der Fehler in meinem Skript liegt. Schaue ich mir nachher mal an.
Bei der Definition der Räume habe ich eine "Zieltemperatur" definiert. Es müsste aber die Raumminimumtemperatur sein (Auskühlschutz). Kein Wunder, das es keine Lüftungsempfehlung gibt, wenn es draußen nur etwas kühler ist.
Gesendet von iPhone mit Tapatalk
-
Man kann auch eine "Sperre" einbauen, nach den bisherigen Skripten ist es ja auch so, dass die Feuchte drin mit der Außenfeuchte ansteigen kann durch das lüften, so lange es drin immernoch feuchter als draußen ist (aber draußen steigt die Feuchte ja auch ab dem Morgen). Das kann evtl. ungeschickt sein.
Nein, die Kellerfeuchte steigt trotz Lüften, wenn der Feuchteeintrag aus den Wänden stärker ist als die Entfeuchtung durch die trocknere Aussenluft. Lüftet man dann nicht, steigt die Kellerfeuchte noch schneller.
DIe Temperatur berücksichtige ich gar nicht, außer es ist im Keller nahe der Taupunktgrenze oder es werden über 25 °C im Keller, dann deaktiviert sich die Öffnung und es schließt.
Bei einer Kellerlüftung sollte man die Temperaturdifferenz Innen - Aussen tatsächlich nicht berücksichtigen, denn den Keller will man nicht durch Aussenluft kühlen, sondern nur entfeuchten. Mindestraumtemperatur (Winter) und Maximaltemperatur (Sommer) sollten berücksichtigt werden.
Keller lüften,
- wenn abs. Aussenfeuchte < abs. Kellerfeuchte - Hysterese (Entfeuchten)
- UND Innentemperatur <= Kellertemperaturmaximum
- UND Innentemperatur >= Kellertemperaturminimum + Hysterese (Auskühlschutz)
-
Man kann auch eine "Sperre" einbauen, nach den bisherigen Skripten ist es ja auch so, dass die Feuchte drin mit der Außenfeuchte ansteigen kann durch das lüften, so lange es drin immernoch feuchter als draußen ist (aber draußen steigt die Feuchte ja auch ab dem Morgen). Das kann evtl. ungeschickt sein.
Nein, die Kellerfeuchte steigt ****trotz**** Lüften, wenn der Feuchteeintrag aus den Wänden stärker ist als die Entfeuchtung durch die trocknere Aussenluft. Lüftet man dann nicht, steigt die Kellerfeuchte noch schneller.
Vielleicht habe ich mich falsch ausgedrückt,
bei mir steigt ohne Lüften die Kellerfeuchte um 1-2 % je Stunde bis auf 80-90 %.
Dadurch kann es sein, wenn die absolute Feuchte in den Morgenstunden draußen schneller steigt als drin die umgerechnet relative Feuchtigkeit, dass ich mir in den 3 Morgenstunden von draußen mehr Feuchte reinhole (aber alles noch unterhalb des Schwellwertes von 60 % im Keller) als die Kellerfeuchte ohne Lüften ansteigen würde. Deshalb kann es sich lohnen, früh die Fenster zu schließen. Dann steigt die Kellerfeuchte langsamer an von einem tieferen Wert aus.
-
…dass ich mir in den 3 Morgenstunden von draußen mehr Feuchte reinhole (aber alles noch unterhalb des Schwellwertes von 60 % im Keller) als die Kellerfeuchte ohne Lüften ansteigen würde. Deshalb kann es sich lohnen, früh die Fenster zu schließen. Dann steigt die Kellerfeuchte langsamer an von einem tieferen Wert aus.
Nein, dass kann nicht sein, wenn die Bedingung für das Lüften ist: Absolute Aussenfeuchte < absolute Innenfeuchte.
Lass Dich nicht dadurch täuschen, dass die abs. Aussenfeuchte schneller steigt als die abs. Kellerfeuchte. Solange die Bedingung (s.o.) gilt, wird durch Lüftung entfeuchtet.
-
Mh, stimmt [emoji3] Na zum Glück habe ich den Timer für 8 Uhr noch nicht eingebaut [emoji41]
Gesendet von iPhone mit Tapatalk
-
Das http://forum.iobroker.de/viewtopic.php?f=8&t=2666&p=23676&sid=2fa3b0af7f17bde5f1a4e7949ecb5792&sid=b8069d562410810f54c78eb16b004eee#p23676 habe ich um eine Kellerlüftung (als Kommentar) ergänzt.
-
Hallo zusammen,
dann hier die letzte Version (Script und Widget).
Rückmeldungen sind absolut erbeten !!!
Gruß,
Eric `
Hat das seine Richtigkeit, dass die Belüftungsempfehlung false ist für das Bad? Kann ich bei dem abs. Feuchteunterschied gar nicht verstehen.Und noch eine Anfängerfrage: diese Script Codes… schreibe ich das in das Feld CSS vom Script? Und dann muss es bestimmt das Script sein, dass gleich am Anfang vom Code steht, richtig? `
Hast Du das Skript noch so aktiv?
Wenn ja, kannst Du bitte den Zweig CONTROL mit aufklappen und die Werte dort posten (Temp_Zielwert und Aussensensor).
Ich habe die Formel im Skript überprüft und die Formel sieht eigentlich gut aus. Händisch geprüft, sollte im Ergebnis in der Tat "true" und nicht "false" rauskommen. Ich möchte nur sichergehen, was als Zieltemperatur und was als Außensensor eingetragen ist. Dann kann man noch die Luftqualität mit einbeziehen und und und
Ansonsten kann man das Thema beliebig kompliziert machen. Entgegen der Formel würde ich z.B. im Arbeitszimmer auch lüften, damit kühlere Luft von Außen reinkommt, wenn wiederum die Luft nicht schon zu trocken wäre (relative Luftfeuchtigkeit).
Als Vergleich die Lüftungsempfehlung bei mir aktuell:
filename="lüften.jpg" index="0">~~
-
Entgegen der Formel würde ich z.B. im Arbeitszimmer auch lüften, damit kühlere Luft von Außen reinkommt, wenn wiederum die Luft nicht schon zu trocken wäre (relative Luftfeuchtigkeit).
Ja, im Arbeitszimmer würde ich auch Lüften. Die relative Luftfeuchte steigt durch das Lüften, da die Temperatur im Raum sinkt.
EDIT: Bei einem Raumfeuchtegehalt von 7 g/kg ist keine Entfeuchtung nötig, aber Kühlung bei über 27 °C.
-
Hi,
so nicht mehr, habe es aber noch da.
Werde es nachher mal aktivieren und einen Screenshot posten.
Bin noch nicht zu Hause und komme daher nicht dran.
Gruß,
Eric
-
argh…
ein Fehler ist drin...
xi und xa werden nicht mit der absoluten Feuchtigkeit gefüttert, sondern mit der relativen Luftfeuchtigkeit.
Ich werde mir hinterher eh das Script vom eric krallen, möchte jetzt nur wissen, was falsch lief;-)
-
Hi,
Hast Du das Skript noch so aktiv?
Wenn ja, kannst Du bitte den Zweig CONTROL mit aufklappen und die Werte dort posten (Temp_Zielwert und Aussensensor). `
so, hier die Screenshots - habe das Script aus meinem Posting nochmal gestartet.Gruß,
Eric
-
Hi Eric,
danke! Aber ich meinte eigentlich Lobomau ;-), da das da so offensichtlich falsch war:
http://forum.iobroker.net/viewtopic.php … 100#p27581
Hab aber in der Tat einen Fehler gefunden, siehe etwas weiter oben. In xi und xa wurde mit der relativen Luftfeuchtigkeit für den Vergleich gerechnet und nicht mit der absoluten.
Hier ist die korrigierte calc() Funktion (zeigt bei mir gerade in allen Räumen an, dass ich lüften soll:
! ````
function cob(boolean) { // Color Boolean (farbige ausgabe Boolean als String)
var cobStr = (boolean) ? 'true' : 'false';
return cobStr;
}
! function calc(raum) { // Über Modul Dewpoint absolute Feuchte berechnen
! var t = getState(raeume[raum].Sensor_TEMP).val; // Temperatur auslesen
var rh = getState(raeume[raum].Sensor_HUM).val; // Feuchtigkeit relativ auslesen
! t = makeNumber(t);
rh = makeNumber(rh);
! var toffset = 0.0; // Offset in °C
var rhoffset = 0; // Offset in %
if(typeof raeume[raum].Sensor_TEMP_OFFSET !=="undefined") {
var idtoffset = pfad + raumPfad+ raum + "." + controlPfad + "Sensor_TEMP_OFFSET";
toffset = getState(idtoffset).val; // Offset aus den Objekten/Datenpunkt auslesen
}
if(typeof raeume[raum].Sensor_HUM_OFFSET !=="undefined") {
var idrhoffset = pfad + raumPfad + raum + "." + controlPfad + "Sensor_HUM_OFFSET";
rhoffset = getState(idrhoffset).val; // Offset aus den Objekten/Datenpunkt auslesen
}
! t = t + toffset;
rh = rh + rhoffset;
! var y = xdp.Calc(t, rh);
var x = y.x; // Zu errechnende Variable für Feuchtegehalt in g/kg
var dp = y.dp; // Zu errechnende Variable für Taupunkt in °C
! var h = 1.00545 * t + (2.500827 + 0.00185894 * t) * x; // Enthalpie berechnen
! var idx = pfad + raumPfad + raum + "." + raumDatenpunkte["x"].DpName;
var iddp = pfad + raumPfad + raum + "." + raumDatenpunkte["dp"].DpName;
var idt = pfad + raumPfad + raum + "." + raumDatenpunkte["t"].DpName;
var idrh = pfad + raumPfad + raum + "." + raumDatenpunkte["rh"].DpName;
var ih = pfad + raumPfad + raum + "." + raumDatenpunkte["h"].DpName;
! setState(idx , runden(x,2)); // errechnete absolute Feuchte in Variable schreiben
setState(iddp , runden(dp,1)); // errechneter Taupunkt in Variable schreiben
setState(idt , t); // Sensor Temperatur inkl. Offset
setState(idrh , rh); // Sensor Relative Feuchte inkl. Offset
setState(ih , runden(h,2)); // Enthalpie
! // Lüftungsempfehlung berechnen
// -------------------------------------------------------------------------
if(typeof raeume[raum].Aussensensor !=="undefined") {
var aussen = raeume[raum].Aussensensor; // aussen = "Raumname" des zugehörigen Aussensensors
var idta = pfad + raumPfad + aussen + "." + raumDatenpunkte["t"].DpName;
//var idxa = pfad + raumPfad + aussen + "." + raumDatenpunkte["rh"].DpName;
var idxa = pfad + raumPfad + aussen + "." + raumDatenpunkte["x"].DpName;
} else {
return;
}
! var ti = t; // Raumtemperatur in °C
//var xi = rh; // Raumfeuchtegehalt in g/kg
var xi = runden(x,2); // Raumfeuchtegehalt in g/kg
var ta = getState(idta).val; // Aussentemperatur in °C
var xa = getState(idxa).val; // Aussenfeuchtegehalt in g/kg
if (xa == 0) return;
! var mi = defaultTemp; // Temperaturmittelwert auf Default
! //if(typeof raeume[raum].TEMP_Zielwert !=="undefined") {
if(typeof raeume[raum].TEMP_Zielwert == "number") {
mi = raeume[raum].TEMP_Zielwert;
}
var mih = mi + 0.25; // Temperaturmittelwert hoch
var mit = mi - 0.25; // Temperaturmittelwert tief
! var idLueften = pfad + raumPfad + raum + "." + raumDatenpunkte["lüften"].DpName;
! // Lüftungsempfehlung steuern mit 0,3 g/kg und 0,5 K Hysterese
// (bedingung ? then-ausdruck : else-ausdruck)
var b1lp = (xa <= (xi - 0.4)) ? true : false; // Bedingnung 1 lüften positv (Außenluft ist mind. 0,4 trockener als Innen)
var b2lp = (ta <= (ti - 0.6)) ? true : false; // Bedingnung 2 lüften positv (Außentemperatur ist mindestens 0,6 Grad kühler als innen)
var b3lp = (ti >= mih) ? true : false; // Bedingnung 3 lüften positv (Innentemperatur ist höher als die Zieltemperatur)var b1ln = (xa >= (xi - 0.1)) ? true : false; // Bedingnung 1 lüften negativ (Außenluft ist zu feucht) var b2ln = (ta >= (ti - 0.1)) ? true : false; // Bedingnung 2 lüften negativ (Außentemperatur zu warm) var b3ln = (ti <= mit) ? true : false; // Bedingnung 3 lüften negativ (Innentemperatur niedriger als Zieltemperatur) if (b1lp && b2lp && b3lp) { setState(idLueften, true); if (debug) log(raum + ': **Lüftungsempfehlung**');
! } else if (b1ln || b2ln || b3ln) {
setState(idLueften, false);
if (debug) log(raum + ': Empfehlung Fenster zu');
}
else if (debug) log(raum + ': im Bereich der Hysterese (keine Änderung der Lüftungsempfehlung');
! // lüften (und - Alle Bedingungen müssen erfüllt sein):
// #1 - Außenluft ist mind. 0,4 trockener als Innen
// #2 - Außentemperatur ist mindestens 0,6 Grad kühler als innen
// #3 - Innentemperatur ist höher als die Zieltemperatur
! // nicht lüften (oder):
// #1 - Außenluft ist zu feucht
// #2 - Außentemperatur zu warm
// #3 - Innentemperatur niedriger als Zieltemperatur
! if (debug) log(raum + ": Außenluft ist zu feucht (b1ln): " + cob(b1ln) + ": xa: " + xa + " >= (xi - 0.1) " + (xi - 0.1));
if (debug) log(raum + ": Außentemperatur zu warm (b2ln): " + cob(b2ln));
if (debug) log(raum + ": Außenluft ist zu feucht (b3ln): " + cob(b3ln));if (debug) log(raum + ": b1lp: " + b1lp+ ", b2lp: " + b2lp+ ", b3lp: " + b3lp);
! if (debug) log(raum + ", ti:"+ti+", ta: "+ta+", xi:"+xi+", xa: "+xa+", mih:"+mih+", mit:"+mit,"info");
if (debug) log("" + raum + " --------------------------------------------");
}
! ````Die Variable debug wird am Anfang noch benötigt, da ich ein Logging eingebaut habe.
var debug = true;
-
Hi Eric,
danke! Aber ich meinte eigentlich Lobomau ;-), da das da so offensichtlich falsch war: `
Ja, hatte ich noch aktiv. Grad reingeschaut in Control. Steht immer 0%, 0°C, 21°C. Aber du hast ja einen Fehler gefunden. Das neue Script probiere ich mal aus… -
Warum benennt ihr eigentlich die Variablen nie vernünftig? Also etwas länger? [emoji3]
Gesendet von iPhone mit Tapatalk
-
Warum benennt ihr eigentlich die Variablen nie vernünftig?
Die üblichen physikalischen Formel-Kurzzeichen sind vernünftig.