Attribut für alle devices mit bestimmtem Attribut setzen

Begonnen von hauwech, 14 September 2023, 16:11:15

Vorheriges Thema - Nächstes Thema

hauwech

Ich stehe gerade auf dem Schlauch, ich kann die korrekte Syntax nicht finden.
Ich möchte mein DBLog von der generellen DBLog-def Konfiguration auf die Konfiguration für einzelne Devices umstellen. Bevor ich DbLogSelectionMode auf "Include" umstelle, möchte ich für alle betroffenen Devices das Attribut "DbLogInclude" entsprechend anlegen. Nun kann ich zwar mit list .* temperature alle devices, die das Reading "temperature" haben auflisten. Die Syntax funktioniert aber mit "attr" anstatt "list": attr .* temperature DbLogInclude temperature so nicht. Ich habe nun mit list .*:FILTER=temperature versucht zu filtern, um den Filter dann mit "attr" anwenden zu können. Da kommt aber nur "No device named .*:FILTER=temperature found". Ein list .*:FILTER=temperature=.* ,mit dem ich gehofft habe, alle Temperaturwerte zu finden, bringt ALLE devices, auch die, die kein temperature Reading haben.
Könnte mir bitte jemand auf die Sprünge helfen, wie ich z.B. alle Devices, die ein Attribut "temperature" haben, ein Attribut "DbLogInclude temperature" anzulegen?
Stufe 2:
Gibt es eine Möglichkeit für humidity-devices, die schon ein "DbLogInclude temperature" haben, ein DbLogInclude "temperature,humidity" anzuhängen?

Danke und Gruß
Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

betateilchen

Zitat von: hauwech am 14 September 2023, 16:11:15Stufe 2:
Gibt es eine Möglichkeit für humidity-devices, die schon ein "DbLogInclude temperature" haben, ein DbLogInclude "temperature,humidity" anzuhängen?

Gerade getestet:

attr nrarchive=3 nrarchive 5
Setzt bei allen devices, in denen das attribut nrarchive auf 3 steht, den Wert auf 5.

Als Altenative bietet der Befehl "attr" den Parameter -a an, mit dem Attributwerte an bestehende Attributewerte hinzugefügt werden können.

Abgesehen davon halte ich das Attribut DbLogInclude genau wie Fußpilz für völlig überflüssig. Man sollte sich lieber ein paar Gedanken um eine sinnvolle Definition des DbLog devices (genauer: dessen regep fürs Loggen) machen, dann braucht man solche Krücken überhaupt nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hauwech

Zitat von: betateilchen am 14 September 2023, 16:53:41
Zitat von: hauwech am 14 September 2023, 16:11:15Stufe 2:
Gibt es eine Möglichkeit für humidity-devices, die schon ein "DbLogInclude temperature" haben, ein DbLogInclude "temperature,humidity" anzuhängen?

Gerade getestet:

attr nrarchive=3 nrarchive 5
Setzt bei allen devices, in denen das attribut nrarchive auf 3 steht, den Wert auf 5.

Als Altenative bietet der Befehl "attr" den Parameter -a an, mit dem Attributwerte an bestehende Attributewerte hinzugefügt werden können.

Abgesehen davon halte ich das Attribut DbLogInclude genau wie Fußpilz für völlig überflüssig. Man sollte sich lieber ein paar Gedanken um eine sinnvolle Definition des DbLog devices (genauer: dessen regep fürs Loggen) machen, dann braucht man solche Krücken überhaupt nicht.


Danke, der Parameter -a dürfte das sein, was ich gesucht habe. Ich will ja den Wert nicht neu setzen, sondern ggfls. etwas hinzufügen.

Ich habe jetzt einige Jahre mit der Definition des Logfilters im dblog Device gearbeitet. Ich habe aber indessen allerhand dummies, die ich loggen möchte. Standardmäßig steht der interessante Wert in "state". Wenn ich jetzt "state" in die generelle Definition einfüge, fange ich mir jede Menge Datenschmutz von allen devices ein. Deswegen habe ich für diese dummies userAttribute angelegt, die einen Namen haben, den ich per dblog-def loggen kann. So richtig elegant scheint mir das aber auch nicht, weswegen ich die Separation der Logeinträge per device für praktischer halte, weil man gezielter vorgehen kann.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

betateilchen

Zitat von: hauwech am 14 September 2023, 17:30:56weswegen ich die Separation der Logeinträge per device für praktischer halte, weil man gezielter vorgehen kann.

Man muss halt dran glauben...

Weiterhin viel Spaß mit FHEM.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hauwech

Bitte nicht mißverstehen: Gibt es einen technischen Grund für Deine ablehnende Haltung? Ich bin gerne dabei, wenn es darum geht, etwas dazu zu lernen.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hauwech

Ich habe nochmal hin- und herüberlegt. Die Umstellung auf device-gesteuertes Logging wäre bei meinen vielen Devices sehr aufwendig.
Letztendlich gebe ich Dir recht: Die Konfiguration an EINER zentralen Stelle ist deutlich komfortabler, übersichtlicher und besser zu warten. Für die dummies, die die Umstellungsgedanken ausgelöst haben, werde ich mir für die Zukunft vielleicht lieber ein template einrichten.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS