Ankündigung

Einklappen
Keine Ankündigung bisher.

Windchill berechnen

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

    Windchill berechnen

    Hat da schon mal jemand eine Rule erstellt?
    Ich habe versucht, mich an einem Fhem Beitrag langzuhangeln und hab diese Formel (Ausschnitt) gefunden.

    $Twc = 13.12+0.6215*$T-11.37*($Vw**0.16)+0.3965*$T*($Vw**0.16);

    Soweit habe ich jetzt mal gebastelt. Aber die Doppel ** kann ich nicht umsetzen. Das müsste ja eigentlich hoch 0,16 sein. Aber wie gibt mal das als Formel ein?


    rule "Wind Chill"
    when
    // Time cron "0 0/1 * * * ?"
    then
    {
    var Number Temp = Dirm_Temperatur.state as DecimalType
    var Number Wind = Dirm_Wind_KMH.state as DecimalType

    if (Wind > 5)
    {
    Dirm_TempGefue.postUpdate(13.12 + 0.6215 * Temp - 11.37 * (Wind ** 0.16) + 0.3965 * Temp * (Wind ** 0.16))

    }
    }
    end

    VG Fossi

    #2
    Moin,

    die korrekte funktion ist hier pow() aus der Math Bibliothek.

    Thomas

    Kommentar


      #3
      Oh vielen Dank. Ich übe die Regeldefinition erst seid 8 Wochen. Wie muß ich das Anwenden?

      Dirm_TempGefue.postUpdate(13.12 + 0.6215 * Temp - 11.37 * pow(Wind * 0.16) + 0.3965 * Temp * pow(Wind * 0.16))

      So in der Art? Vielen Dank.

      VG Fossi

      Kommentar


        #4
        Fast, es muss Math:ow(Wind, 0,16) heißen. ggf. musst du noch Typecasts machen. Ich würde nicht gleich die ganze Formel in den postUpdate packen, sondern Stück für Stück mit Variablen zusammenbauen. Vorteil ist, dass Du besser nach fehlern suchen kannst.

        Thomas

        Kommentar


          #5
          Gehe ich richtig in der Annahme Math: pow(Wind, 016) In dem Thread ist nen Smily aufgetaucht :-)

          Probier ich heute Abend mal aus.

          Kommentar


            #6
            Dirm_TempGefue.postUpdate(13.12 + 0.6215 * Temp - 11.37 * Math:ow(0.16, Wind.doubleValue) + 0.3965 * Temp * Math:ow(0.16, Wind.doubleValue))

            So rechnet die Formel was - Ich glaube aber nicht das richtige. In Köln sind 5° Temp. TempGefue wird auf 16° gerechnet. Jetzt muss ich mir die Originalformel wohl mal ansehen und zerlegen, damit ich die einzelnen Bestandteile ins richtige Verhältnis zueinander bekomme. Da brauch ich aber mal ruhe zu. Das nächste Wochenende kommt bestimmt.

            Kommentar


              #7
              Kann auch so rum sein. Windchill ist aber soweit ich weiss etwas anderes als die gefühlte Temperatur. Es kommen unterschiedliche Modelle zum Einsatz.

              Thomas

              Kommentar


                #8
                Habs! Hier die Rule, für alle, die es nachbauen wollen:

                Code:
                rule "Wind Chill"
                when
                    Time cron "0 0/5 * * * ?"
                then
                        var Number Temp = Dirm_Temperatur.state as DecimalType
                        var Number Wind = Dirm_Wind_KMH.state as DecimalType
                        
                        if (Wind > 5)
                            {
                                Dirm_TempGefue.postUpdate(13.12 + 0.6215 * Temp - 11.37 * Math::pow(Wind.doubleValue, 0.16) + 0.3965 * Temp * Math::pow(Wind.doubleValue, 0.16))
                                logInfo("test-history1", Dirm_TempGefue.toString)
                            }
                        else
                            {
                                Dirm_TempGefue.postUpdate(Temp)
                //                logInfo("test-history2", Dirm_TempGefue.toString)    
                            }
                end
                Hier gehts tatsächlich um Wind Chill. Gefühlte Temperaturen beinhalten zudem Lüftfeuchtigkeit und weitere Werte.
                Zudem habe ich was davon gelesen, dass Windchill erst ab 5 km/h Windgeschwindigkeit zu rechnen ist. Daher wird bei weniger Wind die tatsächliche Temperatur übernommen.

                Danke auch Dir, Thomas

                VG - Fossi

                Kommentar


                  #9
                  Danke für die Rule. Einen hinweis habe ich noch :-) Du berechnest den WindChill zeitgesteuert. macht es nicht mehr Sinn bei jeder Änderung der Temperatur bzw. Windgeschwindigkeit den Windchill neu zu berechnen. Aus der hohlen Hand wäre die cron Anweisung durch:

                  Code:
                  Dirm_Temperatur changed or
                  Dirm_Wind_KMH changed
                  zu ersetzen.

                  Gruß
                  Thomas
                  Zuletzt geändert von dibbler42; 07.01.2016, 10:58. Grund: Korrekturen

                  Kommentar


                    #10
                    Das ist schon richtig. Ich möchte aber möglichst gleichmäßige Grafen haben, so lasse ich den Wert in regelmäßigen Abständen in die DB schreiben. Openhab läuft bei mir in einer virtualisierten Maschine auf einem "richtigen" Server. Somit haperts nicht an der Performance Openhab soll ruhig ein bisschen arbeiten.

                    Der nächste Punkt ist, dass die KS300 von EQ3 wohl ein ein bisschen schlappes Funkmodul hat. Ich hab den CUNO jetzt Luftlinie 3 Meter vom Wettersensor weg platziert. Dort bekomme ich die Wetterdaten immer noch nicht regelmäßig, aber nun zumindest in der Regel spätestens nach 10 Minuten. Die KS300 sendet alle 155Sec ein Telegramm.

                    Das klappt inzwischen ganz gut, jetzt hab ich noch die Herausforderung, dass die Regenmenge gelegentlich auf Err steht. Da muss ich mal sehen, was der Regenzähler in die DB schreibt, und ob die Umrechnungsregel dazu passt. Das mach ich wohl am Wochenende.

                    Ein Tipp an alle die, die sich eine Wetterstation kaufen wollen: Das macht im Herbst/Winter deutlich mehr Spass ;-)
                    Ist zwar ein bisschen frisch beim Montieren, aber man hat direkt Werte und Kurven auf allen Grafen.

                    VG - Fossi

                    Kommentar


                      #11
                      Verstehe ich, aber das regelmäßige Speichern für den Graph kann Du mit der Persistence steuern mit

                      Code:
                      SvVt_InternetDownload        : strategy = everyMinute, restoreOnStartup
                      Wird jede Minute ein Wert geschrieben.

                      Das zweite Thema lässt sich damit allerdings nicht lösen

                      Thomas

                      Kommentar

                      Lädt...
                      X