FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: misux am 03 Januar 2022, 18:47:05

Titel: (ERLEDIGT)ein Attribut auf alle devices auf einmal setzen...?
Beitrag von: misux am 03 Januar 2022, 18:47:05
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!
Titel: Antw:ein Attribut auf alle devices auf einmal setzen...?
Beitrag von: MadMax-FHEM am 03 Januar 2022, 18:52:22
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
Titel: Antw:ein Attribut auf alle devices auf einmal setzen...?
Beitrag von: misux am 03 Januar 2022, 19:24:46
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...

Titel: Antw:ein Attribut auf alle devices auf einmal setzen...?
Beitrag von: Sailor am 03 Januar 2022, 20:12:16
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
Titel: Antw:ein Attribut auf alle devices auf einmal setzen...?
Beitrag 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#
Titel: Antw:ein Attribut auf alle devices auf einmal setzen...?
Beitrag von: Sailor am 04 Januar 2022, 09:05:00
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
Titel: Antw:ein Attribut auf alle devices auf einmal setzen...?
Beitrag von: betateilchen am 04 Januar 2022, 09:36:39
Und ich habe den Sinn / die Notwendigkeit dieses Attributes immer noch nicht verstanden...  8)
Titel: Antw:ein Attribut auf alle devices auf einmal setzen...?
Beitrag von: ch.eick am 10 Januar 2022, 12:42:17
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
Titel: Antw:ein Attribut auf alle devices auf einmal setzen...?
Beitrag von: Frank_Huber am 10 Januar 2022, 13:10:29
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