HI!
Gibt es die Möglichkeit auf all meine Fhem Devices das Attribtu "DbLogExclude.*" zu setzen ohne das man jedes einzeln anpacken muss?
Das würde mir möglicherweise Stunden Sparen... :-X ;D
Danke!
Ja, geht: devspec
attr .* DbLogExclude .*
Prüfen mit list (bevor du was tust):
list .*
Aber ich denke nicht, dass du wirklich ALLEN Devices das Attribut verpassen willst?
ACHTUNG: ist vorher schon was gesetzt bei einem/diesem Attribut ist es WEG! D.h. mit diesem "Befehl" wird NUR .* für das Attribut gesetzt, kein "append"!
Und vermutlich kommt nach dem Attributnamen auch ein Leerzeichen (wie bei mir)...
Es gibt auch andere "Filter" bei devspec...
...einfach mal mit list testen.
EDIT: siehe commandref
Zitat
Geräte-Spezifikation (devspec)
[EN DE]
Die Befehle attr, set, get, usw. attr, deleteattr, displayattr, delete, get, list, set, setreading, setstate, trigger können eine komplexere Gerätespezifikation als Argumente enthalten, die auch eine Anzahl von Geräten betreffen kann. Eine Gerätespezifikation kann folgendes sein:
ein einzelner Gerätename. Dies ist der Normalfall
eine durch Komma(,) getrennte Liste von Gerätenamen
ein regulärer Ausdruck
ein NAME=WERT Ausdruck, wo NAME ein "Internal" Wert wie TYPE ist, ein Reading-Name oder ein Attribut. WERT ist ein regulärer Ausdruck. Um die Bedingung zu negieren, muss NAME!=WERT verwendet werden. Um die Suche einzugrenzen, kann man als Praefix i: für internal Werte, r: für Reading-Namen und a: für Attribute verwenden, siehe das Beispiel unten. Groß-/Kleinschreibung wird durch die Verwendung von ~ oder !~ ignoriert.
Falls die Spezifikation von :FILTER=NAME=WERT gefolgt wird, dann wird die zuvor gefundene Liste durch diesen neuen Ausdruck gefiltert.
Beispiele:
set lamp1 on
set lamp1,lamp2,lamp3 on
set lamp.* on
set room=kitchen off
set room=kitchen:FILTER=STATE=on off
set room=kitchen:FILTER=STATE!=off off
list disabled=
list room~office
list TYPE=FS20 STATE
list i:TYPE=FS20 STATE
Bemerkungen:
die Spezifikation kann keine Leerzeichen enthalten.
falls ein Gerätename exakt dem Spezifikation entspricht, dann werden keine reguläre Ausdrücke oder Filter ausgewertet.
zuerst wird die durch Komma getrennte Spezifikation abgearbeitet, dann folgen die regulären Ausdrücke und die Filter
die Befehlszeile kann die selbe Gerätebezeichnung mehrfach enthalten z.B.: "set lamp3,lamp3 on". Lamp3 wird hier zwei Mal eingeschalten.
um Strukturen mit komplexeren Anforderungen zu realisieren lesen Sie bitte den Abschnitt zu structure.
Gruß, Joachim
Hmm... Vielen Dank!
Ja, das mit dem Leerzeichen stimmt, hab mich vertan..
Ja, ich möchte es wirklich überall setzen denn die devices die ins logDB sollen die haben ein DbLogInclude....
Ich hoffe ich habe das so richtig verstanden...
Hallo misux
Zitat von: misux am 03 Januar 2022, 19:24:46
Ja, ich möchte es wirklich überall setzen denn die devices die ins logDB sollen die haben ein DbLogInclude....
Ich hoffe ich habe das so richtig verstanden...
Dann darfst du aber auch nicht vergessen
attr myDbLog DbLogSelectionMode Exclude/Include
zu setzen.
Gruss
Sailor
Damit auch alle, zukünftig neu angelegte Devices gleich das Attribut bekommen, kann man sich ein entsprechendes notify anlegen:
defmod nyNewDevDBLogExclude notify global:DEFINED.* attr $EVTPART1 DbLogExclude .*
gb#
Hi Benni
Zitat von: Benni am 03 Januar 2022, 20:26:58
Damit auch alle, zukünftig neu angelegte Devices gleich das Attribut bekommen, kann man sich ein entsprechendes notify anlegen:
defmod nyNewDevDBLogExclude notify global:DEFINED.* attr $EVTPART1 DbLogExclude .*
gb#
Den kannte ich auch noch nicht - :o Aber jetzt wo du es sagst...
Gruß
Sailor
Und ich habe den Sinn / die Notwendigkeit dieses Attributes immer noch nicht verstanden... 8)
Zitat von: betateilchen am 04 Januar 2022, 09:36:39
Und ich habe den Sinn / die Notwendigkeit dieses Attributes immer noch nicht verstanden... 8)
Hallo,
das Attribut "DbLogExclude .*" kommt aus der DbLog Installation und bewirkt, dass erst mal keine readings ins DbLog geschrieben werden.
Mit "DbLogInclude " entscheidet man dann was in die Datenbank rein soll.
VG
Christian
Zitat von: Benni am 03 Januar 2022, 20:26:58
Damit auch alle, zukünftig neu angelegte Devices gleich das Attribut bekommen, kann man sich ein entsprechendes notify anlegen:
defmod nyNewDevDBLogExclude notify global:DEFINED.* attr $EVTPART1 DbLogExclude .*
Ich mach das ein bischen anderst:
defmod AutoDbLogEx notify global:INITIALIZED setdefaultattr DbLogExclude .*
Quelle:
https://forum.fhem.de/index.php/topic,96085.msg890693.html#msg890693