Ds18B20 readings abrunden

Begonnen von M_Trader, 20 März 2018, 16:29:41

Vorheriges Thema - Nächstes Thema

M_Trader

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) }

Otto123

Hi,

ich würde Dein userReadings mit sprintf bauen.


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Omega

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
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

M_Trader

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) }