DS18B20 reading 85 unterdrücken/löschen

Begonnen von M_Trader, 21 Januar 2018, 20:08:28

Vorheriges Thema - Nächstes Thema

M_Trader

Hallo,

habe leider keine zufriedenstellende Antwort bekommen.

Habe Rpi und über Rpi_GPIO lese ich in FHEM die DS18B20 aus. Ca. 1 x pro Stunde bekomme ich den Wert 85. Die Leitung muss leider 5 m lang sein.
Grundsätzlich bin ich mit den gelieferten Werten zufrieden (Intervall & Richtigkeit), nur die 85 möchte ich weg bekommen.


Im FHEM Reference steht:
"suppressReading Used to eliminate unwanted readings. The value is a regular expression, with ^ and $ added. Only necessary in exceptional cases."

suppressReading scheint hier das von mir gewünschte Attribut zu sein, aber wie spezifiziert man das?

Danke für Lösungsvorschläge

M_Trader

JoWiemann

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

PS: So wie ich die Doku lese unterdrückt suppressReading ein Reading, dass durch eine RegEx beschrieben wird. Also das Reading und nicht Inhalte.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

M_Trader

Danke Jörg,

habe das auch gesehen - hier wird dieser String empfohlen

attr <device> userReadings cleanTemp {my $temp = ReadingsNum("<device>","<orig-reading>",85);; return $temp unless($temp == 85);; return ReadingsNum("<device>","cleanTemp",-273) }

Ich weiß aber nicht,  was <orig-reading> ist/zu bedeuten hat

LG

JoWiemann

Zitat von: M_Trader am 21 Januar 2018, 20:26:44

Ich weiß aber nicht,  was <orig-reading> ist/zu bedeuten hat

<orig-reading> ist der Platzhalter für die Bezeichnung vom Temperaturreading Deines ds18b20 Devices.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

M_Trader

Bin leider noch Anfänger. Heißt das ich muß statt "<orig-reading>" etwas einsetzen?
Mein <device> heißt "Kessel_RL"

JoWiemann

Ja, den Namen des Readings. Poste doch bitte mal, in Code Tags, ein


list Kessel_RL


PS: in der Kommandozeile eingeben
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

M_Trader

list Kessel_RLInternals:
   DEF        28-031664672fff
   NAME       Kessel_RL
   NR         32
   NTFY_ORDER 50-Kessel_RL
   STATE      T: 44.75
   TYPE       GPIO4
   READINGS:
     2018-01-21 20:44:20   cleanTemp       -273
     2018-01-21 12:15:41   failures        0
     2018-01-21 20:44:20   state           T: 44.75
     2018-01-21 20:44:20   temperature     44.75
   fhem:
     interfaces temperature
Attributes:
   event-on-change-reading state
   model      DS18B20
   room       GPIO4,Heizraum
   userReadings cleanTemp {my $temp = ReadingsNum("<device>","<orig-reading>",85);; return $temp unless($temp == 85);; return ReadingsNum("<device>","cleanTemp",-273) }

JoWiemann

Mein Vorschlag


userReadings cleanTemp {my $temp = ReadingsNum("Kessel_RL","temperature",85);; return $temp unless($temp == 85);; return ReadingsNum("Kessel_RL","cleanTemp",-273) }

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

M_Trader

Super, es funktioniert!

Mann muss jedoch noch das update-on-change-reading auf den neuen Parameter "cleanTemp" ändern und auch im SVG den neuen Parameter wählen.

Vielen Dank!


PS: es bleibt interessant, wie das mit suppressReading funktionieren würde. Nun wir ja scheinbar ein vorheriger Wert statt den 85 genommen (was nicht ganz richtig ist, jedoch hier keine Rolle spielt)