[gelöst] Runden bei [device:name:r<n>] im Stateformat funktioniert nicht?

Begonnen von roedert, 06 August 2019, 22:49:26

Vorheriges Thema - Nächstes Thema

roedert

Laut commandref und einigen Forenbeiträgen kann man mit den Suffix :r<n> im "set magic" im Stateformat auf die angegebene Anzahl Kommastellen runden.
Doch das klappt bei mir nicht wie gewünscht, statt Nachkommastellen wird nur auf ganze Zahlen gerundet - egal ob ich :r1, :r2, :r3 etc. angebe.

[yyy:var] liefert 1.2345
[yyy:var:r1] liefert 1
[yyy:var:r2] liefert 2

Anbei das komplette Listing des dummys:
Internals:
   FUUID      5d49e619-f33f-281e-e39d-db5028188d13b662
   NAME       yyy
   NR         117
   STATE      1
   TYPE       dummy
   READINGS:
     2019-08-06 22:42:15   var             1.2345
Attributes:
   room       _dummy
   stateFormat [$name:var:r1]


 

amenomade

Bei mir geht es
Internals:
   CFGFN     
   FUUID      5d49e9f6-f33f-fe91-c48f-559c15bb874ce9c3
   NAME       yyy
   NR         117
   STATE      1.456
   TYPE       dummy
   .attraggr:
   .attrminint:
   READINGS:
     2019-08-06 23:04:04   var             1.4555
Attributes:
   stateFormat [$name:var:r3]


Etwas in der Log zu sehen?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roedert

Nein, nix im Log.
Identisches Verhalten auf 2 FHEM-Systemen ... keine Nachkommastelle!

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roedert

Habe gerade nochmal nen update gemacht .... unverändert.
Problem ist übrigens nicht nur bei einem dummy.

98_dummy.pm 19585 2019-06-09 08:04:48Z rudolfkoenig

doif.js                    15546 2017-12-03 09:57:42Z Ellert
f18.js                     19292 2019-04-29 21:30:58Z rudolfkoenig
fhemweb.js                 19953 2019-08-05 06:57:11Z rudolfkoenig

SetExtensions.pm 19208 2019-04-17 19:27:09Z rudolfkoenig

doif.js                    15546 2017-12-03 09:57:42Z Ellert
f18.js                     19292 2019-04-29 21:30:58Z rudolfkoenig
fhemweb.js                 19953 2019-08-05 06:57:11Z rudolfkoenig

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roedert

Das liefert genauso falsch auch 3 statt 2.56!
Heisst also im Perl ist was krumm. perl --version liefert v5.24.1
cpan sagt Math::Round 0.07 ... habe gerade mal nen Update gestartet.

Gelöst:
Nach Entfernen der Zeile
use Math::Round qw/round/;
aus meiner 99_myUtils und einem Neustart werden nun auch Dezimalstellen angezeigt!

Danke für den "Wink mit dem Zaunpfahl" mit der Perl-round-Funktion!

amenomade

Schön, dass es wieder geht
Eigentlich verstehe ich aber nicht ganz, warum die overridden round Funktion aus Math::Round, das Ergebnis so verfälscht... aber gut...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roedert

Weil die Math::Round::round den 2. Parameter für die Nachkommastellen nicht kennt. Math::Round::round rundet nur auf Ganzzahlen (integer).

https://metacpan.org/pod/Math::Round


amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus