Ankündigung

Einklappen
Keine Ankündigung bisher.

Lüftungsmanagement (lohnt sich Lüften)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Lüftungsmanagement (lohnt sich Lüften)

    Hallo zusammen,

    ich würde mir gerne eine Funktion basteln die folgendes macht:

    Ich habe 2 sensoren (einen draußen und einen drinnen) die je rel. Feuchtigkeit und temperatur messen. Eine Formel soll soll nun berechnen ob die absolute Luftfeuchtigkeit draußen gerade niedriger ist als drinnen so dass es sich lohnt zu lüften.
    Hat so etwas schon jemand implementiert und kann mir das Coding zu verfügung stellen?
    Ich habe zwar im Internet ein paar Formeln dazu gefunden bin aber dann an der implementierung in openhab gescheitert (Mathe ist wohl ein bissel zu lang her

    Danke schon mal!

    #2
    Eine Rule wie diese sollte sowas erledigen:
    Code:
    import org.openhab.core.library.types.*
    import java.lang.Math
    
    rule "Raum lüften"
    when
        Time cron "0 0/5 * * * ?"
    then
        // Variablen
        var Number temp_in = IstwertWohnzimmer.state as DecimalType        //Innentemperatur in Grad Celsius
        var Number temp_out = IPWETemp.state as DecimalType                //Außentemperatur in Grad Celsius
    
        var Number abs_hum_in = 0
        var Number abs_hum_out = 0
        
        var Number rel_hum_in = RoomHumi.state as DecimalType            //relative Feuchte Innen
        var Number rel_hum_out = IPWEHumi.state as DecimalType            //relative Feuchte Außen
        
        // Konstanten
        val gas_const = 8314.3
        val mol = 18.016
        
        // 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) {
            val a_out=7.5
            val b_out=237.3    
        } else {
            val a_out=7.6
            val 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
        var Number sdd_in = 6.1078 * Math.pow(10, ((a_in*temp_in)/(b_in+temp_in)))
        var Number dd_in = rel_hum_in * 100 / sdd_in
        var Number abs_hum_in = Math.pow(10, 5) * mol * gas_const * dd_in / (temp_in + 273.15)
        
        // absolute Außenfeuchte
        var Number sdd_out = 6.1078 * Math.pow(10, ((a_out*temp_out)/(b_out+temp_out)))
        var Number dd_out = rel_hum_out * 100 / sdd_out
        var Number abs_hum_out = Math.pow(10, 5) * mol * gas_const * dd_out / (temp_out + 273.15)
    
        if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
            // lüften, Fenster öffnen
        } else {
            // nicht lüften, Fenster schließen
        }
    
    end
    Ich konnte diese Rule allerdings noch nicht testen. Insbesondere verwirrt mich, dass der Designer die Funktion Math.pow() nicht kennt.
    Vielleicht hilft Dir diese Rule weiter. Wenn Du das zum Laufen bekommst, wäre es nett, die finale Lösung zu posten.
    Ich bin an einem ähnlichen Problem dran und werde diese Rule auch bald benötigen ;-)

    Viele Grüße
    Michael

    Kommentar


      #3
      Irgendwie bekomme ich das nicht auf die Reihe. Was läuft hier schief?

      Wenn ich o.g. rule ausführe, kommt immer folgende Fehlermeldung:
      Code:
      2014-10-01 18:13:00.969 ERROR o.o.m.r.i.e.ExecuteRuleJob[:57]- Error during the execution of rule Luftfeuchte
      java.lang.IllegalStateException: Could not invoke method: java.lang.Math.pow(double,double) on instance: null
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:738)
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._featureCallOperation(XbaseInterpreter.java:713)
              at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291)
      Caused by: java.lang.IllegalArgumentException: null
              at sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:729)
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._featureCallOperation(XbaseInterpreter.java:713)
              at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
      PS: kleine Korrektur an obiger Rule
      HTML-Code:
      Math.pow
      habe ich nach
      HTML-Code:
      Math::pow
      geändert.

      Wahrscheilich nur eine Kleinigkeit, aber ich seh's nicht ...

      Danke schon mal!

      Kommentar


        #4
        Jetzt funktioniert es :-)
        Mit dieser Rule werden abs. Feuchte innen und außer errechnet und verglichen.
        Code:
        import org.openhab.core.library.types.*
        import java.lang.Math
        
        rule "Luftfeuchte"
        when
            Time cron "0 0/5 * * * ?"
        then
            // Variablen
            var Number temp_in = IstwertWohnzimmer.state as DecimalType        //Innentemperatur in Grad Celsius
            var Number temp_out = IPWETemp.state as DecimalType                //Außentemperatur in Grad Celsius
        
            var Number abs_hum_in = 0
            var Number abs_hum_out = 0
            
            var Number rel_hum_in = RoomHumi.state as DecimalType            //relative Feuchte Innen
            var Number rel_hum_out = IPWEHumi.state as DecimalType            //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", "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", "Raum lüften")
                
            } else {
                // nicht lüften, Fenster schließen
                logInfo("Luftfeuchte", "Raum lüften")
            }
        
        end

        Kommentar


          #5
          Nochmal ich ...
          Da ich das Problem im Keller habe und dort einigermaßen konstante Temperatur herrscht, werde ich anhand des Taupunktes im Keller mein "Fenster öffnen" steuern. Daher habe ich die rule wurde um die Berechnung des Taupunktes erweitert. Taupunkt innen und Taupunkt außen wird verglichen. In meinem Keller errechne ich den Taupunkt aus der gewünschten Luftfeuchte (60%) und der konstanten Temperatur von 17 Grad. Diesen Taupunkt vergleiche ich mit dem Taupunkt von aussen. That's it!

          Code:
              // 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)
              // Taupunkt:                TD = b*v/(a-v) mit v = log10(DD / 6.1078)
          
              v = Math::log10((dd/6.1078).doubleValue())
              td = b_in * v / (a_in - v)

          Kommentar


            #6
            Zitat von staehler Beitrag anzeigen
            Nochmal ich ...
            Da ich das Problem im Keller habe und dort einigermaßen konstante Temperatur herrscht, werde ich anhand des Taupunktes im Keller mein "Fenster öffnen" steuern. Daher habe ich die rule wurde um die Berechnung des Taupunktes erweitert. Taupunkt innen und Taupunkt außen wird verglichen. In meinem Keller errechne ich den Taupunkt aus der gewünschten Luftfeuchte (60%) und der konstanten Temperatur von 17 Grad. Diesen Taupunkt vergleiche ich mit dem Taupunkt von aussen. That's it!

            Code:
                // 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)
                // Taupunkt:                TD = b*v/(a-v) mit v = log10(DD / 6.1078)
            
                v = Math::log10((dd/6.1078).doubleValue())
                td = b_in * v / (a_in - v)
            Ist die Berechnung des Taupunktes besser? Ich hätte gesagt wenn absolute Luftfeuchte innen > außen dann Lüften, oder habe ich da zu einfach gedacht? (oder kommt das aufs gleiche heraus?)

            An die anderen Antwortenden: Danke - werds nachher mal ausprobieren

            Kommentar


              #7
              Die anderen, die geantwortet haben, war ich ;-)

              Ich habe aktuell keine Feuchtigkeitsmessung im Keller, daher werde ich die Näherung mit dem Taupunkt und der Annahme einer konstanten Kellertemperatur nehmen.
              Besser ist schon Deine Variante, wobei ein Vergleich von absoluter Feuchtigkeit (innen und aussen) oder ein Vergleich von Taupunkt (innen und außen) das gleiche Ergebnis liefern wird, sofern die innen und außen gemessen werden. Bei mir - wie gesagt - nur außen gemessen.

              Kommentar


                #8
                Zitat von staehler Beitrag anzeigen
                Daher habe ich die rule wurde um die Berechnung des Taupunktes erweitert.
                das ist cool. Kannst du die komplette Taupunktrule mal pasten

                Kommentar


                  #9
                  Zitat von staehler Beitrag anzeigen
                  Die anderen, die geantwortet haben, war ich ;-)

                  Ich habe aktuell keine Feuchtigkeitsmessung im Keller, daher werde ich die Näherung mit dem Taupunkt und der Annahme einer konstanten Kellertemperatur nehmen.
                  Besser ist schon Deine Variante, wobei ein Vergleich von absoluter Feuchtigkeit (innen und aussen) oder ein Vergleich von Taupunkt (innen und außen) das gleiche Ergebnis liefern wird, sofern die innen und außen gemessen werden. Bei mir - wie gesagt - nur außen gemessen.
                  haha gar nicht bemerkt
                  also habe alles mal eingebaut, sehr schön: Ich habe nun ein Menü in dem mir für alle Räume angezeigt wird ob es sich lohnt ein Fenster aufzumachen. Genau das was ich wollte. Aktuell sagt er "Fenster Zu" überall, mal schauen wie es sich entwickelt Vielen Dank für den Code und die Hilfe!

                  Kommentar


                    #10
                    Hi Thomas,

                    hier die komplette rule. Wie Du siehst habe ich für die Innenwerte Konstanten genommen (17 Grad Kellertemperatur und gewünschte 60% rel.Feuchte). Außen wird mit IPWE gemessen ;-)

                    rule:
                    Code:
                    import org.openhab.core.library.types.*
                    import java.lang.Math
                    
                    rule "Luftfeuchte"
                    when
                        Time cron "0 0 * * * ?"
                    then
                        // Variablen
                    //    var Number temp_in = IstwertWohnzimmer.state as DecimalType        //Innentemperatur in Grad Celsius
                        var Number temp_in = 17                                            //Innentemperatur in Grad Celsius
                        var Number temp_out = IPWETemp.state as DecimalType                //Außentemperatur in Grad Celsius
                    
                        var Number abs_hum_in = 0
                        var Number abs_hum_out = 0
                        var Number td_in = 0
                        var Number td_out = 0
                        
                    //    var Number rel_hum_in = RoomHumi.state as DecimalType            //relative Feuchte Innen
                        var Number rel_hum_in = 60                                        //relative Feuchte Innen
                        var Number rel_hum_out = IPWEHumi.state as DecimalType            //relative Feuchte Außen
                        
                        // Konstanten
                        val gas_const = 8314.3
                        val mol = 18.016
                        var Number ab = 0
                        var Number sdd = 0
                        var Number dd = 0
                        var Number v = 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)
                        // Taupunkt:                TD = b*v/(a-v) mit v = log10(DD / 6.1078)
                        
                        // absolute Innenfeuchte
                        ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
                        sdd = 6.1078 * Math::pow(10, ab)
                        dd = rel_hum_in / 100 * sdd
                        v = Math::log10((dd/6.1078).doubleValue())
                        td_in = b_in * v / (a_in - v)
                        abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd / (temp_in + 273.15)
                        
                        // absolute Außenfeuchte
                        ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
                        sdd = 6.1078 * Math::pow(10, ab)
                        dd = rel_hum_out / 100 * sdd
                        v = Math::log10((dd/6.1078).doubleValue())
                        td_out = b_in * v / (a_in - v)
                        abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd / (temp_out + 273.15)
                    
                        logInfo("Luftfeuchte", "Abs. Luftfeuchte - in: " + abs_hum_in + " g/m3, out: " + abs_hum_out + " g/m3")
                        logInfo("Luftfeuchte", "Taupunkt - in: " + td_in + " Grad Celsius" + ", out: " + td_out + " Grad Celsius")
                    
                    //    if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
                        if ((td_in > td_out) && Kellerfenster.state==OFF) { 
                            // lüften, Fenster öffnen
                            logInfo("Luftfeuchte", "Keller lüften")
                            sendNotification("<emailadresse>", "Keller lüften")
                            postUpdate(Kellerfenster, ON)        
                        } else if ((td_in <= td_out) && Kellerfenster.state==ON) {
                            // nicht lüften, Fenster schließen
                            logInfo("Luftfeuchte", "Kellerfenster schließen")
                            sendNotification("<emailadresse>", "Kellerfenster schließen")
                            postUpdate(Kellerfenster, OFF)        
                            
                        }
                    
                    end

                    Kommentar


                      #11
                      Hi,

                      in diesem Zusammenhang hier eine schöne Übersicht der wichtigsten Luftfeuchtigkeitsumrechnungsformeln (auch gleich mit programmiersprachentauglichem Format):
                      http://www.sensirion.com/fileadmin/u..._Glance_V1.pdf

                      Gruß,
                      thoern

                      Kommentar


                        #12
                        Zitat von staehler Beitrag anzeigen
                        Jetzt funktioniert es :-)
                        Mit dieser Rule werden abs. Feuchte innen und außer errechnet und verglichen.
                        Code:
                        import org.openhab.core.library.types.*
                        import java.lang.Math
                        
                        rule "Luftfeuchte"
                        when
                            Time cron "0 0/5 * * * ?"
                        then
                            // Variablen
                            var Number temp_in = IstwertWohnzimmer.state as DecimalType        //Innentemperatur in Grad Celsius
                            var Number temp_out = IPWETemp.state as DecimalType                //Außentemperatur in Grad Celsius
                        
                            var Number abs_hum_in = 0
                            var Number abs_hum_out = 0
                            
                            var Number rel_hum_in = RoomHumi.state as DecimalType            //relative Feuchte Innen
                            var Number rel_hum_out = IPWEHumi.state as DecimalType            //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", "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", "Raum lüften")
                                
                            } else {
                                // nicht lüften, Fenster schließen
                                logInfo("Luftfeuchte", "Raum lüften")
                            }
                        
                        end
                        Hi, hab gerade deinen Code nochmal genauer angeschaut (hatte mich schon gewundert warum ich die ganze Woche nicht lüften sollte und irgendwas passt mit den Variablen glaube ich nicht. Designer zeigt mir folgendes an:

                        bei a_out=7.5 kommt "incompatible types. Expected int or java.lang.integer but was double"

                        analog bei a_out

                        Zudem passt wohl die AB definition nicht!?

                        Bin leider nicht so fit in Java um es selber zu korrigieren!?

                        Hast du eine Idee wie das genau sein müsste?

                        Danke schon mal!

                        Kommentar


                          #13
                          Probier's mal damit ... hab die letzten Tage auch noch an der Rule gefeilt und den Fehler daher vermutlich gar nicht gesehen. So sollte es aber passen, da ich vernünftige Werte bekomme und Designer auch nicht mosert.

                          Code:
                          import org.openhab.core.library.types.*
                          import java.lang.Math
                          
                          rule "Luftfeuchte"
                          when
                              Time cron "0 0 * * * ?"
                          then
                              // Variablen
                          //    var Number temp_in = IstwertWohnzimmer.state as DecimalType        //Innentemperatur in Grad Celsius
                              var Number temp_in = 17                                            //Innentemperatur in Grad Celsius
                              var Number temp_out = IPWETemp.state as DecimalType                //Außentemperatur in Grad Celsius
                          
                              var Number abs_hum_in = 0
                              var Number abs_hum_out = 0
                              var Number td_in = 0
                              var Number td_out = 0
                              
                          //    var Number rel_hum_in = RoomHumi.state as DecimalType            //relative Feuchte Innen
                              var Number rel_hum_in = 60                                        //relative Feuchte Innen
                              var Number rel_hum_out = IPWEHumi.state as DecimalType            //relative Feuchte Außen
                              
                              // Konstanten
                              val gas_const = 8314.3
                              val mol = 18.016
                          //    var Number ab = 0
                              var Number sdd = 0
                              var Number dd = 0
                              var Number v = 0
                              var Number a_out = 0
                              var Number 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)
                              // Taupunkt:                TD = b*v/(a-v) mit v = log10(DD / 6.1078)
                              
                              // absolute Innenfeuchte
                          //    ab = ((a_in * temp_in) / (b_in + temp_in)).doubleValue()
                              sdd = 6.1078 * Math::pow(10, ((a_in * temp_in) / (b_in + temp_in)).doubleValue())
                              dd = rel_hum_in / 100 * sdd
                              v = Math::log10((dd/6.1078).doubleValue())
                              td_in = b_in * v / (a_in - v)
                              postUpdate(Taupunkt_in, td_in)
                              abs_hum_in = Math::pow(10, 5) * mol / gas_const * dd / (temp_in + 273.15)
                              
                              // absolute Außenfeuchte
                          //    ab = ((a_out * temp_out) / (b_out + temp_out)).doubleValue()
                              sdd = 6.1078 * Math::pow(10, ((a_out * temp_out) / (b_out + temp_out)).doubleValue())
                              dd = rel_hum_out / 100 * sdd
                              v = Math::log10((dd/6.1078).doubleValue())
                              td_out = b_in * v / (a_in - v)
                              postUpdate(Taupunkt_out, td_out)
                              abs_hum_out = Math::pow(10, 5) * mol / gas_const * dd / (temp_out + 273.15)
                          
                              logInfo("Luftfeuchte", "Abs. Luftfeuchte - in: " + abs_hum_in + " g/m3, out: " + abs_hum_out + " g/m3")
                              logInfo("Luftfeuchte", "Taupunkt - in: " + td_in + " Grad Celsius" + ", out: " + td_out + " Grad Celsius")
                          
                          //    if (abs_hum_in > abs_hum_out) { //wenn innen feuchter als außen, dann lüften
                              if ((td_in > td_out) && Kellerfenster.state==OFF) { 
                                  // lüften, Fenster öffnen
                                  logInfo("Luftfeuchte", "Keller lüften")  
                              } else if ((td_in <= td_out) && Kellerfenster.state==ON) {
                                  // nicht lüften, Fenster schließen
                                  logInfo("Luftfeuchte", "Kellerfenster schließen")    
                              }
                          
                          end
                          Die Variable ab habe ich die Formel eingearbeitet und die Rule arbeitet aktuell mit konstanten Daten in meinem Keller (Temp 17 Grad und 60% gewünschter Lüftfeucht). Hier erfolgtein Vergleich der Taupunkte. Du kannst aber einfach die Zeilen entsprechend auskommentieren und wieder mit der absoluten Feuchte vergleichen.

                          Kommentar


                            #14
                            Danke, Check ich heute Abend mal.

                            Kommentar


                              #15
                              Hi,

                              dank dieses Threads habe ich bei mir auch eine "lohnt sich Lüften"-Lösung implementiert. Siehe Screenshot.

                              Die Lüftungseffektivität kann folgende Werte annehmen:
                              • keine
                              • mäßig
                              • mittel
                              • hoch

                              Bei "hoch" macht Lüften am meisten Sinn.
                              (Erfassung von Temperatur und Luftfeuchtigkeit übrigens mittels Enocean-Sensor)


                              Gruß,
                              thoern
                              Angehängte Dateien

                              Kommentar

                              Lädt...
                              X