Ich habe noch eine Rule (Berechnung der absoluten Luftfeuchtigkeit), welche die Gleichen Fehler liefert "cannot convert from double to int bzw. from Number to double"
Die Rule habe ich als Vorlage gefunden und auf meine Sensoren angepasst.
Code: Alles auswählen
rule "Init virtual Items"
when
System started or
Time cron "0 0/1 * * * ?" //alle 5min abfrage
then
/*if (Wassertemperatur_Soll_Setpoint.state == Uninitialized) {
Wassertemperatur_Soll_Setpoint.postUpdate(5.5) //postUpdate ist nur für Aktualisierungen innerhalb von openHAB (sendCommand gibt diese auch auf den Bus)
}
if (Feuchtegehalt_draussen.state == uninitialized) {
Feuchtegehalt_draussen.postUpdate(1)
}
*/
end
rule "Luftfeuchte Garage1 unten"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperatureGarageRechtsTemperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperatureGarageRechtsHumidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Garage1", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Garage1 lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Garage1 nicht lüften")
}
//schreiben der werte in ITEM
//Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_garage1.sendCommand(abs_hum_in)
end
rule "Luftfeuchte Kueche unten"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperatureKuecheTemperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperatureKuecheHumidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Kueche", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Kueche lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Kueche nicht lüften")
}
//schreiben der werte in ITEM
//Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_kueche.sendCommand(abs_hum_in)
end
rule "Luftfeuchte Heizraum unten"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperatureHeizraumTemperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperatureHeizraumHumidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Heizraum", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Heizraum lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Heizraum nicht lüften")
}
//schreiben der werte in ITEM
//Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_heizraum.sendCommand(abs_hum_in)
end
rule "Luftfeuchte Bad unten"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperaturBad_Temperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperaturBad_Humidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Bad", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Bad lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Bad nicht lüften")
}
//schreiben der werte in ITEM
Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_bad.sendCommand(abs_hum_in)
end
rule "Luftfeuchte Tina unten"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperatureTinaUntenTemperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperatureTinaUntenHumidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Tina", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Tina unten lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Tina unten nicht lüften")
}
Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_tina.sendCommand(abs_hum_in)
end
rule "Luftfeuchte Wohnzimmer"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperaturWohnzimmer_Temperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperaturWohnzimmer_Humidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Wohnzimmer", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Wohnzimmer lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Wohnzimmer nicht lüften")
}
Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_wohnzimmer.sendCommand(abs_hum_in)
end
rule "Luftfeuchte Eltern unten"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperatureElternUntenTemperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperatureElternUntenHumidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Eltern unten", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Eltern unten lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Eltern unten nicht lüften")
}
Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_eltern_unten.sendCommand(abs_hum_in)
end
rule "Luftfeuchte Eltern Oben"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperatureElternObenTemperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperatureElternObenHumidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Eltern oben", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Eltern oben lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Eltern oben nicht lüften")
}
Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_eltern_oben.sendCommand(abs_hum_in)
end
rule "Luftfeuchte Tina Oben"
when
Time cron "0 0/5 * * * ?" //alle 5min
then
// Variablen
var Number temp_in = (TemperatureTinaObenTemperature.state as Number).floatValue //Innentemperatur in Grad Celsius
var Number temp_out = (TemperatureDraussenTemperature.state as Number).floatValue //Außentemperatur in Grad Celsius
var Number abs_hum_in = 0
var Number abs_hum_out = 0
var Number rel_hum_in = (TemperatureTinaObenHumidity.state as Number).floatValue //relative Feuchte Innen
var Number rel_hum_out = (TemperatureDraussenHumidity.state as Number).floatValue //relative Feuchte Außen
// Konstanten
val gas_const = 8314.3
val mol = 18.016
var Number ab = 0
var a_out = 0
var b_out = 0
// Parameter a, b
// wenn T>=0: a = 7.5, b = 237.3 (dies wird wohl immer von den Innenraum zutreffen)
// wenn T<0: a = 7.6, b = 240.7 (dies kann für die Außerntemperatur zutreffen)
val a_in=7.5
val b_in=237.3
if (temp_out >= 0) {
a_out=7.5
b_out=237.3
} else {
a_out=7.6
b_out=240.7
}
// Formeln
// Sättingungsdampfdruck: SDD = 6.1078 * 10^((a*temp)/(b+temp))
// Dampfdruck: DD = rel_hum * 100 / SDD
// Absolute Feuchte: AF = 10^5 * mol / gas_const * DD / (temp + 273.15)
// absolute Innenfeuchte
ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
var Number sdd_in = 6.1078 * Math::pow(10, ab)
var Number dd_in = rel_hum_in / 100 * sdd_in
abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd_in / (temp_in + 273.15)
// absolute Außenfeuchte
ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
var Number sdd_out = 6.1078 * Math::pow(10, ab)
var Number dd_out = rel_hum_out / 100 * sdd_out
abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd_out / (temp_out + 273.15)
logInfo("Luftfeuchte Tina oben", "Abs. Luftfeuchte - in: " + abs_hum_in + "g/m3, out: " + abs_hum_out + "g/m3")
if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
// lüften, Fenster öffnen
logInfo("Luftfeuchte", "Tina oben lüften")
} else {
// nicht lüften, Fenster schließen
logInfo("Luftfeuchte", "Tina oben nicht lüften")
}
Feuchtegehalt_draussen.sendCommand(abs_hum_out)
Feuchtegehalt_Tina_oben.sendCommand(abs_hum_in)
end