(ERLEDIGT)ein Attribut auf alle devices auf einmal setzen...?

Begonnen von misux, 03 Januar 2022, 18:47:05

Vorheriges Thema - Nächstes Thema

misux

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!

MadMax-FHEM

#1
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

misux

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...


Sailor

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
******************************
Man wird immer besser...

Benni

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#

Sailor

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
******************************
Man wird immer besser...

betateilchen

Und ich habe den Sinn / die Notwendigkeit dieses Attributes immer noch nicht verstanden...  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ch.eick

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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Frank_Huber

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