[Gelöst] Bestimmten Readingwert ignorieren: Attrib. "suppressReading"

Begonnen von M.Piet, 15 Mai 2017, 15:33:51

Vorheriges Thema - Nächstes Thema

M.Piet

Hallo Zusammen,

so wie ich gelesen habe, ist es mit dem Attribut "suppressReading" möglich, bestimmte Readingwerte zu ignorieren.
Ich finde aber nichts wirklich brauchbares, die man mit dem Attribut "suppressReading" umgeht...?
Oder erreicht man damit gar nicht das von mir gewollte?

Hintergrund: auf meinem 1-wire Bus habe ich alle 7-10 Tage mal einen Wert von 85°. Ich habe nun alles probiert, um den Bus stabiler zu bekommen (dank der Hilfe hier im Forum). Ich finde den Fehler nicht. Darum will ich nicht weiter die Ursache bekämpfen, sondern die sehr seltene Auswirkung.
Da ich meine Temperaturen überwache, gibt es leider bei diesen Ausreißern einen kurzen Alarm (pushover), der auch zu einem niedrigeren WAF führt...

Ich habe Lösungen gefunden, die Plots von den 85° Problem zu bereinigen. Ich brauch aber eine Lösung, die das Reading bei einem Wert von 85° verwirft.

Danke für Anregungen. :)

dev0

Nimm ein userReading, dass den Wert verwirft/korrigiert und benutze dieses Reading dann zum Triggern...
Edit: readingsChange wäre noch eine Alternative dazu.

M.Piet

Hey, danke für die Antwort.

Frage zum readingsChange: wird hier nicht der Wert des Readings nur verändert? Er sollte bei einem Wert von 85° ignoriert werden. Oder hab ich das falsch verstanden?

userReading wäre eine gute Idee. Aber hier stellt sich mir die Frage: wie bekomme ich es hin, dass der Wert von 85° in dem userReading nicht geschrieben wird? Alles andere drunter und drüber aber schon?

Thorsten Pferdekaemper

Zitat von: M.Piet am 15 Mai 2017, 20:17:42userReading wäre eine gute Idee. Aber hier stellt sich mir die Frage: wie bekomme ich es hin, dass der Wert von 85° in dem userReading nicht geschrieben wird? Alles andere drunter und drüber aber schon?
In etwa...

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

Gruß,
   Thorsten
FUIP

M.Piet


KernSani

Wenn's klappt, bitte auf [Gelöst] setzen (Subject des ersten Post editieren) ansonsten: Nochmal nachfragen :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

M.Piet

Vielen Dank schon mal!

Das werde ich machen. Ich habe nun erstmal die Userreadings aller 15 1wire-Devices angelegt und schreibe die Werte in ein Log.
Die Plots habe ich erstmal so gelassen. Sobald ich wieder einen 85°-Ausreißer habe, schaue ich in die Logs. Dort dürften die dann nicht mehr sein.

Eine kleine Frage noch zu den Userreadings: kann ich die auch gleich auf 2 Stellen hinter dem Koma kürzen? Oder müsste ich da ein weiteres Userreading anlegen?



KernSani

Zitat von: KernSani am 15 Mai 2017, 23:16:47
Wenn's klappt, bitte auf [Gelöst] setzen (Subject des ersten Post editieren) ansonsten: Nochmal nachfragen :-)
:-D
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Amenophis86

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

dev0

ZitatDachte das geht nicht und mann muss mit readingsChange arbeiten. Oder ist das nur, wenn man Readings addiert?
Entweder verstehe ich nicht was Du meinst oder Du hast die Arbeitsweise von userReadings nicht verstanden:
userReadings erstellt ein neues Reading, dessen Wert durch die Ausführung von { <perl code> } bestimmt wird. Solange { <perl code> } ein gültiger Ausdruck ist, kannst Du zurückgeben was Du möchtest. readingsChange erstellt, im Gegensatz zu userReadings, kein neues Reading, sondern manipuliert ein Vorhandenes. Aber auch hier kannst Du zurückgeben was Du möchtest.

Amenophis86

beide Funktionen sind mir bewusst was sie machen sollen, aber, wenn du dir die Diskussion anschaust, wie readingsChange entstanden ist, dann war es damals, weil ein user ein Reading in einem userReading gerundet haben wollte und dies nicht funktioniert hatte: https://forum.fhem.de/index.php/topic,60077.msg525953.html#msg525953 daher dachte ich, dass das Runden im userReading nicht funktioniert.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

M.Piet

Zitat von: KernSani am 16 Mai 2017, 21:58:23
:-D
Noch weiß ich nicht, ob die Lösung klappt. Hatte geschrieben dass es durchaus 1-2 Wochen dauern kann, bis ich mal wieder ein 85° Wert habe. Dachte mir, dass ich es auf "gelöst" setzte, wenn ich weiß das es geht. Kann das aber gern schon vorher machen.  :)

