FHEM Forum

FHEM - Hausautomations-Systeme => 1Wire => Thema gestartet von: M_Trader am 20 März 2018, 16:29:41

Titel: Ds18B20 readings abrunden
Beitrag von: M_Trader am 20 März 2018, 16:29:41
Hallo,

ich habe DS18B20 Sensoren, welche Werte mit mehreren Nachkommastellen ausgeben. Dadurch wird trotz "event on change reading", das Logfile sehr groß.

Wie kann ich die Werte Runden? Z.B. auf null Kommastellen (also nur ganze Grad)?

CHANGED   
   DEF        28-031664672fff
   NAME       Kessel_RL
   NR         32
   NTFY_ORDER 50-Kessel_RL
   STATE      T: 24.625
   TYPE       GPIO4
   READINGS:
     2018-03-20 16:25:13   cleanTemp       24.625
     2018-03-20 13:40:46   failures        0
     2018-03-20 16:25:13   state           T: 24.625
     2018-03-20 16:25:13   temperature     24.625
   fhem:
     interfaces temperature
Attributes:
   event-on-change-reading cleanTemp
   model      DS18B20
   room       GPIO4,Heizraum
   userReadings cleanTemp {my $temp = ReadingsNum("Kessel_RL","temperature",85);; return $temp unless($temp == 85);; return ReadingsNum("Kessel_RL","cleanTemp",-273) }
Titel: Antw:Ds18B20 readings abrunden
Beitrag von: Otto123 am 20 März 2018, 16:34:28
Hi,

ich würde Dein userReadings mit sprintf  (http://perldoc.perl.org/functions/sprintf.html)bauen.


Gruß Otto
Titel: Antw:Ds18B20 readings abrunden
Beitrag von: Omega am 20 März 2018, 18:11:14
Ich habe folgende Kombination (Runden auf 0.5 und anzeigen mit 1 Nachkommastelle):
attr <sensor> event-on-change-reading .*:0.5
attr <sensor> stateFormat {sprintf("%.1f",ReadingsVal("WW_EG_Zirkulation","temperature",0))." C"}


LG
Holger
Titel: Antw:Ds18B20 readings abrunden
Beitrag von: M_Trader am 21 März 2018, 07:55:58
Danke an Otto & Holger!

Beide habt ihr mir sehr geholfen - ich mußte nämlich für die Anzeige & das Logfile den Sprintf-Befehl nutzen.

So funktioniert es. Die Anzahl der Logos hat sich ca. um 2/3 reduziert, was der Geschwindigkeit der SVG Anzeige sehr gut tut.

CHANGED   
   DEF        28-031664672fff
   NAME       Kessel_RL
   NR         32
   NTFY_ORDER 50-Kessel_RL
   STATE      45.6 C
   TYPE       GPIO4
   READINGS:
     2018-03-21 07:54:26   cleanTemp       45.6
     2018-03-20 22:00:32   failures        0
     2018-03-21 07:54:26   state           T: 45.625
     2018-03-21 07:54:26   temperature     45.625
   fhem:
     interfaces temperature
Attributes:
   event-on-change-reading cleanTemp:0.5
   model      DS18B20
   room       GPIO4,Heizraum
   stateFormat {sprintf("%.1f",ReadingsVal("Kessel_RL","cleanTemp",0))." C"}
   userReadings cleanTemp {my $temp = sprintf("%.1f",ReadingsNum("Kessel_RL","temperature",85));; return $temp unless($temp == 85);; return ReadingsNum("Kessel_RL","cleanTemp",-273) }