Autor Thema: Ds18B20 readings abrunden  (Gelesen 447 mal)

Offline M_Trader

  • New Member
  • *
  • Beiträge: 14
Ds18B20 readings abrunden
« 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) }

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10200
    • Otto's Technik Blog
Antw:Ds18B20 readings abrunden
« Antwort #1 am: 20 März 2018, 16:34:28 »
Hi,

ich würde Dein userReadings mit sprintf bauen.


Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online Omega

  • Full Member
  • ***
  • Beiträge: 495
Antw:Ds18B20 readings abrunden
« Antwort #2 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
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline M_Trader

  • New Member
  • *
  • Beiträge: 14
Antw:Ds18B20 readings abrunden
« Antwort #3 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) }