Seite 21 von 22
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 03.10.2021, 19:23
von sascha91
Hallo, mit dem Skript stelle ich mich etwas dumm an.
Ich habe das Skript hier etwas Abgeändert, es soll immer gelüftet werden(Lüfter hat Wärmerückgewinnung) wenn es draussen trockener wie drinnen ist. Die Schimmelwarnung benötige ich nicht.
Allerdings wird die Variable nicht umgestellt ich denke da ist noch ein Fehler im Skript, ich hoffe mir kann da jemand helfen.
Code: Alles auswählen
! Vermietung Berechnung der Lüftungsempfehlung
object oTHi = dom.GetObject("Vermietung_Wandthermostat_Daten:1");
object oTi = oTHi.DPByHssDP("TEMPERATURE");
object oHi = oTHi.DPByHssDP("HUMIDITY");
object oLueften = dom.GetObject("Vermietung_Lueften");
object oTHa = dom.GetObject("Aussentemperatur_und_Feuchtigkeit_Daten:2");
object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
object oHa = oTHa.DPByHssDP("ACTUAL_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)) && (tin > 18.0))
{oLueften.State(true);}
else
{ if ((afau >= (afin - 0.3)) || (tin <= 15.0))
{oLueften.State(false);}
}
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 03.10.2021, 20:01
von Tyfys
Du setzt am Ende des Scriptes
oLueften nach unterschiedlichen Bedingungen auf
true /
false
Code: Alles auswählen
! Berechnung der Lüftungsempfehlung mit 0,5 g/kg und 0,7 K Hysterese
if ((afau <= (afin - 0.8)) && (tin > 18.0))
{oLueften.State(true);}
else
{ if ((afau >= (afin - 0.3)) || (tin <= 15.0))
{oLueften.State(false);}
Was soll denn passieren, wenn weder die eine noch die andere Bedingung zutrifft?
Gruß
Harry
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 03.10.2021, 20:08
von Baxxy
sascha91 hat geschrieben: ↑03.10.2021, 19:23
es soll immer gelüftet werden(Lüfter hat Wärmerückgewinnung) wenn es draussen trockener wie drinnen ist.
Dann können die Temperaturprüfungen im letzten Abschnitt auch weg.
Code: Alles auswählen
if (afau <= (afin - 0.8)) {
oLueften.State(true);
}
else {
oLueften.State(false);
}
Grüße, Baxxy
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 09.03.2022, 22:26
von leilei
Hallo,
geht das Skript auch für Temperaturen unter 0 Grad?
Es wäre für eine alleinstehende (voll isolierte) Garage, die innen bei der Tür Schimmel ansetzt wegen zu hoher Luftfeuchte …
Grüße leilei
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 10.03.2022, 12:46
von leilei
Welche Skripte müßte ich verwenden (mit oder ohne CUxD), um:
das Hörmann-Garagentor nur bei innen höherer Luftfeuchte als außen zu öffnen (Lüftungsposition) und
evtl. einen Lüfter mit einzuschalten ...
Ich brauche keine Schimmelwarnung etc. ...
Innen: 1x HmIPW-WTH
Außen: 1x HmIP-STHO
1x Hörmannmodul HmIP-MOD-HO
CCU3
Und mit der Skriptprogrammierung hab ich´s nicht gar so drauf
Hintergrund: Hörmann bietet ein eigenes Klimasensoren-Set an, das auch am Hörmann-Bus angeschlossen wird.
Da jedoch hängt schon das ELV-Modul und somit siend die Hörmann-Sensoren so nicht verwendbar.
(
https://www.tor7.de/media/pdf/12/fc/c1/ ... eitung.pdf)
Grüße leilei
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 10.03.2022, 12:58
von MichaelN
Gelöscht, war Quatsch
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 10.03.2022, 16:01
von schlichi
Hallo leilei,
...heute kommen die gebratenen Tauben geflogen, mit Beilage
Versuch´s mal damit:
Code: Alles auswählen
! xxx Berechnung der Lüftungsempfehlung xxxxxx
! Quelle: https://homematic-forum.de/forum/viewtopic.php?p=71326#p71326
! (C) basierend auf paul53
! 10.03.2022 / GS
! xxx Name des Datenkanals des Innensensors
object oTHi = dom.GetObject("Thermostat, WoZi-, :1"); ! xxx Kanal innen HmIPW-WTH (Thermostat, WoZi-, :1 ersetzen)
object oTi = oTHi.DPByHssDP("TEMPERATURE");
object oHi = oTHi.DPByHssDP("HUMIDITY");
! xxx Name der SysVar
object oLueften = dom.GetObject("Garage lüften"); ! xxx SysVar (Garage lüften, muss angelegt sein, ggf. ersetzen)
! xxx Name des Datenkanals des Aussensensors
object oTHa = dom.GetObject("Sensor, LFT-, :1"); ! xxx Kanal aussen HmIPW-STHO (Sensor, LFT-, :1 ersetzen)
object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
object oHa = oTHa.DPByHssDP("ACTUAL_HUMIDITY");
! xxx Programmteil Lüftungsempfehlung xxxxxx
! 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,8 g/kg Hysterese und update der SysVar
if ( afau <= ( afin - 0.8 ) )
{ oLueften.State(true); }
else
{ oLueften.State(false); }
! xxx Programmende xxxxxxx
Die Variable (SysVar) entsprechend, ggf. mit eigenem Namen, dann aber auch im Script ändern!
Mit Deiner Anforderung
... einen Lüfter mit einzuschalten ...
kommst Du klar?
Da war doch noch,..
... geht das Skript auch für Temperaturen unter 0 Grad?
.. ja, ist abgefragt
, denn dann klebt die Luftfeuchte auch an deiner isolierten Garagenwand, bzw. liegt als Eiskristalle auf dem Boden.
Gruß
schlichi
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 11.03.2022, 01:03
von leilei
Hi schlichi,
Danke für die rasante Antwort !!!
Da sind aber gebratene Puten mit Pommes und Salat geflogen gekommen.
Ich bewundere Euch immer wieder, wie Ihr in so kurzer Zeit funktionierende Skripte zusammenstellen könnt.
Dein Skript läuft jetzt in der Testumgebung, auch der Lüfter würde schalten.
Jetzt kann ich die mechanische Adaptierung für das Sektionaltor (Belüftungsstellung - öffnet nur oben und nicht unten) bestellen und dann das Programm darauf loslassen.
Danke leilei
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 30.05.2023, 00:15
von Henke
Die Berechnungen sind falsch:
Web Rechner:
https://rechneronline.de/barometer/luftfeuchtigkeit.php
Code: Alles auswählen
! xxx Berechnung der Lüftungsempfehlung xxxxxx
! Quelle: https://homematic-forum.de/forum/viewtopic.php?p=71326#p71326
! (C) basierend auf paul53
! 10.03.2022 / GS
! xxx Programmteil Lüftungsempfehlung xxxxxx
! Lokale Variablen
real tin = 24; ! Temperatur in °C innen
integer rfin = 53; ! relative Feuchte in % innen
real afin; ! absolute feuchte in g/kg innen
real tau = 15.8; ! Temperatur in °C außen
integer rfau = 45; ! 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,8 g/kg Hysterese und update der SysVar
! xxx Programmende xxxxxxx
real _Temp = tin.ToFloat();
real _Feuchte = rfin.ToFloat();
real rA = 7.5;
real rB = 237.3;
real rDD = 6.1078 * (10.0).Pow( (rA * _Temp) / (rB + _Temp)) * _Feuchte / 100.0;
real rV = (rDD / 6.1078).Log10();
real Taupunkt = (rB * rV / (rA - rV));
real AbsFeuchte = ((10.0).Pow( 5.0) * (18.016 / 8314.3) * rDD / (_Temp + 273.15));
WriteLine ( "Abs. Feuchte: Soll(Web) 11.53 Formel Forum: " # afin.ToString(2) # " meine " # AbsFeuchte.ToString(2) );
WriteLine ( "q.e.d" );
Das ergibt dann:
Abs. Feuchte: Soll(Web) 11.53 Formel Forum: 9.96 meine 11.53
q.e.d
Hier die Version die ich in JavaScript unter NodeRed nutzt umgeschrieben in HM Script:
Code: Alles auswählen
! Berechnung der Lüftungsempfehlung mit Wärmedurchgangswert der Wand
! M. Henke
! Copyleft
real rInnenTemp = 24.0;
real rInnenHum = 53.0;
real rAussenTemp = 15.8;
real rAussenHum = 450.;
real rAussenMittel = rAussenTemp; ! Außentemperatur - besser Tagesdurchschnitt
real rRges = 0.5; ! Rges = Z.ZZZ empirisch ermittelt
! Rges errechnen aus gemessener Wandtemperatur und durchschnittlicher Außentemperatur
real tempWand = 0.0;
!------------------------------
if ( tempWand > 0 ){
rRges = (0.13 / (tempWand - rInnenTemp)) * (rAussenMittel - rInnenTemp);
WriteLine ( "rRges: " # rRges.ToString(2) );
}
real rA = 7.5;
real rB = 237.3; ! für T >= 0
real _Temp = rAussenTemp;
real _Feuchte = rAussenHum;
real rDD = 6.1078 * (10.0).Pow( (rA * _Temp) / (rB + _Temp)) * _Feuchte / 100.0;
real rV = (rDD / 6.1078).Log10();
real AussenTaupunkt = (rB * rV / (rA - rV));
real AussenAbsFeuchte = ((10.0).Pow( 5.0) * (18.016 / 8314.3) * rDD / (_Temp + 273.15));
real _Temp = rInnenTemp;
real _Feuchte = rInnenHum;
real rDD = 6.1078 * (10.0).Pow( (rA * _Temp) / (rB + _Temp)) * _Feuchte / 100.0;
real rV = (rDD / 6.1078).Log10();
real Taupunkt = (rB * rV / (rA - rV));
real AbsFeuchte = ((10.0).Pow( 5.0) * (18.016 / 8314.3) * rDD / (_Temp + 273.15));
! Oberfächentemperatur der Außenwandecke in °C
real wandTemp = rInnenTemp + ((0.13 / rRges) * (rAussenMittel - rInnenTemp));
real Esat = 611.2 * (17.62 * wandTemp / (243.12 + wandTemp)).Exp();
real EsatI = 611.2 * ((17.62 * rInnenTemp) / (243.12 + rInnenTemp)).Exp();
real E = EsatI * rInnenHum / 100.0;
real wandrelF = (E / Esat) * 100.0;
real _Temp = wandTemp;
real _Feuchte = wandrelF;
real rDD = 6.1078 * (10.0).Pow( (rA * _Temp) / (rB + _Temp)) * _Feuchte / 100.0;
real rV = (rDD / 6.1078).Log10();
real WandTaupunkt = (rB * rV / (rA - rV));
real WandAbsFeuchte = ((10.0).Pow( 5.0) * (18.016 / 8314.3) * rDD / (_Temp + 273.15));
WriteLine ( "Innen: Temp. " # rInnenTemp.ToString(2) # " - Feuchte " # rInnenHum.ToString(0) # " - Abs. Feuchte " # AbsFeuchte.ToString(2) # " - Taupunkt " # Taupunkt.ToString(2));
WriteLine ( "Wand: Temp. " # wandTemp.ToString(2) # " - Feuchte " # wandrelF.ToString(0) # " - Abs. Feuchte " # WandAbsFeuchte.ToString(2) # " - Taupunkt " # WandTaupunkt.ToString(2));
WriteLine ( "Außen: Temp. " # rAussenTemp.ToString(2) # " - Feuchte " # rAussenHum.ToString(0) # " - Abs. Feuchte " # AussenAbsFeuchte.ToString(2) # " - Taupunkt " # AussenTaupunkt.ToString(2));
boolean Lueften = false;
if ( wandrelF >= 90 ) { WriteLine ( "Schimmelalarm!" ); Lueften = true; }
if ( !Lueften ){
if ( wandrelF >= 80 ) { WriteLine ( "Schimmelwarnung" ); Lueften = true; }
}
if ( !Lueften ){
! bis 60% sind gut, aber 80 an der Wand zu viel
if ((rInnenHum > 60) || (wandrelF >= 80)) {
! Luft Außen zu feucht
if (AussenAbsFeuchte <= (AbsFeuchte - 0.8)) {
Lueften = true;
}
}
}
if ( Lueften ) { WriteLine ( "Lüften" ); }
Re: Script zur Berechnung des Feuchtegehalts
Verfasst: 15.07.2023, 19:18
von schlichi
Hallo "Henke",
deine Behauptung die Berechnung sei falsch kann ich nicht nachvollziehen, auch wenn Du scheinbar einen Beweis lieferst.
Dir ist entgangen, daß die Berechnung im Script in
g/kg erfolgt.
real afin; ! absolute feuchte in g/kg innen
Dein herangeführter "Beweis" lautet auf
g/m³
Insofern ist Deine Behauptung irreführend.
Falls jemand die Berechnung in g/m³ benötigt, im
Forum ist die Formel zu finden
Gruß
schlichi