Amenophis86

Zitat von: M.Piet am 17 Mai 2017, 08:34:23
Noch weiß ich nicht, ob die Lösung klappt. Hatte geschrieben dass es durchaus 1-2 Wochen dauern kann, bis ich mal wieder ein 85° Wert habe. Dachte mir, dass ich es auf "gelöst" setzte, wenn ich weiß das es geht. Kann das aber gern schon vorher machen.  :)

Wenn du der Meinung bist, dass es gelöst ist, dann gerne machen. Nur nicht vergessen ;)
Alternativ kann man so etwas auch mal mit dem setreading Befehl testen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

M.Piet

Heute morgen gegen 6:30 Uhr hatte ich im Plott wieder ein 85° Messwert (siehe Screenshot).

Was sagt mein Log zum userReadings dazu:
2017-05-31_06:20:21 DS18S20_444E0C030800 cleanTemp: 61.375
2017-05-31_06:21:22 DS18S20_444E0C030800 cleanTemp: 61.375
2017-05-31_06:22:22 DS18S20_444E0C030800 cleanTemp: 61.3125
2017-05-31_06:23:23 DS18S20_444E0C030800 cleanTemp: 61.3125
2017-05-31_06:24:23 DS18S20_444E0C030800 cleanTemp: 61.3125
2017-05-31_06:25:23 DS18S20_444E0C030800 cleanTemp: 61.3125
2017-05-31_06:26:24 DS18S20_444E0C030800 cleanTemp: 61.25
2017-05-31_06:27:24 DS18S20_444E0C030800 cleanTemp: 61.25
2017-05-31_06:28:24 DS18S20_444E0C030800 cleanTemp: 61.25
2017-05-31_06:29:25 DS18S20_444E0C030800 cleanTemp: 61.25
2017-05-31_06:30:25 DS18S20_444E0C030800 cleanTemp: 61.25
2017-05-31_06:31:26 DS18S20_444E0C030800 cleanTemp: 61.1875
2017-05-31_06:32:26 DS18S20_444E0C030800 cleanTemp: 61.1875
2017-05-31_06:33:27 DS18S20_444E0C030800 cleanTemp: 61.125
2017-05-31_06:34:27 DS18S20_444E0C030800 cleanTemp: 61.125
2017-05-31_06:35:27 DS18S20_444E0C030800 cleanTemp: 61.0625
2017-05-31_06:36:28 DS18S20_444E0C030800 cleanTemp: 61.0625
2017-05-31_06:37:28 DS18S20_444E0C030800 cleanTemp: 61.0625
2017-05-31_06:38:28 DS18S20_444E0C030800 cleanTemp: 61
2017-05-31_06:39:29 DS18S20_444E0C030800 cleanTemp: 61
2017-05-31_06:40:30 DS18S20_444E0C030800 cleanTemp: 60.9375
2017-05-31_06:41:30 DS18S20_444E0C030800 cleanTemp: 60.9375
2017-05-31_06:42:30 DS18S20_444E0C030800 cleanTemp: 60.875
2017-05-31_06:43:31 DS18S20_444E0C030800 cleanTemp: 60.875
2017-05-31_06:44:31 DS18S20_444E0C030800 cleanTemp: 60.875
2017-05-31_06:45:32 DS18S20_444E0C030800 cleanTemp: 60.875
2017-05-31_06:46:32 DS18S20_444E0C030800 cleanTemp: 60.8125
2017-05-31_06:47:33 DS18S20_444E0C030800 cleanTemp: 60.8125
2017-05-31_06:48:33 DS18S20_444E0C030800 cleanTemp: 60.8125
2017-05-31_06:49:34 DS18S20_444E0C030800 cleanTemp: 60.75
2017-05-31_06:50:34 DS18S20_444E0C030800 cleanTemp: 60.75
2017-05-31_06:51:34 DS18S20_444E0C030800 cleanTemp: 60.75
2017-05-31_06:52:34 DS18S20_444E0C030800 cleanTemp: 60.75
2017-05-31_06:53:35 DS18S20_444E0C030800 cleanTemp: 60.6875
2017-05-31_06:54:36 DS18S20_444E0C030800 cleanTemp: 60.6875
2017-05-31_06:55:36 DS18S20_444E0C030800 cleanTemp: 60.6875
2017-05-31_06:56:37 DS18S20_444E0C030800 cleanTemp: 60.6875
2017-05-31_06:57:37 DS18S20_444E0C030800 cleanTemp: 60.625
2017-05-31_06:58:37 DS18S20_444E0C030800 cleanTemp: 60.625
2017-05-31_06:59:37 DS18S20_444E0C030800 cleanTemp: 60.625


Wie man sieht: es funktioniert!!!! Ich baue nun alle Plots und notifys auf das userReadings um und meine Probleme sind weg.

Vielen Dank an allen die mir geholfen haben!!!