FHEM Forum

FHEM - Hausautomations-Systeme => 1Wire => Thema gestartet von: M_Trader am 21 Januar 2018, 20:08:28

Umfrage
Frage: Wie bekomme ich die "Fehlmessungen" mit dem Wert 85 weg?
Antwort 1: suppressReading Stimmen: 0
Antwort 2: weiß nicht Stimmen: 0
Titel: DS18B20 reading 85 unterdrücken/löschen
Beitrag von: M_Trader am 21 Januar 2018, 20:08:28
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
Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: JoWiemann am 21 Januar 2018, 20:19:17
Für Dein Problem habe ich folgendes gefunden:

https://forum.fhem.de/index.php?topic=71997.0

und

https://forum.fhem.de/index.php?topic=19653.15

Für supressReading so gut wie nichts.

Grüße Jörg
Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: JoWiemann am 21 Januar 2018, 20:24:41
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
Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: M_Trader am 21 Januar 2018, 20:26:44
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
Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: JoWiemann am 21 Januar 2018, 20:31:09
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
Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: M_Trader am 21 Januar 2018, 20:42:51
Bin leider noch Anfänger. Heißt das ich muß statt "<orig-reading>" etwas einsetzen?
Mein <device> heißt "Kessel_RL"
Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: JoWiemann am 21 Januar 2018, 20:44:50
Ja, den Namen des Readings. Poste doch bitte mal, in Code Tags, ein


list Kessel_RL


PS: in der Kommandozeile eingeben
Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: M_Trader am 21 Januar 2018, 20:49:51
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) }
Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: JoWiemann am 21 Januar 2018, 20:54:22
Mein Vorschlag


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

Titel: Antw:DS18B20 reading 85 unterdrücken/löschen
Beitrag von: M_Trader am 21 Januar 2018, 22:31:25
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)