Frage zu Modul 98_dewpoint und mathematisch runden

Begonnen von Topgun, 03 Dezember 2018, 09:00:37

Vorheriges Thema - Nächstes Thema

Topgun

Hallo,

mich stört schon länger, dass bei dem Modul 98_dewpoint.pm die Ausgabe der absoluten Feuchtigkeit auf ganze Zahlen gerundet wird:


### ** Public interface ** keep stable
# absolute Feuchte in g Wasserdampf pro m3 Luft
sub
dewpoint_absFeuchte ($$)
{
    my ($T, $Hr) = @_;

    # 110 ?
    if (($Hr < 0) || ($Hr > 110)) {
        Log(1, "Error dewpoint: humidity invalid: $Hr");
        return "";
    }
    my $DD = dewpoint_vp($T, $Hr);
    my $AF  = 1.0E6 * (18.016 / 8314.3) * ($DD / (273.15 + $T));
    return round($AF, 1);
}


Bei mir hat das Reading absFeuchte dann z.B. den Wert 10.
Ich hab dann eine Zeit lang den Code immer abgeändert in

    #return round($AF, 1);
    return sprintf("%0.1f", $AF);

So kam dann z.B. 10.3 heraus.
Da das aber bei jedem Update des Moduls überschrieben wird, habe ich es irgendwann wieder aufgegeben.

Jetzt habe ich einem Freund bei FHEM geholfen und bei im kommt mit der round()-Funkrion auch eine Nachkommastelle mit (als z.B. 10.1).

Wie kann das sein?
Im Netz habe ich zu der Math::Round Funktion  nicht wirklich viel gefunden und angeblich unterstützt die gar keine Nchkommastellen (https://metacpan.org/pod/Math::Round).

Wo ist der Denkfehler, oder gibt es Umgebungsvariablen, die das beinflussen?

Willi

Hallo Falko,

ich habe zwar vor Urzeiten (erste Version April 2012, meine letzte Änderung war September 2013) mal das Modul dewpoint entwickelt, aber danach wurde es dann von anderen Autoren weiterentwickelt. absFeuchte gab es bei mir noch nicht. Für mich war dewpoint der Taupunkt, den man in Grad angibt.

absFeuchte scheint gemäß https://svn.fhem.de/trac/changeset/15481/trunk/fhem/FHEM/98_dewpoint.pm der Autor:
hotbso entwickelt zu haben. Er scheint auch gemäß SVN die letzten Änderungen gemacht zu haben. Ich hoffe er meldet sich hier. Ansonsten schreib ihm doch eine PN.

Grüße

Willi
FHEM@Q600(debian) mit DS9490R (1Wire) | FHEM@Sheevaplug(debian) mit RFXCOM-Receiver(80002), CULv3 & USB-WDE1 | FHEM@odroid mit CULv2 & RFXtrx433

hotbso

Zitat von: Topgun am 03 Dezember 2018, 09:00:37

Wie kann das sein?
Im Netz habe ich zu der Math::Round Funktion  nicht wirklich viel gefunden und angeblich unterstützt die gar keine Nchkommastellen (https://metacpan.org/pod/Math::Round).

Wo ist der Denkfehler, oder gibt es Umgebungsvariablen, die das beinflussen?

Kein Denkfehler, aber Du bist nah am Problem. Den Effekt hatten wir schon anderswo. Das dewpoint Modul benutzt die Funktion round, die intern von FHEM bereitgestellt wird. Die gibt bei round ($x,1) dann auch eine Nachkommastelle aus.

Du benutzt ein Modul (vermutlich kein offizielles, contributed oder so), das Math::Round import. Das führt dann dazu, dass bei allen Modulen, die FHEM's round benutzen, auf ganze Zahlen gerundet wird. Am besten ist, Du identifiziert dieses Modul und wendest dich an Autor.

Siehe auch hier-> https://forum.fhem.de/index.php/topic,80656.msg727371.html#msg727371

Topgun

Tatsache, in dem Modul 99_myUtils.pm war Math::Round definiert.

Habe es rausgeschmissen und den einen round-Befehl an die round-Syntax von FHEM angepasst (Nachkommastelle) und schon funktioniert das.
Da muss man erst mal drauf kommen.

Danke!