FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: gbomacfly am 13 Februar 2018, 20:10:14

Titel: [gelöst] SVG Plot Werte filtern
Beitrag von: gbomacfly am 13 Februar 2018, 20:10:14
Hi zusammen,

ich hab ein kleines "Problem". Ich möchte die desiredTemperature meines MAX!-Heizkörperthermostats loggen und plotten.
Funktioniert soweit auch ganz gut, nur leider hat das Reading nicht nur numerische Werte, sondern auch "eco" und "boost", ist aber auch mal komplett leer:
2018-02-13_16:08:33 22.0
2018-02-13_16:12:45 22.0
2018-02-13_16:14:13
2018-02-13_16:14:13 boost
2018-02-13_16:27:56 eco
2018-02-13_16:28:04 18.0

Dies hat zur Folge, dass der Plot an der Stelle auf 0 runtergeht (Siehe Screenshot, gelbe Linie "SollTemperatur"). Desweiteren müllt es mir das Log mit folgendem zu:
2018.02.13 19:39:15 1: PERL WARNING: Argument "eco" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1566.
2018.02.13 19:39:15 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1566.
2018.02.13 19:39:15 1: PERL WARNING: Argument "boost" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1566.


Jetzt dachte ich, ich filter diese 3 Möglichkeiten einfach raus. Ich benutze DBLogging mit der Einstellung DbLogType: History und dachte daher an sowas:
WZ.Heizung:desiredTemperature:::$val=~s/(?!d)//g
oder
WZ.Heizung:desiredTemperature:::$val=~(?!d)

Ich hab zig Kombinationen ausprobiert, diverse Klammern, "" und '' gesetzt, Google und die Forensuche bemüht, hab aber leider bisher keinen Erfolg erzielen können. Entweder war die Linie komplett auf 0, oder es sieht aus wie im Screenshot.

Was für Möglichkeiten habe ich jetzt? Ein userreading? Wie müsste sowas aussehen? Oder gibt es da eine Filtermöglichkeit bei SVG? Kann ich bestimmte Werte ignorieren? Irgendwie seh ich grade den Wald vor lauter Bäumen nicht...



Titel: Antw:SVG Plot Werte filtern
Beitrag von: Phill am 13 Februar 2018, 20:38:30
Ich dachte auch gleich an ein userReading. Könnte so ausehen.
attr WZ.Heizung userReadings filteredTemp {my $r=ReadingsVal("WZ.Heizung","desiredTemperature",""); $r=~/^\d/ ? $r : ReadingsVal("WZ.Heizung","filteredTemp","") }

Titel: Antw:SVG Plot Werte filtern
Beitrag von: gbomacfly am 13 Februar 2018, 21:06:25
Perfekt, hat sofort funktioniert :)

Vielen Dank! :)
Titel: Antw:SVG Plot Werte filtern
Beitrag von: kadettilac89 am 13 Februar 2018, 21:07:09
Ich würde die fehlerhaften Datensätze schon vom Loggen ausnehmen. Du verwendest DBlog, schau dir mal das DBLog-Attribut "valueFn" und IGNORE=1 im selben Zusammenhang an. Damit kannst du Werte ändern bevor diese in dei DB kommen (eco = xxx Grad, boost = xxx Grad), oder Sätze ignorieren.

Das hat den Vorteil, dass du das in einem Aufwasch für alle MAX-Thermostate machst, und nicht überall ein Userreading füttern musst.
Titel: Antw:[gelöst] SVG Plot Werte filtern
Beitrag von: gbomacfly am 13 Februar 2018, 21:09:17
Hmmm, das klingt sogar noch besser. Das schau ich mir mal an, vielen Dank! :)