[gelöst]Probleme mit dem regex, Nullpeak im SVG-Plot (DbLog)

Begonnen von frober, 03 Februar 2018, 13:49:25

Vorheriges Thema - Nächstes Thema

frober

Hallo zusammen,

leider komme ich bei meinem KS300-Plot mit DbLog nicht weiter :-\:

Da ich beim KS300 die average Daten mitlogge, bekomme ich immer kurz nach 0:00 Uhr einen Peak auf 0 (ich möchte nur state auswerten). Im Ausschnitt des Plots genau um 00:01, da wo das avg_day steht. Es wird angezeigt, obwohl ich es laut rexex-Tester richtig heraus filtere.
Momentan habe ich nur avg_day. Dazu kommt noch avg_month und avg_year. Dafür habe ich auch noch keine Lösung :(

Auszug aus DBLog:

03.02.2018 00:01 KS300 KS300 state: T: 2.0  H: 93  W: 0.0  R: 914.9  IR: no  Wi: 0 data  state: T: 2.0  H: 93  W: 0.0  R: 914.9  IR: no  Wi: 0
03.02.2018 00:01 KS300 KS300 avg_day: T: 2.0  H: 91  W: 0.2  R: 0.2 data  avg_day: T: 2.0  H: 91  W: 0.2  R: 0.2
 

Ausschnitt aus dem KS300.gplot:

#logProxy DbLog:logdb,extend=1800:KS300:data:::$val=~s/.*[^avg_day]..T..([\d.-]*).*/$1/eg


Ich habe es zuerst so

#logProxy DbLog:logdb,extend=1800:KS300:data:::$val=~s/.*state..T..([\d.-]*).*/$1/eg

gefiltert, ist das gleiche Ergebnis.

Anzeige von Show preprocessed Input:

get logProxy CURRENT INT 2018-02-03_00:00:00 2018-02-04_00:00:01
DbLog:logdb,extend=1800:KS300:data:::$val=~s/.*[^avg_day]..T..([\d.-]*).*/$1/eg

2018-02-03_00:00:00 2.0
2018-02-03_00:01:16 2.0
2018-02-03_00:01:16 avg_day: T: 2.0 H: 91 W: 0.2 R: 0.2
2018-02-03_00:03:48 1.9
2018-02-03_00:08:53 1.7
2018-02-03_00:13:59 1.6
2018-02-03_00:24:08 1.2
2018-02-03_00:29:13 1.1


Ausschnitt des Plots ist im Anhang.

Wer kann mir hier einen Tipp geben?

Gruß
Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

#1
So, nach langen suchen und probieren, habe ich den Versuch über die gplot-Datei aufgegeben. :(

Die Lösung sieht nun so aus:

Im DbLog-Device habe ich das Attribut valueFN mit folgendem Code gesetzt:

{if ($DEVICE eq "KS300" && $READING eq "data" && $EVENT=~/^[avg]/) {$READING="average"} else {$VALUE=(split("state: ",$VALUE,2))[1]}}

Dadurch wird, bei allem was mit average (avg_day, ...month und ...year) zu tun hat, das READING auf "average" gesetzt. Bei den 'normalen' Messwerte bleibt das READING bei "data". Dadurch lassen sich die Daten leichter, und vielleicht auch schneller, plotten. :)

Zur Erklärung warum "data" siehe folgenden Post:
https://forum.fhem.de/index.php?topic=83066.new

Ich habe nun "data" gelassen, weil es mich nicht stört und ich meine, ich hätte in einem älteren Post gelesen, dass in DbLog, die Mittelwertbildung beim KS300 etwas anders berechnet wird als bei anderen Devices (falls dies immer noch so ist?).

Mittelfristig hätte ich aber gerne eine Lösung für die gplot-Datei. Es gibt bestimmt ähnliche Situationen, wo im state mehrere verschiedene Daten zum filtern/plotten stehen.

Gruß
Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Eigentliche Lösung gefunden. Wer lesen kann.....    ;D

Laut Commandref DbLog:
ZitatSchlüsselwörter
- $val ist der aktuelle Wert die die Datenbank für ein Device/Reading ausgibt.
- $ts ist der aktuelle Timestamp des Logeintrages.
- Wird als $val das Schlüsselwort "hide" zurückgegeben, so wird dieser Logeintrag nicht ausgegeben,  trotzdem aber für die Zeitraumberechnung verwendet.
- Wird als $val das Schlüsselwort "ignore" zurückgegeben, so wird dieser Logeintrag nicht für eine Folgeberechnung verwendet.

Danach sollte folgendes funktionieren:

#logProxy DbLog:logdb,extend=1800:KS300:data:::$val=~s/^(state|avg_[\D]*)..T..([\d.-]*).*/$1eq"state"?$2:"ignore"/eg


Danach wird für avg_day, avg_month und avg_year jeweils $val auf ignore gesetzt, bei state ist $val der erwartete Wert.

Puuuh, langsam kommt bei mir Licht ins Dunkle.

Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...