Ankündigung

Einklappen
Keine Ankündigung bisher.

relative/absolute Luftfeuchtigkeit

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

    relative/absolute Luftfeuchtigkeit

    Hallo,

    mit der Funktion dewpoint kann ja der Taupunkt errechnet werden.
    Kann ich mit sh.py internen Funktionen auch aus Temp und rel.LF die abs.LF errechnen?

    Oder brauche ich dafür eine Logik und import meteo oder ähnliches?

    Gruß,
    Hendrik

    #2
    Hi Hendrik,

    momentan gibt es keine interne Funktion um die abs. LF zu berechnen.

    => Logik.

    z.B. Absolute Luftfeuchte Online-Berechnung mit Berechnungsbeispiele

    Bis bald

    Marcus

    Kommentar


      #3
      Hallo,

      danke für die Info.
      Ich habe mal mit einer Logik dazu angefangen. Das umrechnen funktioniert soweit auch schon, aber bevor ich das hier poste, möchte ich das noch soweit verallgemeinern, dass automatisch die der Wert des aufrufenden Items geschrieben wird und dieser nicht fest verdrahtet ist.

      Gruß,
      Hendrik

      Kommentar


        #4
        Konsequenter wärs aber in sh.tools oder Marcus? Wo ziehst Du da denn "Strich"?
        Derzeit zwischen Kistenauspacken und Garten anlegen.
        Baublog im Profil.

        Kommentar


          #5
          Es benötigt halt meteo und das wiederum numpy

          Kommentar


            #6
            Mmmh, ich meine, wenn der Taupunkt berechnet werden kann, es doch auch mit abs. Feuchte gehen müsste. Ist ja im Grunde irgendwie ähnlich.
            Derzeit zwischen Kistenauspacken und Garten anlegen.
            Baublog im Profil.

            Kommentar


              #7
              Hi,

              ich dachte schon daran das in sh.tools aufzunehmen, wenn Hendrik das schön macht

              Wenn das allerdings zwei externe Module benötigt

              Ist doch nur eine einfache Formel

              Bis bald

              Marcus

              Kommentar


                #8
                Hallo,

                ich habe mich jetzt mal daran versucht. Erstmal mit der meteo-lib, die kann man ja immernoch rauswerfen (oder mitliefern):

                Code:
                ./smarthome/lib/tools.py:
                +from meteo import *
                
                    def mixratio(self, t, rf):
                        abs_hum=rh2mixr(rf, 100000)
                        return abs_hum*rhov(t,100000,abs_hum)*1000
                Benutzung:
                Code:
                 [[Aussen_hum_abs]]
                    name = Aussen abs Luftfeuchte
                    type = num
                    eval = sh.tools.mixratio(sh.aktuelles_wetter.temperatur(),sh.aktuelles_wetter.relative_luftfeuchte())
                eval_trigger=aktuelles_wetter.relative_luftfeuchte,aktuelles_wetter.temperatur

                Fehler:
                Code:
                2013-08-12 22:04:27,431 SmartHome.py DEBUG    Triggering Daten.Aussen_hum_abs - by: Init source: None dest: None value: None -- scheduler.py:trigger:117
                2013-08-12 22:04:27,474 Daten.Aussen_hum_abs WARNING  Method Daten.Aussen_hum_abs exception: eval() arg 1 must be a string or code object -- scheduler.py:_task:295
                Wie kommt das?


                eval = sh.tools.mixratio('20','80')
                hingegen funktioniert.

                Gruß,
                Hendrik

                Kommentar


                  #9
                  Hi Hendrik,

                  probier mal

                  Code:
                  eval = [COLOR="Red"]"[/COLOR]sh.tools.mixratio(sh.aktuelles_wetter.temperatur(),sh.aktuelles_wetter.relative_luftfeuchte())[COLOR="red"]"[/COLOR]
                  Wieso das "sh.tools.mixratio('20','80')" kann ich nur vermuten => es sind dort weniger Klammern im Spiel und der Parser (3rd Party Modul) trennt Strings immer in Arrays bei einem ','.
                  Wenn man das ganze mit " einfasst, dann wird das immer nur als String interpretiert.

                  Bis bald

                  Marcus

                  Kommentar


                    #10
                    Das war's natürlich (wieder).
                    So einen Hinweis hattest du mir ja schonmal gegeben :-(
                    Es ist aber auch nicht intuitiv:
                    Überall kommt sh.py ohne Anführungszeichen aus (auch bei Leerzeichen in name=...). Lässt sich dass nicht intern regeln, so dass der User keine Anführungszeichen braucht?

                    Noch eine Frage in dem Kontext:
                    Code:
                        eval = "sh.tools.rel2abs_hum(sh.aktuelles_wetter.temperatur(),sh.aktuelles_wetter.relative_luftfeuchte()/100)"
                    Müsste doch gehen, oder?
                    rel2abs_hum benötigt als Input die Luftfeuchte als Zahl, also z.B. 0.84, und nicht als Prozent (84).
                    Daher möchte ich den zweiten Parameter durch 100 teilen.
                    In der Funktion scheint aber immer eine 0 anzukommen...

                    Hier mein aktueller Code:
                    Code:
                        def rel2abs_hum(self, t, rf):
                            mixratio=rh2mixr(rf, 100000,t+273.15)
                            abs_hum=mixratio*rhov(t+273.15,100000,mixratio)*1000
                            logger.debug(t)
                            logger.debug(rf)
                            logger.debug(mixratio)
                            logger.debug(abs_hum)
                            return abs_hum

                    Kommentar


                      #11
                      Hi Hendrik,

                      Zitat von henfri Beitrag anzeigen
                      Lässt sich dass nicht intern regeln, so dass der User keine Anführungszeichen braucht?
                      Darüber muss ich mal nachdenken. Geht evtl.

                      Python rechnet so:

                      Integer Operator Integer = Integer
                      Integer Operator Float = Float

                      Probier mal durch 100.0 zu teilen.

                      Bis bald

                      Marcus

                      Kommentar


                        #12
                        Hallo,

                        darauf war ich gerade eben auch gekommen....
                        Bisher mag ich ja vieles in Python. Das aber nicht. Da lobe ich mir doch Pascal/Delphi, wo Variablen einfach deklariert werden müssen -inkl. Typ. Das ist ja auch v.a. gefährlich, wenn der User Eingaben macht.

                        Es funktioniert jetzt jedenfalls:
                        Code:
                            def rel2abs_hum(self, t, rf):
                                if rf>1:
                                   logger.warning('relative humidity greater 1. Assuming percent value. Dividing by 100.')
                                   rf=rf/100.0
                                mixratio=rh2mixr(rf, 100000,t+273.15)
                                abs_hum=mixratio*rhov(t+273.15,100000,mixratio)*1000
                                return abs_hum
                        oben noch ein "from meteo import *" und dann funktioniert es.

                        Ich bin mit dem Autor von Meteo noch in Klausur (das war auch schon erfolgreich, daher gibt es jetzt meteo 2.8 ;-) bzgl. der Abhängigkeit von numpy. Die ist nicht wirklich nötig, da nur log10 aus numpy verwendet wird. log10 gibt es aber auch in math.

                        Dann wäre nur meteo nötig. Das könnte man mitliefern, oder?

                        Gruß,
                        Hendrik

                        Kommentar


                          #13
                          Hi Hendrik,

                          Zitat von henfri Beitrag anzeigen
                          Dann wäre nur meteo nötig. Das könnte man mitliefern, oder?
                          mitliefern ist so ein Sache, der Benutzer müsste es selbst installieren.

                          Zitat von henfri Beitrag anzeigen
                          Lässt sich dass nicht intern regeln, so dass der User keine Anführungszeichen braucht?
                          ist in develop.

                          Bis bald

                          Marcus

                          Kommentar


                            #14
                            Hi Hendrik,

                            die zwei Funktionen von meteo könnte man auch übernehmen. Kennst Du die Lizenz von meteo? Irgendwie ist da nix angegeben.
                            Zur Not programmiere ich das neu.

                            Bis bald

                            Marcus

                            Kommentar


                              #15
                              Zitat von mknx Beitrag anzeigen
                              ist in develop.
                              Klasse!

                              Zitat von mknx Beitrag anzeigen
                              die zwei Funktionen von meteo könnte man auch übernehmen. Kennst Du die Lizenz von meteo? Irgendwie ist da nix angegeben.
                              Zur Not programmiere ich das neu.
                              Ich bin ja in Kontakt mit dem Autor. Ich frage nach.

                              Gruß,
                              Hendrik

                              Kommentar

                              Lädt...
                              X