Hallo,
ich bin im Forum und bei Tante Google nicht fündig geworden. Ich möchte gerne, um die Logeinträge einzudämmen, nur von gewissen Devices eines speziellen TYPE loggen.. Ich habe folgendes versucht, was aber nicht geht.. WIe wäre es richtig?
.*(FILTER=TYPE=myPoolcontroller):.*
danke für die Hilfe.
Lg TOm
mein Ansatz wäre
.*:FILTER=TYPE=myPoolcontroller:.*
aber sind deine Poolcontroller wirklich vom TYPE myPoolcontroller ?
danke für die Antwort. das teste ich gleich.
hier meine Internals zum Type
Internals:
DEF IP login PW 300
NAME PoolController
NR 79
STATE OK
TYPE myPoolcontroller
hostname IP NR
interval 300
name PoolController
ein list .*:FILTER=TYPE=myPoolcontroller
sollte dir ja alle Devices des TYPE myPoolcontroller anzeigen...
dann noch :.* für alle Events .. so dachte ich mir das...
Hallo zusammen,
im DbLog DEF werden die Angaben tatsächlich nur als Regex ausgewertet, DevSpec (https://fhem.de/commandref_DE.html#devspec (https://fhem.de/commandref_DE.html#devspec)) wirken an dieser Stelle nicht.
Dazu kann man in DbLog das (wahrscheinlich selten beachtete) Attribut "excludeDevs" verwenden. Hier kann eine Liste von Device, bzw. auch DevSpec, angegeben werden die vom Logging prinzipiell ausgeschlossen werden sollen. (ist höherwertig als die DEF Angabe)
In dem Beispielfall könntest du zunächst alles erlauben zu loggen, also im DEF:
.*:.*
und über das Attribut alles ausschließen was nicht vom Type myPoolcontroller ist:
attr ....excludeDevs TYPE!=myPoolcontroller
Du gibst aber nur TYPE an. Den Filter kannst du zusätzlich verwenden um weitere, feinere Abgrenzungen zu machen -> DevSpec-Commandref
So sollte es funktionieren was du möchtest.
Grüße
Heiko
hallo zusammen, danke.
die Lösung von kumue hat in der Tat nicht funktioniert: ich hatte es wie folgt definiert:
.*:(temperature|humidity|co2|rain|wind|battery|dim|power|energy|frequency|luminance|Activity|state).*|Arlo_Dummy:.*|.*:FILTER=TYPE=myPoolcontroller:.*
ich werde deshalb wie vonn DS_Starter vorgeschlagen vorgehen, jedoch ohne ! bei TYPE=. Da ist dir vermutlich ein Schreibfehler unterloffen, oder?
Bei den zu berücksichtigenden Readings habe ich z.B. "wind" angegeben (siehe oben). Nun nimmt es mir alle Readings die "wind" im Wort haben. Ich möchte aber ausschliesslich das Reading "wind" und nix anderes.. Muss man da was spezielles angeben?
Schreibfehler nicht, vielleicht Verständnisfehler.
Also wenn du nur Devices loggen willst, die vom Typ myPoolcontroller sind, musst alle Devices in "excludeDevs" angeben, die NICHT von diesem Typ sind. Deswegen schließe sie aus wenn Typ nicht myPoolcontroller:
attr ....excludeDevs TYPE!=myPoolcontroller
Im DEF würdest du angeben:
.*:wind
Das loggt von den nicht ausgeschlossenen Devices nur Readings, die genau "wind" heißen.
Mit verbose 4 siehst du übrigens Meldungen wenn/welche Devices vom Logging ausgeschlossen werden wenn ein Event verarbeitet wird.
Zitat von: DS_Starter am 31 Januar 2018, 19:03:00
.*:wind
Das loggt von den nicht ausgeschlossenen Devices nur Readings, die genau "wind" heißen.
Mit verbose 4 siehst du übrigens Meldungen wenn/welche Devices vom Logging ausgeschlossen werden wenn ein Event verarbeitet wird.
herzlichen Dank. Das funktioniert bei mir noch nicht ganz. siehe Beispiel unten. Hier habe ich am Schluss .*:current gemacht. Und trotzdem nimmt es mir sämtliche Readings wie z.B: currentTitle (Sonos).
.*:(temperature|humidity|co2|rain|battery|dim|power|energy|frequency|luminance|Activity)|Arlo_Dummy:.*|.*:current
hmm, komisch..
Der Regex-Filter von DbLog geht davon aus, dass der Regex in der Form:
<device name>:<event>
angegeben ist. Das heißt der im DEF angegebene Regex wird mit dem oben angebenen Muster verglichen.
Versuche mal dein Regex möglichst nach diesem Muster auszurichten. Eine Möglichkeit wäre (ungetestet):
.*:(temperature|humidity|co2|rain|battery|dim|power|energy|frequency|luminance|Activity|current)|Arlo_Dummy:.*
Danke für deine Geduld. Dein Vorschlag hatte ich auch schon probiert. Leider nimmt es auch die currenTrack Events von Sonos..
Woran das wohl liegen könnte?
Gesendet von iPhone mit Tapatalk
Das war natürlich zu simpel von mir gedacht. Der Regex-Vergleich ist ja eine Mustersuche. Sobald "current" enthalten ist, ist die Suche wahr.
Probiers mal so (":" hinter current):
.*:(temperature|humidity|co2|rain|battery|dim|power|energy|frequency|luminance|Activity|current:)|Arlo_Dummy:.*
Der String muß nun "current:" sein, was bei currentTitle usw. nicht der Fall ist.
Grüße
Heiko