Umfrage
Frage:
Wie bekomme ich die "Fehlmessungen" mit dem Wert 85 weg?
Antwort 1: suppressReading
Stimmen: 0
Antwort 2: weiß nicht
Stimmen: 0
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
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
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
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
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
Bin leider noch Anfänger. Heißt das ich muß statt "<orig-reading>" etwas einsetzen?
Mein <device> heißt "Kessel_RL"
Ja, den Namen des Readings. Poste doch bitte mal, in Code Tags, ein
list Kessel_RL
PS: in der Kommandozeile eingeben
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) }
Mein Vorschlag
userReadings cleanTemp {my $temp = ReadingsNum("Kessel_RL","temperature",85);; return $temp unless($temp == 85);; return ReadingsNum("Kessel_RL","cleanTemp",-273) }
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)