event-on-change-reading verfälscht Werte

Begonnen von stromer-12, 28 April 2015, 07:19:59

Vorheriges Thema - Nächstes Thema

stromer-12

Moin,

Ich habe festgestellt, das event-on-change-reading Zahlenwerte in Exponent-Schreibweise verfälscht.

define td dummy
attr td event-on-change-reading .*:0.2

set td 12
Ergebnis: td 12

set td 1.2324568e05
Ergebnis: td 1.232456805

set td 3.456789e-05
Ergebnis: td 3.456789-05

PERL WARNING: Argument "3.456789-05" isn't numeric in subtraction (-) at fhem.pl line 3769.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

stromer-12

Bei großen Werten ab 19 Stellen bzw bei kleinen Werten kleiner 1/10000 wird in die Exponenten Schreibweise umgeschaltet:

{ my $a = ( 30000000 * 866421444444 ) ;; fhem("set td $a") }
fhem> dummy td 2.59926433333219


Sollte 2.599264333332e19 heißen.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

rudolfkoenig

Schuld ist folgende Zeile in fhem.pl:
Zitat$value =~ s/[^\d\.\-]//g; # We expect only numbers here.

stromer-12

In dieser Zeile habe ich jetzt mal das "e" mit reingenommen, damit ist es aber nur ein oberflächlicher Test.

Gesendet von meinem GT-I9295

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL