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) }
Hi,
ich würde Dein userReadings mit sprintf (http://perldoc.perl.org/functions/sprintf.html)bauen.
Gruß Otto
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
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) }